Skip to contentSkip to conversation

pcmcia: bus_type pcmcia_bus_type, pcmcia-drivers

PATCH New Dominik Brodowski 1 participant 1 message Feb 27, 2003

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
diff -ruN linux-original/drivers/net/pcmcia/pcnet_cs.c linux/drivers/net/pcmcia/pcnet_cs.c
@@ -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
diff -ruN linux-original/include/pcmcia/ds.h linux/include/pcmcia/ds.h
@@ -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 */