patch-2.4.0-test5 linux/drivers/pcmcia/pci_socket.c

Next file: linux/drivers/pcmcia/yenta.c
Previous file: linux/drivers/pcmcia/ds.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test4/linux/drivers/pcmcia/pci_socket.c linux/drivers/pcmcia/pci_socket.c
@@ -181,6 +181,13 @@
 	return socket->op->open(socket);
 }
 
+void cardbus_register(pci_socket_t *socket)
+{
+	int nr = socket - pci_socket_array;
+
+	socket->pcmcia_socket = pcmcia_register_socket(nr, &pci_socket_operations, 1);
+}
+
 static int __devinit
 cardbus_probe (struct pci_dev *dev, const struct pci_device_id *id)
 {
@@ -189,14 +196,10 @@
 	for (s = 0; s < MAX_SOCKETS; s++) {
 		if (pci_socket_array [s].dev == 0) {
 			add_pci_socket (s, dev, &yenta_operations);
-			pci_socket_array [s].pcmcia_socket =
-				pcmcia_register_socket (s,
-					&pci_socket_operations,
-					1);
 			return 0;
 		}
 	}
-	return -1;
+	return -ENODEV;
 }
 
 static void __devexit cardbus_remove (struct pci_dev *dev)
@@ -222,7 +225,7 @@
 }
 
 
-static struct pci_device_id cardbus_table [] = { {
+static struct pci_device_id cardbus_table [] __devinitdata = { {
 	class:		PCI_CLASS_BRIDGE_CARDBUS << 8,
 	class_mask:	~0,
 
@@ -232,6 +235,7 @@
 	subdevice:	PCI_ANY_ID,
 }, { /* all zeroes */ }
 };
+MODULE_DEVICE_TABLE(pci, cardbus_table);
 
 static struct pci_driver pci_cardbus_driver = {
 	name:		"cardbus",
@@ -242,12 +246,12 @@
 	resume:		cardbus_resume,
 };
 
-static int __devinit pci_socket_init(void)
+static int __init pci_socket_init(void)
 {
 	return pci_module_init (&pci_cardbus_driver);
 }
 
-static void __devexit pci_socket_exit (void)
+static void __exit pci_socket_exit (void)
 {
 	pci_unregister_driver (&pci_cardbus_driver);
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)