Commit a10a5d6f authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: refactor adl_pci7230 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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Mori Hess <fmhess@users.sourceforge.net>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent db0eaeed
...@@ -43,13 +43,6 @@ Configuration Options: ...@@ -43,13 +43,6 @@ Configuration Options:
#define PCI_DEVICE_ID_PCI7230 0x7230 #define PCI_DEVICE_ID_PCI7230 0x7230
static DEFINE_PCI_DEVICE_TABLE(adl_pci7230_pci_table) = {
{ PCI_DEVICE(PCI_VENDOR_ID_ADLINK, PCI_DEVICE_ID_PCI7230) },
{0}
};
MODULE_DEVICE_TABLE(pci, adl_pci7230_pci_table);
struct adl_pci7230_private { struct adl_pci7230_private {
int data; int data;
struct pci_dev *pci_dev; struct pci_dev *pci_dev;
...@@ -57,27 +50,36 @@ struct adl_pci7230_private { ...@@ -57,27 +50,36 @@ struct adl_pci7230_private {
#define devpriv ((struct adl_pci7230_private *)dev->private) #define devpriv ((struct adl_pci7230_private *)dev->private)
static int adl_pci7230_attach(struct comedi_device *dev, static int adl_pci7230_do_insn_bits(struct comedi_device *dev,
struct comedi_devconfig *it); struct comedi_subdevice *s,
static int adl_pci7230_detach(struct comedi_device *dev); struct comedi_insn *insn,
static struct comedi_driver driver_adl_pci7230 = { unsigned int *data)
.driver_name = "adl_pci7230", {
.module = THIS_MODULE, if (insn->n != 2)
.attach = adl_pci7230_attach, return -EINVAL;
.detach = adl_pci7230_detach,
};
/* Digital IO */ if (data[0]) {
s->state &= ~data[0];
s->state |= (data[0] & data[1]);
outl((s->state << 16) & 0xffffffff, dev->iobase + PCI7230_DO);
}
return 2;
}
static int adl_pci7230_di_insn_bits(struct comedi_device *dev, static int adl_pci7230_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_subdevice *s,
struct comedi_insn *insn, struct comedi_insn *insn,
unsigned int *data); unsigned int *data)
{
if (insn->n != 2)
return -EINVAL;
static int adl_pci7230_do_insn_bits(struct comedi_device *dev, data[1] = inl(dev->iobase + PCI7230_DI) & 0xffffffff;
struct comedi_subdevice *s,
struct comedi_insn *insn, return 2;
unsigned int *data); }
static int adl_pci7230_attach(struct comedi_device *dev, static int adl_pci7230_attach(struct comedi_device *dev,
struct comedi_devconfig *it) struct comedi_devconfig *it)
...@@ -161,36 +163,12 @@ static int adl_pci7230_detach(struct comedi_device *dev) ...@@ -161,36 +163,12 @@ static int adl_pci7230_detach(struct comedi_device *dev)
return 0; return 0;
} }
static int adl_pci7230_do_insn_bits(struct comedi_device *dev, static struct comedi_driver driver_adl_pci7230 = {
struct comedi_subdevice *s, .driver_name = "adl_pci7230",
struct comedi_insn *insn, .module = THIS_MODULE,
unsigned int *data) .attach = adl_pci7230_attach,
{ .detach = adl_pci7230_detach,
if (insn->n != 2) };
return -EINVAL;
if (data[0]) {
s->state &= ~data[0];
s->state |= (data[0] & data[1]);
outl((s->state << 16) & 0xffffffff, dev->iobase + PCI7230_DO);
}
return 2;
}
static int adl_pci7230_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{
if (insn->n != 2)
return -EINVAL;
data[1] = inl(dev->iobase + PCI7230_DI) & 0xffffffff;
return 2;
}
static int __devinit driver_adl_pci7230_pci_probe(struct pci_dev *dev, static int __devinit driver_adl_pci7230_pci_probe(struct pci_dev *dev,
const struct pci_device_id const struct pci_device_id
...@@ -204,10 +182,16 @@ static void __devexit driver_adl_pci7230_pci_remove(struct pci_dev *dev) ...@@ -204,10 +182,16 @@ static void __devexit driver_adl_pci7230_pci_remove(struct pci_dev *dev)
comedi_pci_auto_unconfig(dev); comedi_pci_auto_unconfig(dev);
} }
static DEFINE_PCI_DEVICE_TABLE(adl_pci7230_pci_table) = {
{ PCI_DEVICE(PCI_VENDOR_ID_ADLINK, PCI_DEVICE_ID_PCI7230) },
{0}
};
MODULE_DEVICE_TABLE(pci, adl_pci7230_pci_table);
static struct pci_driver driver_adl_pci7230_pci_driver = { static struct pci_driver driver_adl_pci7230_pci_driver = {
.id_table = adl_pci7230_pci_table, .id_table = adl_pci7230_pci_table,
.probe = &driver_adl_pci7230_pci_probe, .probe = driver_adl_pci7230_pci_probe,
.remove = __devexit_p(&driver_adl_pci7230_pci_remove) .remove = __devexit_p(driver_adl_pci7230_pci_remove)
}; };
static int __init driver_adl_pci7230_init_module(void) static int __init driver_adl_pci7230_init_module(void)
...@@ -222,14 +206,13 @@ static int __init driver_adl_pci7230_init_module(void) ...@@ -222,14 +206,13 @@ static int __init driver_adl_pci7230_init_module(void)
(char *)driver_adl_pci7230.driver_name; (char *)driver_adl_pci7230.driver_name;
return pci_register_driver(&driver_adl_pci7230_pci_driver); return pci_register_driver(&driver_adl_pci7230_pci_driver);
} }
module_init(driver_adl_pci7230_init_module);
static void __exit driver_adl_pci7230_cleanup_module(void) static void __exit driver_adl_pci7230_cleanup_module(void)
{ {
pci_unregister_driver(&driver_adl_pci7230_pci_driver); pci_unregister_driver(&driver_adl_pci7230_pci_driver);
comedi_driver_unregister(&driver_adl_pci7230); comedi_driver_unregister(&driver_adl_pci7230);
} }
module_init(driver_adl_pci7230_init_module);
module_exit(driver_adl_pci7230_cleanup_module); module_exit(driver_adl_pci7230_cleanup_module);
MODULE_AUTHOR("Comedi http://www.comedi.org"); MODULE_AUTHOR("Comedi http://www.comedi.org");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment