Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 304738
b: refs/heads/master
c: ce41d7d
h: refs/heads/master
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed May 16, 2012
1 parent 884f15b commit 3b5b59f
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 105 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ace44dc8ac4db0e7a23abd45513e9e78f5a868bd
refs/heads/master: ce41d7d666da4a3d12d0ad6d5b29146b25670037
157 changes: 53 additions & 104 deletions trunk/drivers/staging/comedi/drivers/contec_pci_dio.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,6 @@ static const struct contec_board contec_boards[] = {
};

#define PCI_DEVICE_ID_PIO1616L 0x8172
static DEFINE_PCI_DEVICE_TABLE(contec_pci_table) = {
{ PCI_DEVICE(PCI_VENDOR_ID_CONTEC, PCI_DEVICE_ID_PIO1616L),
.driver_data = PIO1616L },
{0}
};

MODULE_DEVICE_TABLE(pci, contec_pci_table);

#define thisboard ((const struct contec_board *)dev->board_ptr)

Expand All @@ -75,30 +68,42 @@ struct contec_private {

#define devpriv ((struct contec_private *)dev->private)

static int contec_attach(struct comedi_device *dev,
struct comedi_devconfig *it);
static int contec_detach(struct comedi_device *dev);
static struct comedi_driver driver_contec = {
.driver_name = "contec_pci_dio",
.module = THIS_MODULE,
.attach = contec_attach,
.detach = contec_detach,
};
static int contec_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{

dev_dbg(dev->hw_dev, "contec_do_insn_bits called\n");
dev_dbg(dev->hw_dev, "data: %d %d\n", data[0], data[1]);

if (insn->n != 2)
return -EINVAL;

if (data[0]) {
s->state &= ~data[0];
s->state |= data[0] & data[1];
dev_dbg(dev->hw_dev, "out: %d on %lx\n", s->state,
dev->iobase + thisboard->out_offs);
outw(s->state, dev->iobase + thisboard->out_offs);
}
return 2;
}

/* Classic digital IO */
static int contec_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data);
static int contec_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data);
struct comedi_insn *insn, unsigned int *data)
{

dev_dbg(dev->hw_dev, "contec_di_insn_bits called\n");
dev_dbg(dev->hw_dev, "data: %d %d\n", data[0], data[1]);

#if 0
static int contec_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_cmd *cmd);
if (insn->n != 2)
return -EINVAL;

static int contec_ns_to_timer(unsigned int *ns, int round);
#endif
data[1] = inw(dev->iobase + thisboard->in_offs);

return 2;
}

static int contec_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{
Expand Down Expand Up @@ -177,94 +182,38 @@ static int contec_detach(struct comedi_device *dev)
return 0;
}

#if 0
static int contec_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{
printk("contec_cmdtest called\n");
return 0;
}

static int contec_ns_to_timer(unsigned int *ns, int round)
{
return *ns;
}
#endif

static int contec_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{

dev_dbg(dev->hw_dev, "contec_do_insn_bits called\n");
dev_dbg(dev->hw_dev, "data: %d %d\n", data[0], data[1]);

if (insn->n != 2)
return -EINVAL;

if (data[0]) {
s->state &= ~data[0];
s->state |= data[0] & data[1];
dev_dbg(dev->hw_dev, "out: %d on %lx\n", s->state,
dev->iobase + thisboard->out_offs);
outw(s->state, dev->iobase + thisboard->out_offs);
}
return 2;
}

static int contec_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{

dev_dbg(dev->hw_dev, "contec_di_insn_bits called\n");
dev_dbg(dev->hw_dev, "data: %d %d\n", data[0], data[1]);

if (insn->n != 2)
return -EINVAL;

data[1] = inw(dev->iobase + thisboard->in_offs);

return 2;
}
static struct comedi_driver contec_pci_dio_driver = {
.driver_name = "contec_pci_dio",
.module = THIS_MODULE,
.attach = contec_attach,
.detach = contec_detach,
};

static int __devinit driver_contec_pci_probe(struct pci_dev *dev,
const struct pci_device_id *ent)
static int __devinit contec_pci_dio_pci_probe(struct pci_dev *dev,
const struct pci_device_id *ent)
{
return comedi_pci_auto_config(dev, &driver_contec);
return comedi_pci_auto_config(dev, &contec_pci_dio_driver);
}

static void __devexit driver_contec_pci_remove(struct pci_dev *dev)
static void __devexit contec_pci_dio_pci_remove(struct pci_dev *dev)
{
comedi_pci_auto_unconfig(dev);
}

static struct pci_driver driver_contec_pci_driver = {
.id_table = contec_pci_table,
.probe = &driver_contec_pci_probe,
.remove = __devexit_p(&driver_contec_pci_remove)
static DEFINE_PCI_DEVICE_TABLE(contec_pci_dio_pci_table) = {
{ PCI_DEVICE(PCI_VENDOR_ID_CONTEC, PCI_DEVICE_ID_PIO1616L),
.driver_data = PIO1616L },
{ 0 }
};
MODULE_DEVICE_TABLE(pci, contec_pci_dio_pci_table);

static int __init driver_contec_init_module(void)
{
int retval;

retval = comedi_driver_register(&driver_contec);
if (retval < 0)
return retval;

driver_contec_pci_driver.name = (char *)driver_contec.driver_name;
return pci_register_driver(&driver_contec_pci_driver);
}

static void __exit driver_contec_cleanup_module(void)
{
pci_unregister_driver(&driver_contec_pci_driver);
comedi_driver_unregister(&driver_contec);
}

module_init(driver_contec_init_module);
module_exit(driver_contec_cleanup_module);
static struct pci_driver contec_pci_dio_pci_driver = {
.name = "contec_pci_dio",
.id_table = contec_pci_dio_pci_table,
.probe = contec_pci_dio_pci_probe,
.remove = __devexit_p(contec_pci_dio_pci_remove),
};
module_comedi_pci_driver(contec_pci_dio_driver, contec_pci_dio_pci_driver);

MODULE_AUTHOR("Comedi http://www.comedi.org");
MODULE_DESCRIPTION("Comedi low-level driver");
Expand Down

0 comments on commit 3b5b59f

Please sign in to comment.