pcmcia: bus_type pcmcia_bus_type, pcmcia-drivers
Subsystems (2)
PATCH 1/1 pcmcia: bus_type pcmcia_bus_type, pcmcia-drivers
This patch adds a new bus_type pcmcia_bus_type, and registers all pcmcia drivers with this bus. Alternatively, new registration functions, "pcmcia_register_driver()" and "pcmcia_unregister_driver()", are offered. The pcnet_cs.c driver is converted as an example.
Please apply,
Dominik
drivers/net/pcmcia/pcnet_cs.c +9 -2
@@ -1617,6 +1617,13 @@/*====================================================================*/ +static struct pcmcia_driver pcnet_driver = { + .drv.name ="pcnet_cs" , + .attach = pcnet_attach, + .detach = pcnet_detach, + .owner =THIS_MODULE , +}; +static int __init init_pcnet_cs (void ) {servinfo_t serv;
@@ -1627,14 +1634,14 @@ "does not match!\n");return -EINVAL ; } -register_pccard_driver (&dev_info, &pcnet_attach, &pcnet_detach); +pcmcia_register_driver (&pcnet_driver);return 0 ; } static void __exit exit_pcnet_cs(void) {DEBUG (0 ,"pcnet_cs: unloading\n" ); -unregister_pccard_driver (&dev_info); +pcmcia_unregister_driver (&pcnet_driver);while (dev_list !=NULL )pcnet_detach (dev_list); }
drivers/pcmcia/ds.c +183 -119
395 lines not on this page · raw message
include/pcmcia/ds.h +16 -0
@@ -143,6 +143,22 @@#define register_pcmcia_driver register_pccard_driver#define unregister_pcmcia_driver unregister_pccard_driver +#include <linux/device.h> + +extern struct bus_type pcmcia_bus_type; + +struct pcmcia_driver { +int use_count, status; +dev_link_t *(*attach)(void ); +void (*detach)(dev_link_t *); +struct module *owner; +struct device_driver drv; +}; + +int pcmcia_register_driver (struct pcmcia_driver *driver); +void pcmcia_unregister_driver (struct pcmcia_driver *driver); + +#endif /* __KERNEL__ */ #endif /* _LINUX_DS_H */