staging: comedi: refactor adl_pci8164 driver to remove forward declarations
PATCH 1/1 staging: comedi: refactor adl_pci8164 driver to remove forward declarations
Move the struct comedi_driver variable and the associated attach/detach routines to remove the need for the forward declarations.
Signed-off-by H Hartley Sweeten <[email protected]>
Cc Ian Abbott <[email protected]>
Cc Mori Hess <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
---
drivers/staging/comedi/drivers/adl_pci8164.c +120 -165
@@ -56,13 +56,6 @@ Configuration Options:#define PCI_DEVICE_ID_PCI8164 0x8164 -static DEFINE_PCI_DEVICE_TABLE (adl_pci8164_pci_table) = { - {PCI_DEVICE (PCI_VENDOR_ID_ADLINK ,PCI_DEVICE_ID_PCI8164 ) }, - {0 } -}; - -MODULE_DEVICE_TABLE (pci, adl_pci8164_pci_table); -struct adl_pci8164_private {int data;struct pci_dev *pci_dev;
@@ -70,159 +63,6 @@ struct adl_pci8164_private {#define devpriv ((struct adl_pci8164_private *)dev->private) -static int adl_pci8164_attach (struct comedi_device *dev, -struct comedi_devconfig *it); -static int adl_pci8164_detach (struct comedi_device *dev); -static struct comedi_driver driver_adl_pci8164 = { - .driver_name ="adl_pci8164" , - .module =THIS_MODULE , - .attach = adl_pci8164_attach, - .detach = adl_pci8164_detach, -}; - -static int adl_pci8164_insn_read_msts (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_read_ssts (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_read_buf0 (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_read_buf1 (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_write_cmd (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_write_otp (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_write_buf0 (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_insn_write_buf1 (struct comedi_device *dev, -struct comedi_subdevice *s, -struct comedi_insn *insn, -unsigned int *data); - -static int adl_pci8164_attach (struct comedi_device *dev, -struct comedi_devconfig *it) -{ -struct pci_dev *pcidev =NULL ; -struct comedi_subdevice *s; -int bus, slot; - -printk (KERN_INFO "comedi: attempt to attach...\n" ); -printk (KERN_INFO "comedi%d: adl_pci8164\n" , dev->minor); - - dev->board_name ="pci8164" ; - bus = it->options[0 ]; - slot = it->options[1 ]; - -if (alloc_private (dev,sizeof (struct adl_pci8164_private )) <0 ) -return -ENOMEM ; - -if (alloc_subdevices (dev,4 ) <0 ) -return -ENOMEM ; - -for_each_pci_dev (pcidev) { -if (pcidev->vendor ==PCI_VENDOR_ID_ADLINK && - pcidev->device ==PCI_DEVICE_ID_PCI8164 ) { -if (bus || slot) { -/* requested particular bus/slot */ -if (pcidev->bus->number != bus - ||PCI_SLOT (pcidev->devfn) != slot) -continue ; - } - devpriv->pci_dev = pcidev; -if (comedi_pci_enable (pcidev,"adl_pci8164" ) <0 ) { -printk (KERN_ERR "comedi%d: Failed to enable " -"PCI device and request regions\n" , dev->minor); -return -EIO ; - } - dev->iobase =pci_resource_start (pcidev,2 ); -printk (KERN_DEBUG "comedi: base addr %4lx\n" , - dev->iobase); - - s = dev->subdevices +0 ; - s->type =COMEDI_SUBD_PROC ; - s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; - s->n_chan =4 ; - s->maxdata =0xffff ; - s->len_chanlist =4 ; -/* s->range_table = &range_axis; */ - s->insn_read = adl_pci8164_insn_read_msts; - s->insn_write = adl_pci8164_insn_write_cmd; - - s = dev->subdevices +1 ; - s->type =COMEDI_SUBD_PROC ; - s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; - s->n_chan =4 ; - s->maxdata =0xffff ; - s->len_chanlist =4 ; -/* s->range_table = &range_axis; */ - s->insn_read = adl_pci8164_insn_read_ssts; - s->insn_write = adl_pci8164_insn_write_otp; - - s = dev->subdevices +2 ; - s->type =COMEDI_SUBD_PROC ; - s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; - s->n_chan =4 ; - s->maxdata =0xffff ; - s->len_chanlist =4 ; -/* s->range_table = &range_axis; */ - s->insn_read = adl_pci8164_insn_read_buf0; - s->insn_write = adl_pci8164_insn_write_buf0; - - s = dev->subdevices +3 ; - s->type =COMEDI_SUBD_PROC ; - s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; - s->n_chan =4 ; - s->maxdata =0xffff ; - s->len_chanlist =4 ; -/* s->range_table = &range_axis; */ - s->insn_read = adl_pci8164_insn_read_buf1; - s->insn_write = adl_pci8164_insn_write_buf1; - -printk (KERN_INFO "comedi: attached\n" ); - -return 1 ; - } - } - -printk (KERN_ERR "comedi%d: no supported board found!" -"(req. bus/slot : %d/%d)\n" , dev->minor, bus, slot); -return -EIO ; -} - -static int adl_pci8164_detach (struct comedi_device *dev) -{ -printk (KERN_INFO "comedi%d: pci8164: remove\n" , dev->minor); - -if (devpriv && devpriv->pci_dev) { -if (dev->iobase) -comedi_pci_disable (devpriv->pci_dev); -pci_dev_put (devpriv->pci_dev); - } - -return 0 ; -} -/* all the read commands are the same except for the addition a constant * const to the data for inw()
@@ -384,6 +224,116 @@ static int adl_pci8164_insn_write_buf1(struct comedi_device *dev,return 2 ; } +static int adl_pci8164_attach (struct comedi_device *dev, +struct comedi_devconfig *it) +{ +struct pci_dev *pcidev =NULL ; +struct comedi_subdevice *s; +int bus, slot; + +printk (KERN_INFO "comedi: attempt to attach...\n" ); +printk (KERN_INFO "comedi%d: adl_pci8164\n" , dev->minor); + + dev->board_name ="pci8164" ; + bus = it->options[0 ]; + slot = it->options[1 ]; + +if (alloc_private (dev,sizeof (struct adl_pci8164_private )) <0 ) +return -ENOMEM ; + +if (alloc_subdevices (dev,4 ) <0 ) +return -ENOMEM ; + +for_each_pci_dev (pcidev) { +if (pcidev->vendor ==PCI_VENDOR_ID_ADLINK && + pcidev->device ==PCI_DEVICE_ID_PCI8164 ) { +if (bus || slot) { +/* requested particular bus/slot */ +if (pcidev->bus->number != bus + ||PCI_SLOT (pcidev->devfn) != slot) +continue ; + } + devpriv->pci_dev = pcidev; +if (comedi_pci_enable (pcidev,"adl_pci8164" ) <0 ) { +printk (KERN_ERR "comedi%d: Failed to enable " +"PCI device and request regions\n" , dev->minor); +return -EIO ; + } + dev->iobase =pci_resource_start (pcidev,2 ); +printk (KERN_DEBUG "comedi: base addr %4lx\n" , + dev->iobase); + + s = dev->subdevices +0 ; + s->type =COMEDI_SUBD_PROC ; + s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; + s->n_chan =4 ; + s->maxdata =0xffff ; + s->len_chanlist =4 ; +/* s->range_table = &range_axis; */ + s->insn_read = adl_pci8164_insn_read_msts; + s->insn_write = adl_pci8164_insn_write_cmd; + + s = dev->subdevices +1 ; + s->type =COMEDI_SUBD_PROC ; + s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; + s->n_chan =4 ; + s->maxdata =0xffff ; + s->len_chanlist =4 ; +/* s->range_table = &range_axis; */ + s->insn_read = adl_pci8164_insn_read_ssts; + s->insn_write = adl_pci8164_insn_write_otp; + + s = dev->subdevices +2 ; + s->type =COMEDI_SUBD_PROC ; + s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; + s->n_chan =4 ; + s->maxdata =0xffff ; + s->len_chanlist =4 ; +/* s->range_table = &range_axis; */ + s->insn_read = adl_pci8164_insn_read_buf0; + s->insn_write = adl_pci8164_insn_write_buf0; + + s = dev->subdevices +3 ; + s->type =COMEDI_SUBD_PROC ; + s->subdev_flags =SDF_READABLE |SDF_WRITABLE ; + s->n_chan =4 ; + s->maxdata =0xffff ; + s->len_chanlist =4 ; +/* s->range_table = &range_axis; */ + s->insn_read = adl_pci8164_insn_read_buf1; + s->insn_write = adl_pci8164_insn_write_buf1; + +printk (KERN_INFO "comedi: attached\n" ); + +return 1 ; + } + } + +printk (KERN_ERR "comedi%d: no supported board found!" +"(req. bus/slot : %d/%d)\n" , dev->minor, bus, slot); +return -EIO ; +} + +static int adl_pci8164_detach (struct comedi_device *dev) +{ +printk (KERN_INFO "comedi%d: pci8164: remove\n" , dev->minor); + +if (devpriv && devpriv->pci_dev) { +if (dev->iobase) +comedi_pci_disable (devpriv->pci_dev); +pci_dev_put (devpriv->pci_dev); + } + +return 0 ; +} + +static struct comedi_driver driver_adl_pci8164 = { + .driver_name ="adl_pci8164" , + .module =THIS_MODULE , + .attach = adl_pci8164_attach, + .detach = adl_pci8164_detach, +}; +static int __devinit driver_adl_pci8164_pci_probe (struct pci_dev *dev,const struct pci_device_id *ent)
@@ -396,10 +346,16 @@ static void __devexit driver_adl_pci8164_pci_remove(struct pci_dev *dev)comedi_pci_auto_unconfig (dev); } +static DEFINE_PCI_DEVICE_TABLE (adl_pci8164_pci_table) = { + {PCI_DEVICE (PCI_VENDOR_ID_ADLINK ,PCI_DEVICE_ID_PCI8164 ) }, + {0 } +}; +MODULE_DEVICE_TABLE (pci, adl_pci8164_pci_table); +static struct pci_driver driver_adl_pci8164_pci_driver = { - .id_table = adl_pci8164_pci_table, - .probe = &driver_adl_pci8164_pci_probe, - .remove =__devexit_p (&driver_adl_pci8164_pci_remove) + .id_table = adl_pci8164_pci_table, + .probe = driver_adl_pci8164_pci_probe, + .remove =__devexit_p (driver_adl_pci8164_pci_remove), };static int __init driver_adl_pci8164_init_module (void )
@@ -414,14 +370,13 @@ static int __init driver_adl_pci8164_init_module(void) (char *)driver_adl_pci8164.driver_name;return pci_register_driver (&driver_adl_pci8164_pci_driver); } +module_init (driver_adl_pci8164_init_module); static void __exit driver_adl_pci8164_cleanup_module(void) {pci_unregister_driver (&driver_adl_pci8164_pci_driver);comedi_driver_unregister (&driver_adl_pci8164); } - -module_init (driver_adl_pci8164_init_module);module_exit (driver_adl_pci8164_cleanup_module);MODULE_AUTHOR ("Comedi http://www.comedi.org" );