[PATCH] pci devices initialization.

From: Rui Sousa (rsousa@grad.physics.sunysb.edu)
Date: Fri May 12 2000 - 18:15:28 EST


Hi,

This patch against pre-8 fixes/cleans up the pci
device initialization in a number of drivers. It fixes problems
with misplaced or absent __initdata/__devinitdata tags and
badly terminated pci_device_id's structures. It also adds some
documentation on the proper usage of the init tags.

The file arch/i386/kernel/acpi.c could use some more modifications
but they are not so clear cut...

Rui Sousa

diff -ur linux-2.3/Documentation/pci.txt linux-2.3.new/Documentation/pci.txt
--- linux-2.3/Documentation/pci.txt Thu May 11 19:39:01 2000
+++ linux-2.3.new/Documentation/pci.txt Fri May 12 18:56:50 2000
@@ -89,6 +89,13 @@
                         function otherwise.
         __devexit The same for __exit.
 
+Tips:
+ The module_init()/module_exit() functions (and all initialization
+ functions called only from these) should be marked __init/exit.
+ The struct pci_driver shouldn't be marked with any of these tags.
+ The ID table array should be marked __devinitdata.
+ The probe() and remove() functions (and all initialization
+ functions called only from these) should be marked __devinit/exit.
 
 2. How to find PCI devices manually (the old style)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff -ur linux-2.3/arch/i386/kernel/acpi.c linux-2.3.new/arch/i386/kernel/acpi.c
--- linux-2.3/arch/i386/kernel/acpi.c Thu May 11 19:39:01 2000
+++ linux-2.3.new/arch/i386/kernel/acpi.c Fri May 12 18:39:08 2000
@@ -824,12 +824,12 @@
         {acpi_init_via},
 };
         
-const static struct pci_device_id acpi_pci_tbl[] =
+const static struct pci_device_id acpi_pci_tbl[] __devinitdata =
 {
         {0x8086, 0x7113, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_INTEL_PIIX4},
         {0x1106, 0x3040, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_VIA_586},
         {0x1106, 0x3057, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_VIA_686A},
- {0,}, /* terminate list */
+ {0,} /* terminate list */
 };
 
 static int __init acpi_probe(struct pci_dev *dev,
diff -ur linux-2.3/drivers/atm/eni.c linux-2.3.new/drivers/atm/eni.c
--- linux-2.3/drivers/atm/eni.c Thu May 4 22:13:28 2000
+++ linux-2.3.new/drivers/atm/eni.c Fri May 12 18:39:08 2000
@@ -2283,7 +2283,7 @@
           0, 0, 0 /* FPGA */ },
         { PCI_VENDOR_ID_EF, PCI_DEVICE_ID_EF_ATM_ASIC, PCI_ANY_ID, PCI_ANY_ID,
           0, 0, 1 /* ASIC */ },
- { 0 }
+ { 0, }
 };
 MODULE_DEVICE_TABLE(pci,eni_pci_tbl);
 
diff -ur linux-2.3/drivers/char/epca.c linux-2.3.new/drivers/char/epca.c
--- linux-2.3/drivers/char/epca.c Thu May 4 22:09:59 2000
+++ linux-2.3.new/drivers/char/epca.c Fri May 12 18:39:08 2000
@@ -4075,14 +4075,15 @@
 }
 
 
-static struct pci_device_id epca_pci_tbl[] __initdata = {
+static struct pci_device_id epca_pci_tbl[] __devinitdata = {
         { PCI_VENDOR_DIGI, PCI_DEVICE_XR, PCI_ANY_ID, PCI_ANY_ID, 0, 0, brd_xr },
         { PCI_VENDOR_DIGI, PCI_DEVICE_XEM, PCI_ANY_ID, PCI_ANY_ID, 0, 0, brd_xem },
         { PCI_VENDOR_DIGI, PCI_DEVICE_CX, PCI_ANY_ID, PCI_ANY_ID, 0, 0, brd_cx },
         { PCI_VENDOR_DIGI, PCI_DEVICE_XRJ, PCI_ANY_ID, PCI_ANY_ID, 0, 0, brd_xrj },
- { 0, }, /* terminate list */
+ { 0, }
 };
 
+MODULE_DEVICE_TABLE(pci, epca_pci_tbl);
 
 int __init init_PCI (void)
 { /* Begin init_PCI */
diff -ur linux-2.3/drivers/net/3c59x.c linux-2.3.new/drivers/net/3c59x.c
--- linux-2.3/drivers/net/3c59x.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/3c59x.c Fri May 12 18:39:08 2000
@@ -423,7 +423,7 @@
         { 0x10B7, 0x6560, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_3CCFE656 },
         { 0x10B7, 0x6562, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_3CCFEM656 },
         { 0x10B7, 0x4500, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_3C450 },
- {0,}, /* 0 terminated list. */
+ {0,} /* 0 terminated list. */
 };
 MODULE_DEVICE_TABLE(pci, vortex_pci_tbl);
 
diff -ur linux-2.3/drivers/net/8139too.c linux-2.3.new/drivers/net/8139too.c
--- linux-2.3/drivers/net/8139too.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/8139too.c Fri May 12 18:39:08 2000
@@ -201,7 +201,7 @@
 /* {0x1113, 0x1211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, MPX5030 },*/
         {0x1500, 0x1360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DELTA8139 },
         {0x4033, 0x1360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ADDTRON8139 },
- {0,},
+ {0,}
 };
 MODULE_DEVICE_TABLE (pci, rtl8139_pci_tbl);
 
diff -ur linux-2.3/drivers/net/arcnet/com20020-pci.c linux-2.3.new/drivers/net/arcnet/com20020-pci.c
--- linux-2.3/drivers/net/arcnet/com20020-pci.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/arcnet/com20020-pci.c Fri May 12 18:39:08 2000
@@ -139,7 +139,9 @@
         {0,}
 };
 
-static struct pci_driver com20020pci_driver __devinitdata = {
+MODULE_DEVICE_TABLE(pci, com20020pci_id_table);
+
+static struct pci_driver com20020pci_driver = {
         name: "com20020",
         id_table: com20020pci_id_table,
         probe: com20020pci_probe,
diff -ur linux-2.3/drivers/net/eepro100.c linux-2.3.new/drivers/net/eepro100.c
--- linux-2.3/drivers/net/eepro100.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/eepro100.c Fri May 12 18:39:08 2000
@@ -2206,7 +2206,7 @@
                 PCI_ANY_ID, PCI_ANY_ID, },
         { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82559ER,
                 PCI_ANY_ID, PCI_ANY_ID, },
- { 0,},
+ { 0,}
 };
 MODULE_DEVICE_TABLE(pci, eepro100_pci_tbl);
         
diff -ur linux-2.3/drivers/net/epic100.c linux-2.3.new/drivers/net/epic100.c
--- linux-2.3/drivers/net/epic100.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/epic100.c Fri May 12 18:39:08 2000
@@ -189,7 +189,7 @@
         { 0x10B8, 0x0005, 0x1092, 0x0AB4, 0, 0, SMSC_83C170_0 },
         { 0x10B8, 0x0005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SMSC_83C170 },
         { 0x10B8, 0x0006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SMSC_83C175 },
- { 0,},
+ { 0,}
 };
 MODULE_DEVICE_TABLE (pci, epic_pci_tbl);
 
diff -ur linux-2.3/drivers/net/ne2k-pci.c linux-2.3.new/drivers/net/ne2k-pci.c
--- linux-2.3/drivers/net/ne2k-pci.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/ne2k-pci.c Fri May 12 18:39:08 2000
@@ -115,7 +115,7 @@
         { 0x1050, 0x5a5a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Winbond_W89C940F },
         { 0x12c3, 0x0058, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Holtek_HT80232 },
         { 0x12c3, 0x5598, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Holtek_HT80229 },
- { 0, },
+ { 0, }
 };
 MODULE_DEVICE_TABLE(pci, ne2k_pci_tbl);
 
diff -ur linux-2.3/drivers/net/pcnet32.c linux-2.3.new/drivers/net/pcnet32.c
--- linux-2.3/drivers/net/pcnet32.c Thu May 11 19:39:03 2000
+++ linux-2.3.new/drivers/net/pcnet32.c Fri May 12 18:39:08 2000
@@ -334,8 +334,10 @@
     { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_PCNETHOME, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
     { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_LANCE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
     { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_LANCE, 0x1014, 0x2000, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, }
 };
+
+MODULE_DEVICE_TABLE (pci, pcnet32_pci_tbl);
 
 static u16 pcnet32_wio_read_csr (unsigned long addr, int index)
 {
diff -ur linux-2.3/drivers/net/sis900.c linux-2.3.new/drivers/net/sis900.c
--- linux-2.3/drivers/net/sis900.c Thu May 11 19:39:04 2000
+++ linux-2.3.new/drivers/net/sis900.c Fri May 12 18:39:08 2000
@@ -75,11 +75,12 @@
         "SiS 900 PCI Fast Ethernet",
         "SiS 7016 PCI Fast Ethernet"
 };
-static struct pci_device_id sis900_pci_tbl [] __initdata = {
+static struct pci_device_id sis900_pci_tbl [] __devinitdata = {
         {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_900,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_900},
         {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_7016,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_7018}
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_7018},
+ {0,}
 };
 MODULE_DEVICE_TABLE (pci, sis900_pci_tbl);
 
diff -ur linux-2.3/drivers/net/starfire.c linux-2.3.new/drivers/net/starfire.c
--- linux-2.3/drivers/net/starfire.c Thu May 11 19:39:04 2000
+++ linux-2.3.new/drivers/net/starfire.c Fri May 12 18:39:08 2000
@@ -211,7 +211,7 @@
 
 static struct pci_device_id starfire_pci_tbl[] __devinitdata = {
         { 0x9004, 0x6915, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_6915 },
- { 0, },
+ { 0, }
 };
 MODULE_DEVICE_TABLE(pci, starfire_pci_tbl);
 
diff -ur linux-2.3/drivers/net/tulip/tulip_core.c linux-2.3.new/drivers/net/tulip/tulip_core.c
--- linux-2.3/drivers/net/tulip/tulip_core.c Thu May 11 19:39:06 2000
+++ linux-2.3.new/drivers/net/tulip/tulip_core.c Fri May 12 18:39:08 2000
@@ -168,7 +168,7 @@
         { 0x1282, 0x9100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21140 },
         { 0x1282, 0x9102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21140 },
         { 0x1113, 0x1217, PCI_ANY_ID, PCI_ANY_ID, 0, 0, MX98715 },
- {0},
+ {0, }
 };
 MODULE_DEVICE_TABLE(pci, tulip_pci_tbl);
 
diff -ur linux-2.3/drivers/net/via-rhine.c linux-2.3.new/drivers/net/via-rhine.c
--- linux-2.3/drivers/net/via-rhine.c Thu May 11 19:39:06 2000
+++ linux-2.3.new/drivers/net/via-rhine.c Fri May 12 18:39:08 2000
@@ -291,7 +291,7 @@
 {
         {0x1106, 0x6100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VT86C100A},
         {0x1106, 0x3043, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VT3043},
- {0,}, /* terminate list */
+ {0,} /* terminate list */
 };
 MODULE_DEVICE_TABLE(pci, via_rhine_pci_tbl);
 
diff -ur linux-2.3/drivers/net/wan/lmc/lmc_main.c linux-2.3.new/drivers/net/wan/lmc/lmc_main.c
--- linux-2.3/drivers/net/wan/lmc/lmc_main.c Thu May 11 19:39:06 2000
+++ linux-2.3.new/drivers/net/wan/lmc/lmc_main.c Fri May 12 18:39:08 2000
@@ -112,7 +112,7 @@
 #ifdef MODULE
 static struct pci_device_id lmc_pci_tbl[] __devinitdata = {
     { 0x1011, 0x009, 0x1379, PCI_ANY_ID, 0, 0, 0},
- { 0 },
+ { 0, }
 };
 
 MODULE_DEVICE_TABLE(pci, lmc_pci_tbl);
diff -ur linux-2.3/drivers/net/yellowfin.c linux-2.3.new/drivers/net/yellowfin.c
--- linux-2.3/drivers/net/yellowfin.c Thu May 11 19:39:06 2000
+++ linux-2.3.new/drivers/net/yellowfin.c Fri May 12 18:39:09 2000
@@ -237,7 +237,7 @@
 static struct pci_device_id yellowfin_pci_tbl[] __devinitdata = {
         { 0x1000, 0x0702, PCI_ANY_ID, PCI_ANY_ID, 0, 0, YELLOWFIN_GNIC },
         { 0x1000, 0x0701, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SYM83C885 },
- { 0, },
+ { 0, }
 };
 MODULE_DEVICE_TABLE (pci, yellowfin_pci_tbl);
 
diff -ur linux-2.3/drivers/parport/parport_pc.c linux-2.3.new/drivers/parport/parport_pc.c
--- linux-2.3/drivers/parport/parport_pc.c Thu May 4 22:13:35 2000
+++ linux-2.3.new/drivers/parport/parport_pc.c Fri May 12 18:39:09 2000
@@ -2360,7 +2360,7 @@
           PCI_ANY_ID, PCI_ANY_ID, 0, 0, afavlab_tk9902 },
         { PCI_VENDOR_ID_TIMEDIA, PCI_DEVICE_ID_TIMEDIA_1889,
           PCI_ANY_ID, PCI_ANY_ID, 0, 0, timedia_1889 },
- { 0, }, /* terminate list */
+ { 0, } /* terminate list */
 };
 MODULE_DEVICE_TABLE(pci,parport_pc_pci_tbl);
 
diff -ur linux-2.3/drivers/sound/emu10k1/main.c linux-2.3.new/drivers/sound/emu10k1/main.c
--- linux-2.3/drivers/sound/emu10k1/main.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/emu10k1/main.c Fri May 12 18:52:46 2000
@@ -80,7 +80,7 @@
         "EMU10K1",
 };
 
-static struct pci_device_id emu10k1_pci_tbl[] = {
+static struct pci_device_id emu10k1_pci_tbl[] __devinitdata = {
         {PCI_VENDOR_ID_CREATIVE, PCI_DEVICE_ID_CREATIVE_EMU10K1,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, EMU10K1},
         {0,}
diff -ur linux-2.3/drivers/sound/es1370.c linux-2.3.new/drivers/sound/es1370.c
--- linux-2.3/drivers/sound/es1370.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/es1370.c Fri May 12 18:39:09 2000
@@ -2599,7 +2599,7 @@
 
 static struct pci_device_id id_table[] __devinitdata = {
         { PCI_VENDOR_ID_ENSONIQ, PCI_DEVICE_ID_ENSONIQ_ES1370, PCI_ANY_ID, PCI_ANY_ID, 0, 0 },
- { 0, 0, 0, 0, 0, 0 }
+ { 0, }
 };
 
 MODULE_DEVICE_TABLE(pci, id_table);
diff -ur linux-2.3/drivers/sound/es1371.c linux-2.3.new/drivers/sound/es1371.c
--- linux-2.3/drivers/sound/es1371.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/es1371.c Fri May 12 18:39:09 2000
@@ -2804,7 +2804,7 @@
         { PCI_VENDOR_ID_ENSONIQ, PCI_DEVICE_ID_ENSONIQ_ES1371, PCI_ANY_ID, PCI_ANY_ID, 0, 0 },
         { PCI_VENDOR_ID_ENSONIQ, PCI_DEVICE_ID_ENSONIQ_CT5880, PCI_ANY_ID, PCI_ANY_ID, 0, 0 },
         { PCI_VENDOR_ID_ECTIVA, PCI_DEVICE_ID_ECTIVA_EV1938, PCI_ANY_ID, PCI_ANY_ID, 0, 0 },
- { 0, 0, 0, 0, 0, 0 }
+ { 0, }
 };
 
 MODULE_DEVICE_TABLE(pci, id_table);
diff -ur linux-2.3/drivers/sound/esssolo1.c linux-2.3.new/drivers/sound/esssolo1.c
--- linux-2.3/drivers/sound/esssolo1.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/esssolo1.c Fri May 12 18:39:09 2000
@@ -2335,7 +2335,7 @@
 
 static struct pci_device_id id_table[] __devinitdata = {
         { PCI_VENDOR_ID_ESS, PCI_DEVICE_ID_ESS_SOLO1, PCI_ANY_ID, PCI_ANY_ID, 0, 0 },
- { 0, 0, 0, 0, 0, 0 }
+ { 0, }
 };
 
 MODULE_DEVICE_TABLE(pci, id_table);
diff -ur linux-2.3/drivers/sound/i810_audio.c linux-2.3.new/drivers/sound/i810_audio.c
--- linux-2.3/drivers/sound/i810_audio.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/i810_audio.c Fri May 12 18:39:09 2000
@@ -189,7 +189,7 @@
         "Intel 440MX"
 };
 
-static struct pci_device_id i810_pci_tbl [] __initdata = {
+static struct pci_device_id i810_pci_tbl [] __devinitdata = {
         {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, ICH82801AA},
         {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82901,
diff -ur linux-2.3/drivers/sound/sonicvibes.c linux-2.3.new/drivers/sound/sonicvibes.c
--- linux-2.3/drivers/sound/sonicvibes.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/sonicvibes.c Fri May 12 18:39:09 2000
@@ -2634,7 +2634,7 @@
 
 static struct pci_device_id id_table[] __devinitdata = {
        { PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_SONICVIBES, PCI_ANY_ID, PCI_ANY_ID, 0, 0 },
- { 0, 0, 0, 0, 0, 0 }
+ { 0, }
 };
 
 MODULE_DEVICE_TABLE(pci, id_table);
diff -ur linux-2.3/drivers/sound/trident.c linux-2.3.new/drivers/sound/trident.c
--- linux-2.3/drivers/sound/trident.c Thu May 11 19:39:08 2000
+++ linux-2.3.new/drivers/sound/trident.c Fri May 12 18:39:09 2000
@@ -147,7 +147,7 @@
         "ALi Audio Accelerator"
 };
 
-static struct pci_device_id trident_pci_tbl [] __initdata = {
+static struct pci_device_id trident_pci_tbl [] __devinitdata = {
         {PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_DX,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, TRIDENT_4D_DX},
         {PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_NX,
diff -ur linux-2.3/drivers/sound/via82cxxx_audio.c linux-2.3.new/drivers/sound/via82cxxx_audio.c
--- linux-2.3/drivers/sound/via82cxxx_audio.c Fri May 12 18:36:39 2000
+++ linux-2.3.new/drivers/sound/via82cxxx_audio.c Fri May 12 18:39:09 2000
@@ -303,9 +303,9 @@
  */
 
 
-static struct pci_device_id via_pci_tbl[] __initdata = {
+static struct pci_device_id via_pci_tbl[] __devinitdata = {
         { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
- { 0, },
+ { 0, }
 };
 MODULE_DEVICE_TABLE(pci,via_pci_tbl);
 
diff -ur linux-2.3/drivers/video/riva/fbdev.c linux-2.3.new/drivers/video/riva/fbdev.c
--- linux-2.3/drivers/video/riva/fbdev.c Thu May 4 22:13:44 2000
+++ linux-2.3.new/drivers/video/riva/fbdev.c Fri May 12 18:39:09 2000
@@ -127,7 +127,7 @@
         { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_VTNT2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_VTNT2 },
         { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_UVTNT2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_VTNT2 },
         { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_ITNT2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RIVA_ITNT2 },
- { 0, }, /* terminate list */
+ { 0, } /* terminate list */
 };
 MODULE_DEVICE_TABLE(pci, rivafb_pci_tbl);
 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon May 15 2000 - 21:00:22 EST