diff options
| author | Russell King <rmk@flint.arm.linux.org.uk> | 2003-05-28 18:03:03 +0100 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2003-05-28 18:03:03 +0100 |
| commit | cca66bf22dba028eaf62494237d19f1aa174ce58 (patch) | |
| tree | 29ea0b73c012df68331482cd5cdf43cc34ea5823 | |
| parent | 015498d534572f8a9c3bf5f1dfc02bd02bfb2c9d (diff) | |
| parent | a22fcf63f4fe979546c646661ec0d39b005b5100 (diff) | |
Merge flint.arm.linux.org.uk:/usr/src/linux-bk-2.5/linux-2.5
into flint.arm.linux.org.uk:/usr/src/linux-bk-2.5/linux-2.5-pcmcia
| -rw-r--r-- | drivers/char/pcmcia/synclink_cs.c | 25 | ||||
| -rw-r--r-- | drivers/ide/legacy/ide-cs.c | 27 | ||||
| -rw-r--r-- | drivers/isdn/hardware/avm/avm_cs.c | 33 | ||||
| -rw-r--r-- | drivers/isdn/hisax/avma1_cs.c | 34 | ||||
| -rw-r--r-- | drivers/isdn/hisax/elsa_cs.c | 29 | ||||
| -rw-r--r-- | drivers/isdn/hisax/sedlbauer_cs.c | 38 | ||||
| -rw-r--r-- | drivers/mtd/maps/pcmciamtd.c | 24 | ||||
| -rw-r--r-- | drivers/net/pcmcia/pcnet_cs.c | 11 | ||||
| -rw-r--r-- | drivers/parport/parport_cs.c | 29 | ||||
| -rw-r--r-- | drivers/pcmcia/ds.c | 49 | ||||
| -rw-r--r-- | drivers/pcmcia/pci_socket.c | 2 | ||||
| -rw-r--r-- | include/pcmcia/ds.h | 6 |
12 files changed, 124 insertions, 183 deletions
diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c index 571f6973a615..72515034646c 100644 --- a/drivers/char/pcmcia/synclink_cs.c +++ b/drivers/char/pcmcia/synclink_cs.c @@ -3131,9 +3131,18 @@ void mgslpc_remove_device(MGSLPC_INFO *remove_info) } } +static struct pcmcia_driver mgslpc_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "synclink_cs", + }, + .attach = mgslpc_attach, + .detach = mgslpc_detach, +}; + static int __init synclink_cs_init(void) { - servinfo_t serv; + int error; if (break_on_load) { mgslpc_get_text_ptr(); @@ -3142,13 +3151,9 @@ static int __init synclink_cs_init(void) printk("%s %s\n", driver_name, driver_version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "synclink_cs: Card Services release " - "does not match!\n"); - return -1; - } - register_pccard_driver(&dev_info, &mgslpc_attach, &mgslpc_detach); + error = pcmcia_register_driver(&mgslpc_driver); + if (error) + return error; /* Initialize the tty_driver structure */ @@ -3217,7 +3222,9 @@ static void __exit synclink_cs_exit(void) printk("%s(%d) failed to unregister tty driver err=%d\n", __FILE__,__LINE__,rc); - unregister_pccard_driver(&dev_info); + pcmcia_unregister_driver(&mgslpc_driver); + + /* XXX: this really needs to move into generic code.. */ while (dev_list != NULL) { if (dev_list->state & DEV_CONFIG) mgslpc_release((u_long)dev_list); diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c index 64baff3aee87..edc92d6953b1 100644 --- a/drivers/ide/legacy/ide-cs.c +++ b/drivers/ide/legacy/ide-cs.c @@ -470,28 +470,25 @@ int ide_event(event_t event, int priority, return 0; } /* ide_event */ -/*====================================================================*/ +static struct pcmcia_driver ide_cs_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "ide_cs", + }, + .attach = ide_attach, + .detach = ide_detach, +}; static int __init init_ide_cs(void) { - servinfo_t serv; - DEBUG(0, "%s\n", version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "ide-cs: Card Services release " - "does not match!\n"); - return -EINVAL; - } - register_pccard_driver(&dev_info, &ide_attach, &ide_detach); - return 0; + return pcmcia_register_driver(&ide_cs_driver); } static void __exit exit_ide_cs(void) { - DEBUG(0, "ide-cs: unloading\n"); - unregister_pccard_driver(&dev_info); - while (dev_list != NULL) - ide_detach(dev_list); + pcmcia_unregister_driver(&ide_cs_driver); + while (dev_list != NULL) + ide_detach(dev_list); } module_init(init_ide_cs); diff --git a/drivers/isdn/hardware/avm/avm_cs.c b/drivers/isdn/hardware/avm/avm_cs.c index d7e10c4653f0..21fa61be4d94 100644 --- a/drivers/isdn/hardware/avm/avm_cs.c +++ b/drivers/isdn/hardware/avm/avm_cs.c @@ -510,29 +510,30 @@ static int avmcs_event(event_t event, int priority, return 0; } /* avmcs_event */ -/*====================================================================*/ +static struct pcmcia_driver avmcs_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "avmcs_cs", + }, + .attach = avmcs_attach, + .detach = avmcs_detach, +}; static int __init avmcs_init(void) { - servinfo_t serv; - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "avm_cs: Card Services release " - "does not match!\n"); - return -1; - } - register_pccard_driver(&dev_info, &avmcs_attach, &avmcs_detach); - return 0; + return pcmcia_register_driver(&avmcs_driver); } static void __exit avmcs_exit(void) { - unregister_pccard_driver(&dev_info); - while (dev_list != NULL) { - if (dev_list->state & DEV_CONFIG) - avmcs_release((u_long)dev_list); - avmcs_detach(dev_list); - } + pcmcia_unregister_driver(&avmcs_driver); + + /* XXX: this really needs to move into generic code.. */ + while (dev_list != NULL) { + if (dev_list->state & DEV_CONFIG) + avmcs_release((u_long)dev_list); + avmcs_detach(dev_list); + } } module_init(avmcs_init); diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c index 8a69359a9aaa..dc983c107b83 100644 --- a/drivers/isdn/hisax/avma1_cs.c +++ b/drivers/isdn/hisax/avma1_cs.c @@ -515,30 +515,30 @@ static int avma1cs_event(event_t event, int priority, return 0; } /* avma1cs_event */ -/*====================================================================*/ +static struct pcmcia_driver avma1cs_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "avma1_cs", + }, + .attach = avma1cs_attach, + .detach = avma1cs_detach, +}; static int __init init_avma1_cs(void) { - servinfo_t serv; - DEBUG(0, "%s\n", version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "avma1_cs: Card Services release " - "does not match!\n"); - return -1; - } - register_pccard_driver(&dev_info, &avma1cs_attach, &avma1cs_detach); - return 0; + return pcmcia_register_driver(&avma1cs_driver); } static void __exit exit_avma1_cs(void) { - DEBUG(0, "avma1_cs: unloading\n"); - unregister_pccard_driver(&dev_info); - while (dev_list != NULL) - if (dev_list->state & DEV_CONFIG) - avma1cs_release((u_long)dev_list); - avma1cs_detach(dev_list); + pcmcia_unregister_driver(&avma1cs_driver); + + /* XXX: this really needs to move into generic code.. */ + while (dev_list != NULL) { + if (dev_list->state & DEV_CONFIG) + avma1cs_release((u_long)dev_list); + avma1cs_detach(dev_list); + } } module_init(init_avma1_cs); diff --git a/drivers/isdn/hisax/elsa_cs.c b/drivers/isdn/hisax/elsa_cs.c index 2db8723e1677..8cd7c8e8cd9b 100644 --- a/drivers/isdn/hisax/elsa_cs.c +++ b/drivers/isdn/hisax/elsa_cs.c @@ -531,28 +531,27 @@ static int elsa_cs_event(event_t event, int priority, return 0; } /* elsa_cs_event */ -/*====================================================================*/ +static struct pcmcia_driver elsa_cs_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "elsa_cs", + }, + .attach = elsa_cs_attach, + .detach = elsa_cs_detach, +}; static int __init init_elsa_cs(void) { - servinfo_t serv; - DEBUG(0, "%s\n", version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "elsa_cs: Card Services release " - "does not match!\n"); - return -1; - } - register_pccard_driver(&dev_info, &elsa_cs_attach, &elsa_cs_detach); - return 0; + return pcmcia_register_driver(&elsa_cs_driver); } static void __exit exit_elsa_cs(void) { - DEBUG(0, "elsa_cs: unloading\n"); - unregister_pccard_driver(&dev_info); - while (dev_list != NULL) - elsa_cs_detach(dev_list); + pcmcia_unregister_driver(&elsa_cs_driver); + + /* XXX: this really needs to move into generic code.. */ + while (dev_list != NULL) + elsa_cs_detach(dev_list); } module_init(init_elsa_cs); diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c index 5f3be96e56d2..db1ce0dcee30 100644 --- a/drivers/isdn/hisax/sedlbauer_cs.c +++ b/drivers/isdn/hisax/sedlbauer_cs.c @@ -633,34 +633,32 @@ static int sedlbauer_event(event_t event, int priority, return 0; } /* sedlbauer_event */ -/*====================================================================*/ +static struct pcmcia_driver sedlbauer_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "sedlbauer_cs", + }, + .attach = sedlbauer_attach, + .detach = sedlbauer_detach, +}; static int __init init_sedlbauer_cs(void) { - servinfo_t serv; - DEBUG(0, "%s\n", version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "sedlbauer_cs: Card Services release " - "does not match!\n"); - return -1; - } - register_pccard_driver(&dev_info, &sedlbauer_attach, &sedlbauer_detach); - return 0; + return pcmcia_register_driver(&sedlbauer_driver); } static void __exit exit_sedlbauer_cs(void) { - DEBUG(0, "sedlbauer_cs: unloading\n"); - unregister_pccard_driver(&dev_info); - while (dev_list != NULL) { - del_timer(&dev_list->release); - if (dev_list->state & DEV_CONFIG) - sedlbauer_release((u_long)dev_list); - sedlbauer_detach(dev_list); - } + pcmcia_unregister_driver(&sedlbauer_driver); + + /* XXX: this really needs to move into generic code.. */ + while (dev_list != NULL) { + del_timer(&dev_list->release); + if (dev_list->state & DEV_CONFIG) + sedlbauer_release((u_long)dev_list); + sedlbauer_detach(dev_list); + } } module_init(init_sedlbauer_cs); module_exit(exit_sedlbauer_cs); - diff --git a/drivers/mtd/maps/pcmciamtd.c b/drivers/mtd/maps/pcmciamtd.c index e13395177dc9..d6e04f1b4f4f 100644 --- a/drivers/mtd/maps/pcmciamtd.c +++ b/drivers/mtd/maps/pcmciamtd.c @@ -836,17 +836,18 @@ static dev_link_t *pcmciamtd_attach(void) return link; } +static struct pcmcia_driver pcmciamtd_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "pcmciamtd", + }, + .attach = pcmciamtd_attach, + .detach = pcmciamtd_detach, +}; static int __init init_pcmciamtd(void) { - servinfo_t serv; - info(DRIVER_DESC " " DRIVER_VERSION); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - err("Card Services release does not match!"); - return -1; - } if(buswidth && buswidth != 1 && buswidth != 2) { info("bad buswidth (%d), using default", buswidth); @@ -860,8 +861,8 @@ static int __init init_pcmciamtd(void) info("bad mem_type (%d), using default", mem_type); mem_type = 0; } - register_pccard_driver(&dev_info, &pcmciamtd_attach, &pcmciamtd_detach); - return 0; + + return pcmcia_register_driver(&pcmciamtd_driver); } @@ -870,7 +871,10 @@ static void __exit exit_pcmciamtd(void) struct list_head *temp1, *temp2; DEBUG(1, DRIVER_DESC " unloading"); - unregister_pccard_driver(&dev_info); + + pcmcia_unregister_driver(&pcmciamtd_driver); + + /* XXX: this really needs to move into generic code.. */ list_for_each_safe(temp1, temp2, &dev_list) { dev_link_t *link = &list_entry(temp1, struct pcmciamtd_dev, list)->link; if (link && (link->state & DEV_CONFIG)) { diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c index 41063863ad80..734e6e291fea 100644 --- a/drivers/net/pcmcia/pcnet_cs.c +++ b/drivers/net/pcmcia/pcnet_cs.c @@ -1620,16 +1620,7 @@ static struct pcmcia_driver pcnet_driver = { static int __init init_pcnet_cs(void) { - servinfo_t serv; - DEBUG(0, "%s\n", version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "pcnet_cs: Card Services release " - "does not match!\n"); - return -EINVAL; - } - pcmcia_register_driver(&pcnet_driver); - return 0; + return pcmcia_register_driver(&pcnet_driver); } static void __exit exit_pcnet_cs(void) diff --git a/drivers/parport/parport_cs.c b/drivers/parport/parport_cs.c index 28f0100be81e..39af957dd5f2 100644 --- a/drivers/parport/parport_cs.c +++ b/drivers/parport/parport_cs.c @@ -390,28 +390,27 @@ int parport_event(event_t event, int priority, return 0; } /* parport_event */ -/*====================================================================*/ +static struct pcmcia_driver parport_cs_driver = { + .owner = THIS_MODULE, + .drv = { + .name = "parport_cs", + }, + .attach = parport_attach, + .detach = parport_detach, +}; static int __init init_parport_cs(void) { - servinfo_t serv; - DEBUG(0, "%s\n", version); - CardServices(GetCardServicesInfo, &serv); - if (serv.Revision != CS_RELEASE_CODE) { - printk(KERN_NOTICE "parport_cs: Card Services release " - "does not match!\n"); - return -EINVAL; - } - register_pccard_driver(&dev_info, &parport_attach, &parport_detach); - return 0; + return pcmcia_register_driver(&parport_cs_driver); } static void __exit exit_parport_cs(void) { - DEBUG(0, "parport_cs: unloading\n"); - unregister_pccard_driver(&dev_info); - while (dev_list != NULL) - parport_detach(dev_list); + pcmcia_unregister_driver(&parport_cs_driver); + + /* XXX: this really needs to move into generic code.. */ + while (dev_list != NULL) + parport_detach(dev_list); } module_init(init_parport_cs); diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index ae09bbbfe267..8f4e8c2e8476 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c @@ -182,50 +182,6 @@ void pcmcia_unregister_driver(struct pcmcia_driver *driver) } EXPORT_SYMBOL(pcmcia_unregister_driver); - -int register_pccard_driver(dev_info_t *dev_info, - dev_link_t *(*attach)(void), - void (*detach)(dev_link_t *)) -{ - struct pcmcia_driver *driver; - - DEBUG(0, "ds: register_pccard_driver('%s')\n", (char *)dev_info); - driver = get_pcmcia_driver(dev_info); - if (driver) - return -EBUSY; - - driver = kmalloc(sizeof(struct pcmcia_driver), GFP_KERNEL); - if (!driver) return -ENOMEM; - memset(driver, 0, sizeof(struct pcmcia_driver)); - driver->drv.name = (char *)dev_info; - pcmcia_register_driver(driver); - - driver->attach = attach; - driver->detach = detach; - - return 0; -} /* register_pccard_driver */ - -/*====================================================================*/ - -int unregister_pccard_driver(dev_info_t *dev_info) -{ - struct pcmcia_driver *driver; - - DEBUG(0, "ds: unregister_pccard_driver('%s')\n", - (char *)dev_info); - - driver = get_pcmcia_driver(dev_info); - if (!driver) - return -ENODEV; - - pcmcia_unregister_driver(driver); - kfree(driver); - return 0; -} /* unregister_pccard_driver */ - -/*====================================================================*/ - #ifdef CONFIG_PROC_FS static int proc_read_drivers_callback(struct device_driver *driver, void *d) { @@ -876,11 +832,6 @@ static struct file_operations ds_fops = { .poll = ds_poll, }; -EXPORT_SYMBOL(register_pccard_driver); -EXPORT_SYMBOL(unregister_pccard_driver); - -/*====================================================================*/ - static int __devinit pcmcia_bus_add_socket(struct device *dev, unsigned int socket_nr) { client_reg_t client_reg; diff --git a/drivers/pcmcia/pci_socket.c b/drivers/pcmcia/pci_socket.c index e99243392642..915a6af9faca 100644 --- a/drivers/pcmcia/pci_socket.c +++ b/drivers/pcmcia/pci_socket.c @@ -196,9 +196,9 @@ static void __devexit cardbus_remove (struct pci_dev *dev) pci_socket_t *socket = pci_get_drvdata(dev); /* note: we are already unregistered from the cs core */ + class_device_unregister(&socket->cls_d.class_dev); if (socket->op && socket->op->close) socket->op->close(socket); - class_device_unregister(&socket->cls_d.class_dev); pci_set_drvdata(dev, NULL); } diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index 43732400e3bc..4ecffb778a62 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h @@ -156,12 +156,6 @@ struct pcmcia_driver { int pcmcia_register_driver(struct pcmcia_driver *driver); void pcmcia_unregister_driver(struct pcmcia_driver *driver); -/* legacy driver registration interface. don't use in new code */ -int register_pccard_driver(dev_info_t *dev_info, - dev_link_t *(*attach)(void), - void (*detach)(dev_link_t *)); -int unregister_pccard_driver(dev_info_t *dev_info); - /* error reporting */ void cs_error(client_handle_t handle, int func, int ret); |
