From: Linus Torvalds Date: Fri, 23 Nov 2007 20:26:44 +0000 (-0500) Subject: Import 2.3.13pre6 X-Git-Tag: 2.3.13pre6 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=152e59110b0a11d434d3fc78cdc9056737b68579;p=history.git Import 2.3.13pre6 --- diff --git a/Documentation/joystick-api.txt b/Documentation/joystick-api.txt index 6b7b34129a2e..fe3b6842c6fd 100644 --- a/Documentation/joystick-api.txt +++ b/Documentation/joystick-api.txt @@ -1,7 +1,7 @@ Joystick API Documentation -*-Text-*- Ragnar Hojland Espinosa - + 7 Aug 1998 @@ -74,9 +74,10 @@ is, you have both an axis 0 and a button 0). Generally, 2nd Axis Y 3 ...and so on -Hats vary from one joystick type to another. Some can be moved in 8 -directions, some only in 4, however, the driver always reports a hat as two -independent axis, even if the hardware doesn't allow independent movement. +Hats vary from one joystick type to another. Some can be moved in 8 +directions, some only in 4. The driver, however, always reports a hat +as two independent axis, even if the hardware doesn't allow independent +movement. 2.3 js_event.value @@ -85,7 +86,7 @@ independent axis, even if the hardware doesn't allow independent movement. For an axis, ``value'' is a signed integer between -32767 and +32767 representing the position of the joystick along that axis. If you don't read a 0 when the joystick is `dead', or if it doesn't span the -full range, you should recalibrate (with, for example, jscal). +full range, you should recalibrate it (with, for example, jscal). For a button, ``value'' for a press button event is 1 and for a release button event is 0. @@ -93,16 +94,16 @@ button event is 0. Though this if (js_event.type == JS_EVENT_BUTTON) { - buttons_state ^= (1 << js_event.number); + buttons_state ^= (1 << js_event.number); } may work well if you handle JS_EVENT_INIT events separately, if ((js_event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON) { - if (js_event.value) - buttons_state |= (1 << js_event.number); - else - buttons_state &= ~(1 << js_event.number); + if (js_event.value) + buttons_state |= (1 << js_event.number); + else + buttons_state &= ~(1 << js_event.number); } is much safer since it can't lose sync with the driver. As you would @@ -112,6 +113,7 @@ snippet, this ends up being shorter. 2.4 js_event.time ~~~~~~~~~~~~~~~~~ + The time an event was generated is stored in ``js_event.time''. It's a time in miliseconds since ... well, since sometime in the past. This eases the task of detecting double clicks, figuring out if movement of axis and button @@ -144,14 +146,14 @@ all events on the queue (that is, until you get a -1). For example, while (1) { - while (read (fd, &e, sizeof(struct js_event)) > 0) { - process_event (e); - } - /* EAGAIN is returned when the queue is empty */ - if (errno != EAGAIN) { - /* error */ - } - /* do something interesting with processed events */ + while (read (fd, &e, sizeof(struct js_event)) > 0) { + process_event (e); + } + /* EAGAIN is returned when the queue is empty */ + if (errno != EAGAIN) { + /* error */ + } + /* do something interesting with processed events */ } One reason for emptying the queue is that if it gets full you'll start @@ -219,6 +221,7 @@ JS_VERSION symbol #ifdef JS_VERSION #if JS_VERSION > 0xsomething + 4.2 JSIOCGNAME ~~~~~~~~~~~~~~ @@ -232,6 +235,7 @@ possible overrun should the name be too long. strncpy(name, "Unknown", sizeof(name)); printf("Name: %s\n", name); + 4.3 JSIOC[SG]CORR ~~~~~~~~~~~~~~~~~ @@ -266,10 +270,10 @@ The driver offers backward compatibility, though. Here's a quick summary: struct JS_DATA_TYPE js; while (1) { - if (read (fd, &js, JS_RETURN) != JS_RETURN) { - /* error */ - } - usleep (1000); + if (read (fd, &js, JS_RETURN) != JS_RETURN) { + /* error */ + } + usleep (1000); } As you can figure out from the example, the read returns immediately, @@ -299,6 +303,7 @@ The v0.8.0.2 driver also had an interface for 'digital joysticks', (now called Multisystem joystick in this driver), under /dev/djsX. This driver doesn't try to be compatible with that interface. + 6. Final Notes ~~~~~~~~~~~~~~ diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c index 9758097e9b4c..f57920c55389 100644 --- a/arch/i386/mm/init.c +++ b/arch/i386/mm/init.c @@ -28,6 +28,8 @@ #include #include +static unsigned long totalram = 0; + extern void show_net_buffers(void); extern unsigned long init_smp_mappings(unsigned long); @@ -419,6 +421,7 @@ __initfunc(void mem_init(unsigned long start_mem, unsigned long end_mem)) continue; } set_page_count(mem_map+MAP_NR(tmp), 1); + totalram += PAGE_SIZE; #ifdef CONFIG_BLK_DEV_INITRD if (!initrd_start || (tmp < initrd_start || tmp >= initrd_end)) @@ -446,28 +449,16 @@ void free_initmem(void) mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved); set_page_count(mem_map+MAP_NR(addr), 1); free_page(addr); + totalram += PAGE_SIZE; } printk ("Freeing unused kernel memory: %dk freed\n", (&__init_end - &__init_begin) >> 10); } void si_meminfo(struct sysinfo *val) { - int i; - - i = max_mapnr; - val->totalram = 0; + val->totalram = totalram; val->sharedram = 0; val->freeram = nr_free_pages << PAGE_SHIFT; val->bufferram = atomic_read(&buffermem); - while (i-- > 0) { - if (PageReserved(mem_map+i)) - continue; - val->totalram++; - if (!page_count(mem_map+i)) - continue; - val->sharedram += page_count(mem_map+i) - 1; - } - val->totalram <<= PAGE_SHIFT; - val->sharedram <<= PAGE_SHIFT; return; } diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index 14675b16d29e..83ba8d4f3d98 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c @@ -1763,11 +1763,10 @@ static int __init parport_pc_init_pci (int irq, int dma) for (n = 0; n < cards[i].numports; n++) { unsigned long lo = cards[i].addr[n].lo; unsigned long hi = cards[i].addr[n].hi; - unsigned long io_lo = pcidev->base_address[lo]; - unsigned long io_hi = ((hi < 0) ? 0 : - pcidev->base_address[hi]); - io_lo &= PCI_BASE_ADDRESS_IO_MASK; - io_hi &= PCI_BASE_ADDRESS_IO_MASK; + unsigned long io_lo, io_hi; + io_lo = pcidev->resource[lo].start; + io_hi = ((hi < 0) ? 0 : + pcidev->resource[hi].start); if (irq == PARPORT_IRQ_AUTO) { if (parport_pc_probe_port (io_lo, io_hi, diff --git a/drivers/pci/devlist.h b/drivers/pci/devlist.h new file mode 100644 index 000000000000..c52c40656f69 --- /dev/null +++ b/drivers/pci/devlist.h @@ -0,0 +1,962 @@ +VENDOR( COMPAQ, "Compaq" ) + DEVICE( COMPAQ, COMPAQ_1280, "QVision 1280/p") + DEVICE( COMPAQ, COMPAQ_SMART2P, "Smart-2/P RAID Controller") + DEVICE( COMPAQ, COMPAQ_NETEL100,"Netelligent 10/100") + DEVICE( COMPAQ, COMPAQ_NETEL10, "Netelligent 10") + DEVICE( COMPAQ, COMPAQ_NETFLEX3I,"NetFlex 3") + DEVICE( COMPAQ, COMPAQ_NETEL100D,"Netelligent 10/100 Dual") + DEVICE( COMPAQ, COMPAQ_NETEL100PI,"Netelligent 10/100 ProLiant") + DEVICE( COMPAQ, COMPAQ_NETEL100I,"Netelligent 10/100 Integrated") + DEVICE( COMPAQ, COMPAQ_THUNDER, "ThunderLAN") + DEVICE( COMPAQ, COMPAQ_NETFLEX3B,"NetFlex 3 BNC") +ENDVENDOR() + +VENDOR( NCR, "NCR" ) + DEVICE( NCR, NCR_53C810, "53c810") + DEVICE( NCR, NCR_53C820, "53c820") + DEVICE( NCR, NCR_53C825, "53c825") + DEVICE( NCR, NCR_53C815, "53c815") + DEVICE( NCR, NCR_53C860, "53c860") + DEVICE( NCR, NCR_53C896, "53c896") + DEVICE( NCR, NCR_53C895, "53c895") + DEVICE( NCR, NCR_53C885, "53c885") + DEVICE( NCR, NCR_53C875, "53c875") + DEVICE( NCR, NCR_53C875J, "53c875J") +ENDVENDOR() + +VENDOR( ATI, "ATI" ) + DEVICE( ATI, ATI_68800, "68800AX") + DEVICE( ATI, ATI_215CT222, "215CT222") + DEVICE( ATI, ATI_210888CX, "210888CX") + DEVICE( ATI, ATI_215GB, "Mach64 GB") + DEVICE( ATI, ATI_215GD, "Mach64 GD (Rage Pro)") + DEVICE( ATI, ATI_215GI, "Mach64 GI (Rage Pro)") + DEVICE( ATI, ATI_215GP, "Mach64 GP (Rage Pro)") + DEVICE( ATI, ATI_215GQ, "Mach64 GQ (Rage Pro)") + DEVICE( ATI, ATI_215GT, "Mach64 GT (Rage II)") + DEVICE( ATI, ATI_215GTB, "Mach64 GTB (Rage II)") + DEVICE( ATI, ATI_210888GX, "210888GX") + DEVICE( ATI, ATI_215LG, "Mach64 LG (Rage Pro)") + DEVICE( ATI, ATI_264LT, "Mach64 LT") + DEVICE( ATI, ATI_264VT, "Mach64 VT") +ENDVENDOR() + +VENDOR( VLSI, "VLSI" ) + DEVICE( VLSI, VLSI_82C592, "82C592-FC1") + DEVICE( VLSI, VLSI_82C593, "82C593-FC1") + DEVICE( VLSI, VLSI_82C594, "82C594-AFC2") + DEVICE( VLSI, VLSI_82C597, "82C597-AFC2") + DEVICE( VLSI, VLSI_82C541, "82C541 Lynx") + DEVICE( VLSI, VLSI_82C543, "82C543 Lynx ISA") + DEVICE( VLSI, VLSI_82C532, "82C532") + DEVICE( VLSI, VLSI_82C534, "82C534") + DEVICE( VLSI, VLSI_82C535, "82C535") + DEVICE( VLSI, VLSI_82C147, "82C147") + DEVICE( VLSI, VLSI_VAS96011, "VAS96011 (Golden Gate II)") +ENDVENDOR() + +VENDOR( ADL, "Avance Logic" ) + DEVICE( ADL, ADL_2301, "2301") +ENDVENDOR() + +VENDOR( NS, "NS" ) + DEVICE( NS, NS_87415, "87415") + DEVICE( NS, NS_87410, "87410") +ENDVENDOR() + +VENDOR( TSENG, "Tseng'Lab" ) + DEVICE( TSENG, TSENG_W32P_2, "ET4000W32P") + DEVICE( TSENG, TSENG_W32P_b, "ET4000W32P rev B") + DEVICE( TSENG, TSENG_W32P_c, "ET4000W32P rev C") + DEVICE( TSENG, TSENG_W32P_d, "ET4000W32P rev D") + DEVICE( TSENG, TSENG_ET6000, "ET6000") +ENDVENDOR() + +VENDOR( WEITEK, "Weitek" ) + DEVICE( WEITEK, WEITEK_P9000, "P9000") + DEVICE( WEITEK, WEITEK_P9100, "P9100") +ENDVENDOR() + +VENDOR( DEC, "DEC" ) + DEVICE( DEC, DEC_BRD, "DC21050") + DEVICE( DEC, DEC_TULIP, "DC21040") + DEVICE( DEC, DEC_TGA, "TGA") + DEVICE( DEC, DEC_TULIP_FAST, "DC21140") + DEVICE( DEC, DEC_TGA2, "TGA2") + DEVICE( DEC, DEC_FDDI, "DEFPA") + DEVICE( DEC, DEC_TULIP_PLUS, "DC21041") + DEVICE( DEC, DEC_21142, "DC21142") + DEVICE( DEC, DEC_21052, "DC21052") + DEVICE( DEC, DEC_21150, "DC21150") + DEVICE( DEC, DEC_21152, "DC21152") + DEVICE( DEC, DEC_21153, "DC21153") + DEVICE( DEC, DEC_21154, "DC21154") +ENDVENDOR() + +VENDOR( CIRRUS, "Cirrus Logic" ) + DEVICE( CIRRUS, CIRRUS_7548, "GD 7548") + DEVICE( CIRRUS, CIRRUS_5430, "GD 5430") + DEVICE( CIRRUS, CIRRUS_5434_4, "GD 5434") + DEVICE( CIRRUS, CIRRUS_5434_8, "GD 5434") + DEVICE( CIRRUS, CIRRUS_5436, "GD 5436") + DEVICE( CIRRUS, CIRRUS_5446, "GD 5446") + DEVICE( CIRRUS, CIRRUS_5480, "GD 5480") + DEVICE( CIRRUS, CIRRUS_5464, "GD 5464") + DEVICE( CIRRUS, CIRRUS_5465, "GD 5465") + DEVICE( CIRRUS, CIRRUS_6729, "CL 6729") + DEVICE( CIRRUS, CIRRUS_6832, "PD 6832") + DEVICE( CIRRUS, CIRRUS_7542, "CL 7542") + DEVICE( CIRRUS, CIRRUS_7543, "CL 7543") + DEVICE( CIRRUS, CIRRUS_7541, "CL 7541") +ENDVENDOR() + +VENDOR( IBM, "IBM" ) + DEVICE( IBM, IBM_FIRE_CORAL, "Fire Coral") + DEVICE( IBM, IBM_TR, "Token Ring") + DEVICE( IBM, IBM_82G2675, "82G2675") + DEVICE( IBM, IBM_MCA, "MicroChannel") + DEVICE( IBM, IBM_82351, "82351") + DEVICE( IBM, IBM_PYTHON, "Python") + DEVICE( IBM, IBM_SERVERAID, "ServeRAID") + DEVICE( IBM, IBM_TR_WAKE, "Wake On LAN Token Ring") + DEVICE( IBM, IBM_MPIC, "MPIC-2 Interrupt Controller") + DEVICE( IBM, IBM_3780IDSP, "MWave DSP") + DEVICE( IBM, IBM_MPIC_2, "MPIC-2 ASIC Interrupt Controller") +ENDVENDOR() + +VENDOR( WD, "Western Digital" ) + DEVICE( WD, WD_7197, "WD 7197") +ENDVENDOR() + +VENDOR( AMD, "AMD" ) + DEVICE( AMD, AMD_LANCE, "79C970") + DEVICE( AMD, AMD_SCSI, "53C974") +ENDVENDOR() + +VENDOR( TRIDENT, "Trident" ) + DEVICE( TRIDENT, TRIDENT_9397, "Cyber9397") + DEVICE( TRIDENT, TRIDENT_9420, "TG 9420") + DEVICE( TRIDENT, TRIDENT_9440, "TG 9440") + DEVICE( TRIDENT, TRIDENT_9660, "TG 9660 / Cyber9385") + DEVICE( TRIDENT, TRIDENT_9750, "Image 975") +ENDVENDOR() + +VENDOR( AI, "Acer Incorporated" ) + DEVICE( AI, AI_M1435, "M1435") +ENDVENDOR() + +VENDOR( MATROX, "Matrox" ) + DEVICE( MATROX, MATROX_MGA_2, "Atlas PX2085") + DEVICE( MATROX, MATROX_MIL, "Millennium") + DEVICE( MATROX, MATROX_MYS, "Mystique") + DEVICE( MATROX, MATROX_MIL_2, "Millennium II") + DEVICE( MATROX, MATROX_MIL_2_AGP,"Millennium II AGP") + DEVICE( MATROX, MATROX_G200_PCI,"G200 PCI") + DEVICE( MATROX, MATROX_G200_AGP,"G200 AGP") + DEVICE( MATROX, MATROX_MGA_IMP, "MGA Impression") + DEVICE( MATROX, MATROX_G100_MM, "G100 multi monitor") + DEVICE( MATROX, MATROX_G100_AGP,"G100 AGP") +ENDVENDOR() + +VENDOR( CT, "Chips & Technologies" ) + DEVICE( CT, CT_65545, "65545") + DEVICE( CT, CT_65548, "65548") + DEVICE( CT, CT_65550, "65550") + DEVICE( CT, CT_65554, "65554") + DEVICE( CT, CT_65555, "65555") +ENDVENDOR() + +VENDOR( MIRO, "Miro" ) + DEVICE( MIRO, MIRO_36050, "ZR36050") +ENDVENDOR() + +VENDOR( NEC, "NEC" ) + DEVICE( NEC, NEC_PCX2, "PowerVR PCX2") +ENDVENDOR() + +VENDOR( FD, "Future Domain" ) + DEVICE( FD, FD_36C70, "TMC-18C30") +ENDVENDOR() + +VENDOR( SI, "Silicon Integrated Systems" ) + DEVICE( SI, SI_5591_AGP, "5591/5592 AGP") + DEVICE( SI, SI_6202, "6202") + DEVICE( SI, SI_503, "85C503") + DEVICE( SI, SI_ACPI, "ACPI") + DEVICE( SI, SI_5597_VGA, "5597/5598 VGA") + DEVICE( SI, SI_6205, "6205") + DEVICE( SI, SI_501, "85C501") + DEVICE( SI, SI_496, "85C496") + DEVICE( SI, SI_601, "85C601") + DEVICE( SI, SI_5107, "5107") + DEVICE( SI, SI_5511, "85C5511") + DEVICE( SI, SI_5513, "85C5513") + DEVICE( SI, SI_5571, "5571") + DEVICE( SI, SI_5591, "5591/5592 Host") + DEVICE( SI, SI_5597, "5597/5598 Host") + DEVICE( SI, SI_7001, "7001 USB") +ENDVENDOR() + +VENDOR( HP, "Hewlett Packard" ) + DEVICE( HP, HP_J2585A, "J2585A") + DEVICE( HP, HP_J2585B, "J2585B (Lassen)") +ENDVENDOR() + +VENDOR( PCTECH, "PCTECH" ) + DEVICE( PCTECH, PCTECH_RZ1000, "RZ1000 (buggy)") + DEVICE( PCTECH, PCTECH_RZ1001, "RZ1001 (buggy?)") + DEVICE( PCTECH, PCTECH_SAMURAI_0,"Samurai 0") + DEVICE( PCTECH, PCTECH_SAMURAI_1,"Samurai 1") + DEVICE( PCTECH, PCTECH_SAMURAI_IDE,"Samurai IDE") +ENDVENDOR() + +VENDOR( DPT, "DPT" ) + DEVICE( DPT, DPT, "SmartCache/Raid") +ENDVENDOR() + +VENDOR( OPTI, "OPTi" ) + DEVICE( OPTI, OPTI_92C178, "92C178") + DEVICE( OPTI, OPTI_82C557, "82C557 Viper-M") + DEVICE( OPTI, OPTI_82C558, "82C558 Viper-M ISA+IDE") + DEVICE( OPTI, OPTI_82C621, "82C621") + DEVICE( OPTI, OPTI_82C700, "82C700") + DEVICE( OPTI, OPTI_82C701, "82C701 FireStar Plus") + DEVICE( OPTI, OPTI_82C814, "82C814 Firebridge 1") + DEVICE( OPTI, OPTI_82C822, "82C822") + DEVICE( OPTI, OPTI_82C825, "82C825 Firebridge 2") +ENDVENDOR() + +VENDOR( SGS, "SGS Thomson" ) + DEVICE( SGS, SGS_2000, "STG 2000X") + DEVICE( SGS, SGS_1764, "STG 1764X") +ENDVENDOR() + +VENDOR( BUSLOGIC, "BusLogic" ) + DEVICE( BUSLOGIC, BUSLOGIC_MULTIMASTER_NC, "MultiMaster NC") + DEVICE( BUSLOGIC, BUSLOGIC_MULTIMASTER, "MultiMaster") + DEVICE( BUSLOGIC, BUSLOGIC_FLASHPOINT, "FlashPoint") +ENDVENDOR() + +VENDOR( TI, "Texas Instruments" ) + DEVICE( TI, TI_TVP4010, "TVP4010 Permedia") + DEVICE( TI, TI_TVP4020, "TVP4020 Permedia 2") + DEVICE( TI, TI_PCI1130, "PCI1130") + DEVICE( TI, TI_PCI1131, "PCI1131") + DEVICE( TI, TI_PCI1250, "PCI1250") +ENDVENDOR() + +VENDOR( OAK, "OAK" ) + DEVICE( OAK, OAK_OTI107, "OTI107") +ENDVENDOR() + +VENDOR( WINBOND2, "Winbond" ) + DEVICE( WINBOND2, WINBOND2_89C940,"NE2000-PCI") +ENDVENDOR() + +VENDOR( MOTOROLA, "Motorola" ) + DEVICE( MOTOROLA, MOTOROLA_MPC105,"MPC105 Eagle") + DEVICE( MOTOROLA, MOTOROLA_MPC106,"MPC106 Grackle") + DEVICE( MOTOROLA, MOTOROLA_RAVEN, "Raven") + DEVICE( MOTOROLA, MOTOROLA_FALCON,"Falcon") + DEVICE( MOTOROLA, MOTOROLA_CPX8216,"CPX8216") +ENDVENDOR() + +VENDOR( PROMISE, "Promise Technology" ) + DEVICE( PROMISE, PROMISE_20246, "IDE UltraDMA/33") + DEVICE( PROMISE, PROMISE_20262, "IDE UltraDMA/66") + DEVICE( PROMISE, PROMISE_5300, "DC5030") +ENDVENDOR() + +VENDOR( N9, "Number Nine" ) + DEVICE( N9, N9_I128, "Imagine 128") + DEVICE( N9, N9_I128_2, "Imagine 128v2") + DEVICE( N9, N9_I128_T2R, "Revolution 3D") +ENDVENDOR() + +VENDOR( UMC, "UMC" ) + DEVICE( UMC, UMC_UM8673F, "UM8673F") + DEVICE( UMC, UMC_UM8891A, "UM8891A") + DEVICE( UMC, UMC_UM8886BF, "UM8886BF") + DEVICE( UMC, UMC_UM8886A, "UM8886A") + DEVICE( UMC, UMC_UM8881F, "UM8881F") + DEVICE( UMC, UMC_UM8886F, "UM8886F") + DEVICE( UMC, UMC_UM9017F, "UM9017F") + DEVICE( UMC, UMC_UM8886N, "UM8886N") + DEVICE( UMC, UMC_UM8891N, "UM8891N") +ENDVENDOR() + +VENDOR( X, "X Technology" ) + DEVICE( X, X_AGX016, "ITT AGX016") +ENDVENDOR() + +VENDOR( PICOP, "PicoPower" ) + DEVICE( PICOP, PICOP_PT86C52X, "PT86C52x Vesuvius") + DEVICE( PICOP, PICOP_PT80C524, "PT80C524 Nile") +ENDVENDOR() + +VENDOR( APPLE, "Apple" ) + DEVICE( APPLE, APPLE_BANDIT, "Bandit") + DEVICE( APPLE, APPLE_GC, "Grand Central") + DEVICE( APPLE, APPLE_HYDRA, "Hydra") +ENDVENDOR() + +VENDOR( NEXGEN, "Nexgen" ) + DEVICE( NEXGEN, NEXGEN_82C501, "82C501") +ENDVENDOR() + +VENDOR( QLOGIC, "Q Logic" ) + DEVICE( QLOGIC, QLOGIC_ISP1020, "ISP1020") + DEVICE( QLOGIC, QLOGIC_ISP1022, "ISP1022") +ENDVENDOR() + +VENDOR( CYRIX, "Cyrix" ) + DEVICE( CYRIX, CYRIX_5510, "5510") + DEVICE( CYRIX, CYRIX_PCI_MASTER,"PCI Master") + DEVICE( CYRIX, CYRIX_5520, "5520") + DEVICE( CYRIX, CYRIX_5530_LEGACY,"5530 Kahlua Legacy") + DEVICE( CYRIX, CYRIX_5530_SMI, "5530 Kahlua SMI") + DEVICE( CYRIX, CYRIX_5530_IDE, "5530 Kahlua IDE") + DEVICE( CYRIX, CYRIX_5530_AUDIO,"5530 Kahlua Audio") + DEVICE( CYRIX, CYRIX_5530_VIDEO,"5530 Kahlua Video") +ENDVENDOR() + +VENDOR( LEADTEK, "Leadtek Research" ) + DEVICE( LEADTEK, LEADTEK_805, "S3 805") +ENDVENDOR() + +VENDOR( CONTAQ, "Contaq" ) + DEVICE( CONTAQ, CONTAQ_82C599, "82C599") + DEVICE( CONTAQ, CONTAQ_82C693, "82C693") +ENDVENDOR() + +VENDOR( FOREX, "Forex" ) +ENDVENDOR() + +VENDOR( OLICOM, "Olicom" ) + DEVICE( OLICOM, OLICOM_OC3136, "OC-3136/3137") + DEVICE( OLICOM, OLICOM_OC2315, "OC-2315") + DEVICE( OLICOM, OLICOM_OC2325, "OC-2325") + DEVICE( OLICOM, OLICOM_OC2183, "OC-2183/2185") + DEVICE( OLICOM, OLICOM_OC2326, "OC-2326") + DEVICE( OLICOM, OLICOM_OC6151, "OC-6151/6152") +ENDVENDOR() + +VENDOR( SUN, "Sun Microsystems" ) + DEVICE( SUN, SUN_EBUS, "PCI-EBus Bridge") + DEVICE( SUN, SUN_HAPPYMEAL, "Happy Meal Ethernet") + DEVICE( SUN, SUN_SIMBA, "Advanced PCI Bridge") + DEVICE( SUN, SUN_PBM, "PCI Bus Module") + DEVICE( SUN, SUN_SABRE, "Ultra IIi PCI") +ENDVENDOR() + +VENDOR( CMD, "CMD" ) + DEVICE( CMD, CMD_640, "640 (buggy)") + DEVICE( CMD, CMD_643, "643") + DEVICE( CMD, CMD_646, "646") + DEVICE( CMD, CMD_670, "670") +ENDVENDOR() + +VENDOR( VISION, "Vision" ) + DEVICE( VISION, VISION_QD8500, "QD-8500") + DEVICE( VISION, VISION_QD8580, "QD-8580") +ENDVENDOR() + +VENDOR( BROOKTREE, "Brooktree" ) + DEVICE( BROOKTREE, BROOKTREE_848, "Bt848") + DEVICE( BROOKTREE, BROOKTREE_849A, "Bt849") + DEVICE( BROOKTREE, BROOKTREE_878_1,"Bt878 2nd Contr. (?)") + DEVICE( BROOKTREE, BROOKTREE_878, "Bt878") + DEVICE( BROOKTREE, BROOKTREE_8474, "Bt8474") +ENDVENDOR() + +VENDOR( SIERRA, "Sierra" ) + DEVICE( SIERRA, SIERRA_STB, "STB Horizon 64") +ENDVENDOR() + +VENDOR( SGI, "Silicon Graphics Inc" ) + DEVICE( SGI, SGI_IOC3, "IOC3") +ENDVENDOR() + +VENDOR( ACC, "ACC MICROELECTRONICS" ) + DEVICE( ACC, ACC_2056, "2056") +ENDVENDOR() + +VENDOR( WINBOND, "Winbond" ) + DEVICE( WINBOND, WINBOND_83769, "W83769F") + DEVICE( WINBOND, WINBOND_82C105, "SL82C105") + DEVICE( WINBOND, WINBOND_83C553, "W83C553") +ENDVENDOR() + +VENDOR( DATABOOK, "Databook" ) + DEVICE( DATABOOK, DATABOOK_87144, "DB87144") +ENDVENDOR() + +VENDOR( PLX, "PLX" ) + DEVICE( PLX, PLX_9050, "PCI9050 I2O") + DEVICE( PLX, PLX_9080, "PCI9080 I2O") +ENDVENDOR() + +VENDOR( MADGE, "Madge Networks" ) + DEVICE( MADGE, MADGE_MK2, "Smart 16/4 BM Mk2 Ringnode") + DEVICE( MADGE, MADGE_C155S, "Collage 155 Server") +ENDVENDOR() + +VENDOR( 3COM, "3Com" ) + DEVICE( 3COM, 3COM_3C339, "3C339 TokenRing") + DEVICE( 3COM, 3COM_3C590, "3C590 10bT") + DEVICE( 3COM, 3COM_3C595TX, "3C595 100bTX") + DEVICE( 3COM, 3COM_3C595T4, "3C595 100bT4") + DEVICE( 3COM, 3COM_3C595MII, "3C595 100b-MII") + DEVICE( 3COM, 3COM_3C900TPO, "3C900 10bTPO") + DEVICE( 3COM, 3COM_3C900COMBO,"3C900 10b Combo") + DEVICE( 3COM, 3COM_3C905TX, "3C905 100bTX") + DEVICE( 3COM, 3COM_3C905T4, "3C905 100bT4") + DEVICE( 3COM, 3COM_3C905B_TX, "3C905B 100bTX") +ENDVENDOR() + +VENDOR( SMC, "SMC" ) + DEVICE( SMC, SMC_EPIC100, "9432 TX") +ENDVENDOR() + +VENDOR( AL, "Acer Labs" ) + DEVICE( AL, AL_M1445, "M1445") + DEVICE( AL, AL_M1449, "M1449") + DEVICE( AL, AL_M1451, "M1451") + DEVICE( AL, AL_M1461, "M1461") + DEVICE( AL, AL_M1489, "M1489") + DEVICE( AL, AL_M1511, "M1511") + DEVICE( AL, AL_M1513, "M1513") + DEVICE( AL, AL_M1521, "M1521") + DEVICE( AL, AL_M1523, "M1523") + DEVICE( AL, AL_M1531, "M1531 Aladdin IV") + DEVICE( AL, AL_M1533, "M1533 Aladdin IV") + DEVICE( AL, AL_M1541, "M1541 Aladdin V") + DEVICE( AL, AL_M1543, "M1543 Aladdin V") + DEVICE( AL, AL_M3307, "M3307 MPEG-1 decoder") + DEVICE( AL, AL_M4803, "M4803") + DEVICE( AL, AL_M5219, "M5219") + DEVICE( AL, AL_M5229, "M5229 TXpro") + DEVICE( AL, AL_M5237, "M5237 USB") + DEVICE( AL, AL_M5243, "M5243 AGP") + DEVICE( AL, AL_M7101, "M7101 PMU") +ENDVENDOR() + +VENDOR( MITSUBISHI, "Mitsubishi" ) +ENDVENDOR() + +VENDOR( SURECOM, "Surecom" ) + DEVICE( SURECOM, SURECOM_NE34, "NE-34PCI LAN") +ENDVENDOR() + +VENDOR( NEOMAGIC, "Neomagic" ) + DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_NM2070, "Magicgraph NM2070") + DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128V, "MagicGraph 128V") + DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128ZV, "MagicGraph 128ZV") + DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_NM2160, "MagicGraph NM2160") + DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128ZVPLUS, "MagicGraph 128ZV+") +ENDVENDOR() + +VENDOR( ASP, "Advanced System Products" ) + DEVICE( ASP, ASP_ABP940, "ABP940") + DEVICE( ASP, ASP_ABP940U, "ABP940U") + DEVICE( ASP, ASP_ABP940UW, "ABP940UW") +ENDVENDOR() + +VENDOR( MACRONIX, "Macronix" ) + DEVICE( MACRONIX, MACRONIX_MX98713,"MX98713") + DEVICE( MACRONIX, MACRONIX_MX987x5,"MX98715 / MX98725") +ENDVENDOR() + +VENDOR( CERN, "CERN" ) + DEVICE( CERN, CERN_SPSB_PMC, "STAR/RD24 SCI-PCI (PMC)") + DEVICE( CERN, CERN_SPSB_PCI, "STAR/RD24 SCI-PCI (PMC)") + DEVICE( CERN, CERN_HIPPI_DST, "HIPPI destination") + DEVICE( CERN, CERN_HIPPI_SRC, "HIPPI source") +ENDVENDOR() + +VENDOR( NVIDIA, "NVidia" ) +ENDVENDOR() + +VENDOR( IMS, "IMS" ) + DEVICE( IMS, IMS_8849, "8849") +ENDVENDOR() + +VENDOR( TEKRAM2, "Tekram" ) + DEVICE( TEKRAM2, TEKRAM2_690c, "DC690c") +ENDVENDOR() + +VENDOR( TUNDRA, "Tundra" ) + DEVICE( TUNDRA, TUNDRA_CA91C042,"CA91C042 Universe") +ENDVENDOR() + +VENDOR( AMCC, "AMCC" ) + DEVICE( AMCC, AMCC_MYRINET, "Myrinet PCI (M2-PCI-32)") + DEVICE( AMCC, AMCC_PARASTATION,"ParaStation Interface") + DEVICE( AMCC, AMCC_S5933, "S5933 PCI44") + DEVICE( AMCC, AMCC_S5933_HEPC3,"S5933 Traquair HEPC3") +ENDVENDOR() + +VENDOR( INTERG, "Intergraphics" ) + DEVICE( INTERG, INTERG_1680, "IGA-1680") + DEVICE( INTERG, INTERG_1682, "IGA-1682") +ENDVENDOR() + +VENDOR( REALTEK, "Realtek" ) + DEVICE( REALTEK, REALTEK_8029, "8029") + DEVICE( REALTEK, REALTEK_8129, "8129") + DEVICE( REALTEK, REALTEK_8139, "8139") +ENDVENDOR() + +VENDOR( TRUEVISION, "Truevision" ) + DEVICE( TRUEVISION, TRUEVISION_T1000,"TARGA 1000") +ENDVENDOR() + +VENDOR( INIT, "Initio Corp" ) + DEVICE( INIT, INIT_320P, "320 P") + DEVICE( INIT, INIT_360P, "360 P") +ENDVENDOR() + +VENDOR( TTI, "Triones Technologies, Inc." ) + DEVICE( TTI, TTI_HPT343, "HPT343") +ENDVENDOR() + +VENDOR( VIA, "VIA Technologies" ) + DEVICE( VIA, VIA_82C505, "VT 82C505") + DEVICE( VIA, VIA_82C561, "VT 82C561") + DEVICE( VIA, VIA_82C586_1, "VT 82C586 Apollo IDE") + DEVICE( VIA, VIA_82C576, "VT 82C576 3V") + DEVICE( VIA, VIA_82C585, "VT 82C585 Apollo VP1/VPX") + DEVICE( VIA, VIA_82C586_0, "VT 82C586 Apollo ISA") + DEVICE( VIA, VIA_82C595, "VT 82C595 Apollo VP2") + DEVICE( VIA, VIA_82C597_0, "VT 82C597 Apollo VP3") + DEVICE( VIA, VIA_82C598_0, "VT 82C598 Apollo MVP3") + DEVICE( VIA, VIA_82C926, "VT 82C926 Amazon") + DEVICE( VIA, VIA_82C416, "VT 82C416MV") + DEVICE( VIA, VIA_82C595_97, "VT 82C595 Apollo VP2/97") + DEVICE( VIA, VIA_82C586_2, "VT 82C586 Apollo USB") + DEVICE( VIA, VIA_82C586_3, "VT 82C586B Apollo ACPI") + DEVICE( VIA, VIA_86C100A, "VT 86C100A") + DEVICE( VIA, VIA_82C597_1, "VT 82C597 Apollo VP3 AGP") + DEVICE( VIA, VIA_82C598_1, "VT 82C598 Apollo MVP3 AGP") +ENDVENDOR() + +VENDOR( SMC2, "SMC" ) + DEVICE( SMC2, SMC2_1211TX, "1211 TX") +ENDVENDOR() + +VENDOR( VORTEX, "VORTEX" ) + DEVICE( VORTEX, VORTEX_GDT60x0, "GDT 60x0") + DEVICE( VORTEX, VORTEX_GDT6000B,"GDT 6000b") + DEVICE( VORTEX, VORTEX_GDT6x10, "GDT 6110/6510") + DEVICE( VORTEX, VORTEX_GDT6x20, "GDT 6120/6520") + DEVICE( VORTEX, VORTEX_GDT6530, "GDT 6530") + DEVICE( VORTEX, VORTEX_GDT6550, "GDT 6550") + DEVICE( VORTEX, VORTEX_GDT6x17, "GDT 6117/6517") + DEVICE( VORTEX, VORTEX_GDT6x27, "GDT 6127/6527") + DEVICE( VORTEX, VORTEX_GDT6537, "GDT 6537") + DEVICE( VORTEX, VORTEX_GDT6557, "GDT 6557") + DEVICE( VORTEX, VORTEX_GDT6x15, "GDT 6115/6515") + DEVICE( VORTEX, VORTEX_GDT6x25, "GDT 6125/6525") + DEVICE( VORTEX, VORTEX_GDT6535, "GDT 6535") + DEVICE( VORTEX, VORTEX_GDT6555, "GDT 6555") + DEVICE( VORTEX, VORTEX_GDT6x17RP,"GDT 6117RP/6517RP") + DEVICE( VORTEX, VORTEX_GDT6x27RP,"GDT 6127RP/6527RP") + DEVICE( VORTEX, VORTEX_GDT6537RP,"GDT 6537RP") + DEVICE( VORTEX, VORTEX_GDT6557RP,"GDT 6557RP") + DEVICE( VORTEX, VORTEX_GDT6x11RP,"GDT 6111RP/6511RP") + DEVICE( VORTEX, VORTEX_GDT6x21RP,"GDT 6121RP/6521RP") + DEVICE( VORTEX, VORTEX_GDT6x17RP1,"GDT 6117RP1/6517RP1") + DEVICE( VORTEX, VORTEX_GDT6x27RP1,"GDT 6127RP1/6527RP1") + DEVICE( VORTEX, VORTEX_GDT6537RP1,"GDT 6537RP1") + DEVICE( VORTEX, VORTEX_GDT6557RP1,"GDT 6557RP1") + DEVICE( VORTEX, VORTEX_GDT6x11RP1,"GDT 6111RP1/6511RP1") + DEVICE( VORTEX, VORTEX_GDT6x21RP1,"GDT 6121RP1/6521RP1") + DEVICE( VORTEX, VORTEX_GDT6x17RP2,"GDT 6117RP2/6517RP2") + DEVICE( VORTEX, VORTEX_GDT6x27RP2,"GDT 6127RP2/6527RP2") + DEVICE( VORTEX, VORTEX_GDT6537RP2,"GDT 6537RP2") + DEVICE( VORTEX, VORTEX_GDT6557RP2,"GDT 6557RP2") + DEVICE( VORTEX, VORTEX_GDT6x11RP2,"GDT 6111RP2/6511RP2") + DEVICE( VORTEX, VORTEX_GDT6x21RP2,"GDT 6121RP2/6521RP2") +ENDVENDOR() + +VENDOR( EF, "Efficient Networks" ) + DEVICE( EF, EF_ATM_FPGA, "155P-MF1 (FPGA)") + DEVICE( EF, EF_ATM_ASIC, "155P-MF1 (ASIC)") +ENDVENDOR() + +VENDOR( FORE, "Fore Systems" ) + DEVICE( FORE, FORE_PCA200PC, "PCA-200PC") + DEVICE( FORE, FORE_PCA200E, "PCA-200E") +ENDVENDOR() + +VENDOR( IMAGINGTECH, "Imaging Technology" ) + DEVICE( IMAGINGTECH, IMAGINGTECH_ICPCI, "MVC IC-PCI") +ENDVENDOR() + +VENDOR( PHILIPS, "Philips" ) + DEVICE( PHILIPS, PHILIPS_SAA7145,"SAA7145") + DEVICE( PHILIPS, PHILIPS_SAA7146,"SAA7146") +ENDVENDOR() + +VENDOR( CYCLONE, "Cyclone" ) + DEVICE( CYCLONE, CYCLONE_SDK, "SDK") +ENDVENDOR() + +VENDOR( ALLIANCE, "Alliance" ) + DEVICE( ALLIANCE, ALLIANCE_PROMOTIO, "Promotion-6410") + DEVICE( ALLIANCE, ALLIANCE_PROVIDEO, "Provideo") + DEVICE( ALLIANCE, ALLIANCE_AT24, "AT24") + DEVICE( ALLIANCE, ALLIANCE_AT3D, "AT3D") +ENDVENDOR() + +VENDOR( VMIC, "VMIC" ) + DEVICE( VMIC, VMIC_VME, "VMIVME-7587") +ENDVENDOR() + +VENDOR( DIGI, "Digi Intl." ) + DEVICE( DIGI, DIGI_EPC, "AccelPort EPC") + DEVICE( DIGI, DIGI_RIGHTSWITCH, "RightSwitch SE-6") + DEVICE( DIGI, DIGI_XEM, "AccelPort Xem") + DEVICE( DIGI, DIGI_XR, "AccelPort Xr") + DEVICE( DIGI, DIGI_CX, "AccelPort C/X") + DEVICE( DIGI, DIGI_XRJ, "AccelPort Xr/J") + DEVICE( DIGI, DIGI_EPCJ, "AccelPort EPC/J") + DEVICE( DIGI, DIGI_XR_920, "AccelPort Xr 920") +ENDVENDOR() + +VENDOR( MUTECH, "Mutech" ) + DEVICE( MUTECH, MUTECH_MV1000, "MV-1000") +ENDVENDOR() + +VENDOR( RENDITION, "Rendition" ) + DEVICE( RENDITION, RENDITION_VERITE,"Verite 1000") + DEVICE( RENDITION, RENDITION_VERITE2100,"Verite 2100") +ENDVENDOR() + +VENDOR( TOSHIBA, "Toshiba" ) + DEVICE( TOSHIBA, TOSHIBA_601, "Laptop") + DEVICE( TOSHIBA, TOSHIBA_TOPIC95,"ToPIC95") + DEVICE( TOSHIBA, TOSHIBA_TOPIC97,"ToPIC97") +ENDVENDOR() + +VENDOR( RICOH, "Ricoh" ) + DEVICE( RICOH, RICOH_RL5C466, "RL5C466") +ENDVENDOR() + +VENDOR( ARTOP, "Artop Electronics" ) + DEVICE( ARTOP, ARTOP_ATP8400, "ATP8400") + DEVICE( ARTOP, ARTOP_ATP850UF, "ATP850UF") +ENDVENDOR() + +VENDOR( ZEITNET, "ZeitNet" ) + DEVICE( ZEITNET, ZEITNET_1221, "1221") + DEVICE( ZEITNET, ZEITNET_1225, "1225") +ENDVENDOR() + +VENDOR( OMEGA, "Omega Micro" ) + DEVICE( OMEGA, OMEGA_82C092G, "82C092G") +ENDVENDOR() + +VENDOR( LITEON, "LiteOn" ) + DEVICE( LITEON, LITEON_LNE100TX,"LNE100TX") +ENDVENDOR() + +VENDOR( NP, "Network Peripherals" ) + DEVICE( NP, NP_PCI_FDDI, "NP-PCI") +ENDVENDOR() + +VENDOR( ATT, "Lucent Microelectronics" ) + DEVICE( ATT, ATT_L56XMF, "L56xMF") +ENDVENDOR() + +VENDOR( SPECIALIX, "Specialix" ) + DEVICE( SPECIALIX, SPECIALIX_IO8, "IO8+/PCI") + DEVICE( SPECIALIX, SPECIALIX_XIO, "XIO/SIO host") + DEVICE( SPECIALIX, SPECIALIX_RIO, "RIO host") +ENDVENDOR() + +VENDOR( AURAVISION, "Auravision" ) + DEVICE( AURAVISION, AURAVISION_VXP524,"VXP524") +ENDVENDOR() + +VENDOR( IKON, "Ikon" ) + DEVICE( IKON, IKON_10115, "10115 Greensheet") + DEVICE( IKON, IKON_10117, "10117 Greensheet") +ENDVENDOR() + +VENDOR( ZORAN, "Zoran" ) + DEVICE( ZORAN, ZORAN_36057, "ZR36057") + DEVICE( ZORAN, ZORAN_36120, "ZR36120") +ENDVENDOR() + +VENDOR( KINETIC, "Kinetic" ) + DEVICE( KINETIC, KINETIC_2915, "2915 CAMAC") +ENDVENDOR() + +VENDOR( COMPEX, "Compex" ) + DEVICE( COMPEX, COMPEX_ENET100VG4, "Readylink ENET100-VG4") + DEVICE( COMPEX, COMPEX_RL2000, "ReadyLink 2000") +ENDVENDOR() + +VENDOR( RP, "Comtrol" ) + DEVICE( RP, RP32INTF, "RocketPort 32 Intf") + DEVICE( RP, RP8INTF, "RocketPort 8 Intf") + DEVICE( RP, RP16INTF, "RocketPort 16 Intf") + DEVICE( RP, RP4QUAD, "Rocketport 4 Quad") + DEVICE( RP, RP8OCTA, "RocketPort 8 Oct") + DEVICE( RP, RP8J, "RocketPort 8 J") + DEVICE( RP, RPP4, "RocketPort Plus 4 Quad") + DEVICE( RP, RPP8, "RocketPort Plus 8 Oct") + DEVICE( RP, RP8M, "RocketModem 8 J") +ENDVENDOR() + +VENDOR( CYCLADES, "Cyclades" ) + DEVICE( CYCLADES, CYCLOM_Y_Lo, "Cyclom-Y below 1Mbyte") + DEVICE( CYCLADES, CYCLOM_Y_Hi, "Cyclom-Y above 1Mbyte") + DEVICE( CYCLADES, CYCLOM_4Y_Lo, "Cyclom-4Y below 1Mbyte") + DEVICE( CYCLADES, CYCLOM_4Y_Hi, "Cyclom-4Y above 1Mbyte") + DEVICE( CYCLADES, CYCLOM_8Y_Lo, "Cyclom-8Y below 1Mbyte") + DEVICE( CYCLADES, CYCLOM_8Y_Hi, "Cyclom-8Y above 1Mbyte") + DEVICE( CYCLADES, CYCLOM_Z_Lo, "Cyclades-Z below 1Mbyte") + DEVICE( CYCLADES, CYCLOM_Z_Hi, "Cyclades-Z above 1Mbyte") +ENDVENDOR() + +VENDOR( ESSENTIAL, "Essential Communications" ) + DEVICE( ESSENTIAL, ESSENTIAL_ROADRUNNER,"Roadrunner serial HIPPI") +ENDVENDOR() + +VENDOR( O2, "O2 Micro" ) + DEVICE( O2, O2_6832, "6832") +ENDVENDOR() + +VENDOR( 3DFX, "3Dfx" ) + DEVICE( 3DFX, 3DFX_VOODOO, "Voodoo") + DEVICE( 3DFX, 3DFX_VOODOO2, "Voodoo2") + DEVICE( 3DFX, 3DFX_BANSHEE, "Banshee") + DEVICE( 3DFX, 3DFX_VOODOO3, "Voodoo3") +ENDVENDOR() + +VENDOR( SIGMADES, "Sigma Designs" ) + DEVICE( SIGMADES, SIGMADES_6425, "REALmagic64/GX") +ENDVENDOR() + +VENDOR( AVM, "AVM" ) + DEVICE( AVM, AVM_A1, "A1 (Fritz)") +ENDVENDOR() + +VENDOR( CCUBE, "C-Cube" ) +ENDVENDOR() + +VENDOR( DIPIX, "Dipix" ) +ENDVENDOR() + +VENDOR( STALLION, "Stallion" ) + DEVICE( STALLION, STALLION_ECHPCI832,"EasyConnection 8/32") + DEVICE( STALLION, STALLION_ECHPCI864,"EasyConnection 8/64") + DEVICE( STALLION, STALLION_EIOPCI,"EasyIO") +ENDVENDOR() + +VENDOR( OPTIBASE, "Optibase" ) + DEVICE( OPTIBASE, OPTIBASE_FORGE, "MPEG Forge") + DEVICE( OPTIBASE, OPTIBASE_FUSION,"MPEG Fusion") + DEVICE( OPTIBASE, OPTIBASE_VPLEX, "VideoPlex") + DEVICE( OPTIBASE, OPTIBASE_VPLEXCC,"VideoPlex CC") + DEVICE( OPTIBASE, OPTIBASE_VQUEST,"VideoQuest") +ENDVENDOR() + +VENDOR( SATSAGEM, "SatSagem" ) + DEVICE( SATSAGEM, SATSAGEM_PCR2101,"PCR2101 DVB receiver") + DEVICE( SATSAGEM, SATSAGEM_TELSATTURBO,"Telsat Turbo DVB") +ENDVENDOR() + +VENDOR( HUGHES, "Hughes" ) + DEVICE( HUGHES, HUGHES_DIRECPC, "DirecPC") +ENDVENDOR() + +VENDOR( ENSONIQ, "Ensoniq" ) + DEVICE( ENSONIQ, ENSONIQ_ES1371, "ES1371") + DEVICE( ENSONIQ, ENSONIQ_AUDIOPCI,"AudioPCI") +ENDVENDOR() + +VENDOR( ALTEON, "Alteon" ) + DEVICE( ALTEON, ALTEON_ACENIC, "AceNIC") +ENDVENDOR() + +VENDOR( PICTUREL, "Picture Elements" ) + DEVICE( PICTUREL, PICTUREL_PCIVST,"PCIVST") +ENDVENDOR() + +VENDOR( NVIDIA_SGS, "NVidia/SGS Thomson" ) + DEVICE( NVIDIA_SGS, NVIDIA_SGS_RIVA128, "Riva 128") +ENDVENDOR() + +VENDOR( CBOARDS, "ComputerBoards" ) + DEVICE( CBOARDS, CBOARDS_DAS1602_16,"DAS1602/16") +ENDVENDOR() + +VENDOR( MOTOROLA_OOPS, "Motorola" ) + DEVICE( MOTOROLA_OOPS, MOTOROLA_FALCON,"Falcon") +ENDVENDOR() + +VENDOR( SYMPHONY, "Symphony" ) + DEVICE( SYMPHONY, SYMPHONY_101, "82C101") +ENDVENDOR() + +VENDOR( TEKRAM, "Tekram" ) + DEVICE( TEKRAM, TEKRAM_DC290, "DC-290") +ENDVENDOR() + +VENDOR( 3DLABS, "3Dlabs" ) + DEVICE( 3DLABS, 3DLABS_300SX, "GLINT 300SX") + DEVICE( 3DLABS, 3DLABS_500TX, "GLINT 500TX") + DEVICE( 3DLABS, 3DLABS_DELTA, "GLINT Delta") + DEVICE( 3DLABS, 3DLABS_PERMEDIA,"PERMEDIA") + DEVICE( 3DLABS, 3DLABS_MX, "GLINT MX") +ENDVENDOR() + +VENDOR( AVANCE, "Avance" ) + DEVICE( AVANCE, AVANCE_ALG2064, "ALG2064i") + DEVICE( AVANCE, AVANCE_2302, "ALG-2302") +ENDVENDOR() + +VENDOR( NETVIN, "NetVin" ) + DEVICE( NETVIN, NETVIN_NV5000SC,"NV5000") +ENDVENDOR() + +VENDOR( S3, "S3 Inc." ) + DEVICE( S3, S3_PLATO_PXS, "PLATO/PX (system)") + DEVICE( S3, S3_ViRGE, "ViRGE") + DEVICE( S3, S3_TRIO, "Trio32/Trio64") + DEVICE( S3, S3_AURORA64VP, "Aurora64V+") + DEVICE( S3, S3_TRIO64UVP, "Trio64UV+") + DEVICE( S3, S3_ViRGE_VX, "ViRGE/VX") + DEVICE( S3, S3_868, "Vision 868") + DEVICE( S3, S3_928, "Vision 928-P") + DEVICE( S3, S3_864_1, "Vision 864-P") + DEVICE( S3, S3_864_2, "Vision 864-P") + DEVICE( S3, S3_964_1, "Vision 964-P") + DEVICE( S3, S3_964_2, "Vision 964-P") + DEVICE( S3, S3_968, "Vision 968") + DEVICE( S3, S3_TRIO64V2, "Trio64V2/DX or /GX") + DEVICE( S3, S3_PLATO_PXG, "PLATO/PX (graphics)") + DEVICE( S3, S3_ViRGE_DXGX, "ViRGE/DX or /GX") + DEVICE( S3, S3_ViRGE_GX2, "ViRGE/GX2") + DEVICE( S3, S3_ViRGE_MX, "ViRGE/MX") + DEVICE( S3, S3_ViRGE_MXP, "ViRGE/MX+") + DEVICE( S3, S3_ViRGE_MXPMV, "ViRGE/MX+MV") + DEVICE( S3, S3_SONICVIBES, "SonicVibes") +ENDVENDOR() + +VENDOR( DCI, "Decision Computer Int." ) + DEVICE( DCI, DCI_PCCOM4, "PC COM PCI Bus 4 port serial Adapter") +ENDVENDOR() + +VENDOR( GENROCO, "Genroco" ) + DEVICE( GENROCO, GENROCO_HFP832, "TURBOstor HFP832") +ENDVENDOR() + +VENDOR( INTEL, "Intel" ) + DEVICE( INTEL, INTEL_82375, "82375EB") + DEVICE( INTEL, INTEL_82424, "82424ZX Saturn") + DEVICE( INTEL, INTEL_82378, "82378IB") + DEVICE( INTEL, INTEL_82430, "82430ZX Aries") + DEVICE( INTEL, INTEL_82434, "82434LX Mercury/Neptune") + DEVICE( INTEL, INTEL_82092AA_0,"82092AA PCMCIA bridge") + DEVICE( INTEL, INTEL_82092AA_1,"82092AA EIDE") + DEVICE( INTEL, INTEL_7116, "SAA7116") + DEVICE( INTEL, INTEL_82596, "82596") + DEVICE( INTEL, INTEL_82865, "82865") + DEVICE( INTEL, INTEL_82557, "EtherExpress Pro100") + DEVICE( INTEL, INTEL_82437, "82437") + DEVICE( INTEL, INTEL_82371FB_0,"82371FB PIIX ISA") + DEVICE( INTEL, INTEL_82371FB_1,"82371FB PIIX IDE") + DEVICE( INTEL, INTEL_82371MX, "430MX - 82371MX MPIIX") + DEVICE( INTEL, INTEL_82437MX, "430MX - 82437MX MTSC") + DEVICE( INTEL, INTEL_82441, "82441FX Natoma") + DEVICE( INTEL, INTEL_82380FB, "82380FB Mobile") + DEVICE( INTEL, INTEL_82439, "82439HX Triton II") + DEVICE( INTEL, INTEL_82371SB_0,"82371SB PIIX3 ISA") + DEVICE( INTEL, INTEL_82371SB_1,"82371SB PIIX3 IDE") + DEVICE( INTEL, INTEL_82371SB_2,"82371SB PIIX3 USB") + DEVICE( INTEL, INTEL_82437VX, "82437VX Triton II") + DEVICE( INTEL, INTEL_82439TX, "82439TX") + DEVICE( INTEL, INTEL_82371AB_0,"82371AB PIIX4 ISA") + DEVICE( INTEL, INTEL_82371AB, "82371AB PIIX4 IDE") + DEVICE( INTEL, INTEL_82371AB_2,"82371AB PIIX4 USB") + DEVICE( INTEL, INTEL_82371AB_3,"82371AB PIIX4 ACPI") + DEVICE( INTEL, INTEL_82443LX_0,"440LX - 82443LX PAC Host") + DEVICE( INTEL, INTEL_82443LX_1,"440LX - 82443LX PAC AGP") + DEVICE( INTEL, INTEL_82443BX_0,"440BX - 82443BX Host") + DEVICE( INTEL, INTEL_82443BX_1,"440BX - 82443BX AGP") + DEVICE( INTEL, INTEL_82443BX_2,"440BX - 82443BX Host (no AGP)") + DEVICE( INTEL, INTEL_P6, "Orion P6") + DEVICE( INTEL, INTEL_82450GX, "82450GX Orion P6") +ENDVENDOR() + +VENDOR( KTI, "KTI" ) + DEVICE( KTI, KTI_ET32P2, "ET32P2") +ENDVENDOR() + +VENDOR( ADAPTEC, "Adaptec" ) + DEVICE( ADAPTEC, ADAPTEC_7810, "AIC-7810 RAID") + DEVICE( ADAPTEC, ADAPTEC_7821, "AIC-7860") + DEVICE( ADAPTEC, ADAPTEC_38602, "AIC-7860") + DEVICE( ADAPTEC, ADAPTEC_7850, "AIC-7850") + DEVICE( ADAPTEC, ADAPTEC_7855, "AIC-7855") + DEVICE( ADAPTEC, ADAPTEC_5800, "AIC-5800") + DEVICE( ADAPTEC, ADAPTEC_3860, "AIC-7860") + DEVICE( ADAPTEC, ADAPTEC_7860, "AIC-7860") + DEVICE( ADAPTEC, ADAPTEC_7861, "AIC-7861") + DEVICE( ADAPTEC, ADAPTEC_7870, "AIC-7870") + DEVICE( ADAPTEC, ADAPTEC_7871, "AIC-7871") + DEVICE( ADAPTEC, ADAPTEC_7872, "AIC-7872") + DEVICE( ADAPTEC, ADAPTEC_7873, "AIC-7873") + DEVICE( ADAPTEC, ADAPTEC_7874, "AIC-7874") + DEVICE( ADAPTEC, ADAPTEC_7895, "AIC-7895U") + DEVICE( ADAPTEC, ADAPTEC_7880, "AIC-7880U") + DEVICE( ADAPTEC, ADAPTEC_7881, "AIC-7881U") + DEVICE( ADAPTEC, ADAPTEC_7882, "AIC-7882U") + DEVICE( ADAPTEC, ADAPTEC_7883, "AIC-7883U") + DEVICE( ADAPTEC, ADAPTEC_7884, "AIC-7884U") + DEVICE( ADAPTEC, ADAPTEC_7885, "AIC-7885U") + DEVICE( ADAPTEC, ADAPTEC_7886, "AIC-7886U") + DEVICE( ADAPTEC, ADAPTEC_7887, "AIC-7887U") + DEVICE( ADAPTEC, ADAPTEC_7888, "AIC-7888U") + DEVICE( ADAPTEC, ADAPTEC_1030, "ABA-1030 DVB receiver") +ENDVENDOR() + +VENDOR( ADAPTEC2, "Adaptec" ) + DEVICE( ADAPTEC2, ADAPTEC2_2940U2,"AHA-2940U2") + DEVICE( ADAPTEC2, ADAPTEC2_2930U2,"AHA-2930U2") + DEVICE( ADAPTEC2, ADAPTEC2_7890B, "AIC-7890/1") + DEVICE( ADAPTEC2, ADAPTEC2_7890, "AIC-7890/1") + DEVICE( ADAPTEC2, ADAPTEC2_3940U2,"AHA-3940U2") + DEVICE( ADAPTEC2, ADAPTEC2_3950U2D,"AHA-3950U2D") + DEVICE( ADAPTEC2, ADAPTEC2_7896, "AIC-7896/7") + DEVICE( ADAPTEC2, ADAPTEC2_7892A, "AIC-7892") + DEVICE( ADAPTEC2, ADAPTEC2_7892B, "AIC-7892") + DEVICE( ADAPTEC2, ADAPTEC2_7892D, "AIC-7892") + DEVICE( ADAPTEC2, ADAPTEC2_7892P, "AIC-7892") + DEVICE( ADAPTEC2, ADAPTEC2_7899A, "AIC-7899") + DEVICE( ADAPTEC2, ADAPTEC2_7899B, "AIC-7899") + DEVICE( ADAPTEC2, ADAPTEC2_7899D, "AIC-7899") + DEVICE( ADAPTEC2, ADAPTEC2_7899P, "AIC-7899") +ENDVENDOR() + +VENDOR( ATRONICS, "Atronics" ) + DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL") +ENDVENDOR() + +VENDOR( TIGERJET, "TigerJet" ) + DEVICE( TIGERJET, TIGERJET_300, "Tiger300 ISDN") +ENDVENDOR() + +VENDOR( ARK, "ARK" ) + DEVICE( ARK, ARK_STING, "Stingray") + DEVICE( ARK, ARK_STINGARK, "Stingray ARK 2000PV") + DEVICE( ARK, ARK_2000MT, "2000MT") +ENDVENDOR() + +#undef VENDOR +#undef ENDVENDOR +#undef DEVICE diff --git a/drivers/pci/names.c b/drivers/pci/names.c index 0ad2c018e653..1a1a9aac5a81 100644 --- a/drivers/pci/names.c +++ b/drivers/pci/names.c @@ -18,625 +18,84 @@ #include -struct pci_dev_info { - unsigned short vendor; /* vendor id */ - unsigned short device; /* device id */ - - const char *name; /* device name */ +struct pci_device_info { + unsigned short device; + unsigned short seen; + const char *name; }; -#define DEVICE(vid,did,name) \ - {PCI_VENDOR_ID_##vid, PCI_DEVICE_ID_##did, (name)} +struct pci_vendor_info { + unsigned short vendor; + unsigned short nr; + const char *name; + struct pci_device_info *devices; +}; /* - * Sorted in ascending order by vendor and device. - * Use binary search for lookup. If you add a device make sure - * it is sequential by both vendor and device id. + * This is ridiculous, but we want the strings in + * the .init section so that they don't take up + * real memory.. Parse the same file multiple times + * to get all the info. */ -static __initdata struct pci_dev_info dev_info[] = { - DEVICE( COMPAQ, COMPAQ_1280, "QVision 1280/p"), - DEVICE( COMPAQ, COMPAQ_SMART2P, "Smart-2/P RAID Controller"), - DEVICE( COMPAQ, COMPAQ_NETEL100,"Netelligent 10/100"), - DEVICE( COMPAQ, COMPAQ_NETEL10, "Netelligent 10"), - DEVICE( COMPAQ, COMPAQ_NETFLEX3I,"NetFlex 3"), - DEVICE( COMPAQ, COMPAQ_NETEL100D,"Netelligent 10/100 Dual"), - DEVICE( COMPAQ, COMPAQ_NETEL100PI,"Netelligent 10/100 ProLiant"), - DEVICE( COMPAQ, COMPAQ_NETEL100I,"Netelligent 10/100 Integrated"), - DEVICE( COMPAQ, COMPAQ_THUNDER, "ThunderLAN"), - DEVICE( COMPAQ, COMPAQ_NETFLEX3B,"NetFlex 3 BNC"), - DEVICE( NCR, NCR_53C810, "53c810"), - DEVICE( NCR, NCR_53C820, "53c820"), - DEVICE( NCR, NCR_53C825, "53c825"), - DEVICE( NCR, NCR_53C815, "53c815"), - DEVICE( NCR, NCR_53C860, "53c860"), - DEVICE( NCR, NCR_53C896, "53c896"), - DEVICE( NCR, NCR_53C895, "53c895"), - DEVICE( NCR, NCR_53C885, "53c885"), - DEVICE( NCR, NCR_53C875, "53c875"), - DEVICE( NCR, NCR_53C875J, "53c875J"), - DEVICE( ATI, ATI_68800, "68800AX"), - DEVICE( ATI, ATI_215CT222, "215CT222"), - DEVICE( ATI, ATI_210888CX, "210888CX"), - DEVICE( ATI, ATI_215GB, "Mach64 GB"), - DEVICE( ATI, ATI_215GD, "Mach64 GD (Rage Pro)"), - DEVICE( ATI, ATI_215GI, "Mach64 GI (Rage Pro)"), - DEVICE( ATI, ATI_215GP, "Mach64 GP (Rage Pro)"), - DEVICE( ATI, ATI_215GQ, "Mach64 GQ (Rage Pro)"), - DEVICE( ATI, ATI_215GT, "Mach64 GT (Rage II)"), - DEVICE( ATI, ATI_215GTB, "Mach64 GT (Rage II)"), - DEVICE( ATI, ATI_210888GX, "210888GX"), - DEVICE( ATI, ATI_215LG, "Mach64 LG (Rage Pro)"), - DEVICE( ATI, ATI_264LT, "Mach64 LT"), - DEVICE( ATI, ATI_264VT, "Mach64 VT"), - DEVICE( VLSI, VLSI_82C592, "82C592-FC1"), - DEVICE( VLSI, VLSI_82C593, "82C593-FC1"), - DEVICE( VLSI, VLSI_82C594, "82C594-AFC2"), - DEVICE( VLSI, VLSI_82C597, "82C597-AFC2"), - DEVICE( VLSI, VLSI_82C541, "82C541 Lynx"), - DEVICE( VLSI, VLSI_82C543, "82C543 Lynx ISA"), - DEVICE( VLSI, VLSI_82C532, "82C532"), - DEVICE( VLSI, VLSI_82C534, "82C534"), - DEVICE( VLSI, VLSI_82C535, "82C535"), - DEVICE( VLSI, VLSI_82C147, "82C147"), - DEVICE( VLSI, VLSI_VAS96011, "VAS96011 (Golden Gate II)"), - DEVICE( ADL, ADL_2301, "2301"), - DEVICE( NS, NS_87415, "87415"), - DEVICE( NS, NS_87410, "87410"), - DEVICE( TSENG, TSENG_W32P_2, "ET4000W32P"), - DEVICE( TSENG, TSENG_W32P_b, "ET4000W32P rev B"), - DEVICE( TSENG, TSENG_W32P_c, "ET4000W32P rev C"), - DEVICE( TSENG, TSENG_W32P_d, "ET4000W32P rev D"), - DEVICE( TSENG, TSENG_ET6000, "ET6000"), - DEVICE( WEITEK, WEITEK_P9000, "P9000"), - DEVICE( WEITEK, WEITEK_P9100, "P9100"), - DEVICE( DEC, DEC_BRD, "DC21050"), - DEVICE( DEC, DEC_TULIP, "DC21040"), - DEVICE( DEC, DEC_TGA, "TGA"), - DEVICE( DEC, DEC_TULIP_FAST, "DC21140"), - DEVICE( DEC, DEC_TGA2, "TGA2"), - DEVICE( DEC, DEC_FDDI, "DEFPA"), - DEVICE( DEC, DEC_TULIP_PLUS, "DC21041"), - DEVICE( DEC, DEC_21142, "DC21142"), - DEVICE( DEC, DEC_21052, "DC21052"), - DEVICE( DEC, DEC_21150, "DC21150"), - DEVICE( DEC, DEC_21152, "DC21152"), - DEVICE( DEC, DEC_21153, "DC21153"), - DEVICE( DEC, DEC_21154, "DC21154"), - DEVICE( CIRRUS, CIRRUS_7548, "GD 7548"), - DEVICE( CIRRUS, CIRRUS_5430, "GD 5430"), - DEVICE( CIRRUS, CIRRUS_5434_4, "GD 5434"), - DEVICE( CIRRUS, CIRRUS_5434_8, "GD 5434"), - DEVICE( CIRRUS, CIRRUS_5436, "GD 5436"), - DEVICE( CIRRUS, CIRRUS_5446, "GD 5446"), - DEVICE( CIRRUS, CIRRUS_5480, "GD 5480"), - DEVICE( CIRRUS, CIRRUS_5464, "GD 5464"), - DEVICE( CIRRUS, CIRRUS_5465, "GD 5465"), - DEVICE( CIRRUS, CIRRUS_6729, "CL 6729"), - DEVICE( CIRRUS, CIRRUS_6832, "PD 6832"), - DEVICE( CIRRUS, CIRRUS_7542, "CL 7542"), - DEVICE( CIRRUS, CIRRUS_7543, "CL 7543"), - DEVICE( CIRRUS, CIRRUS_7541, "CL 7541"), - DEVICE( IBM, IBM_FIRE_CORAL, "Fire Coral"), - DEVICE( IBM, IBM_TR, "Token Ring"), - DEVICE( IBM, IBM_82G2675, "82G2675"), - DEVICE( IBM, IBM_MCA, "MicroChannel"), - DEVICE( IBM, IBM_82351, "82351"), - DEVICE( IBM, IBM_PYTHON, "Python"), - DEVICE( IBM, IBM_SERVERAID, "ServeRAID"), - DEVICE( IBM, IBM_TR_WAKE, "Wake On LAN Token Ring"), - DEVICE( IBM, IBM_MPIC, "MPIC-2 Interrupt Controller"), - DEVICE( IBM, IBM_3780IDSP, "MWave DSP"), - DEVICE( IBM, IBM_MPIC_2, "MPIC-2 ASIC Interrupt Controller"), - DEVICE( WD, WD_7197, "WD 7197"), - DEVICE( AMD, AMD_LANCE, "79C970"), - DEVICE( AMD, AMD_SCSI, "53C974"), - DEVICE( TRIDENT, TRIDENT_9397, "Cyber9397"), - DEVICE( TRIDENT, TRIDENT_9420, "TG 9420"), - DEVICE( TRIDENT, TRIDENT_9440, "TG 9440"), - DEVICE( TRIDENT, TRIDENT_9660, "TG 9660 / Cyber9385"), - DEVICE( TRIDENT, TRIDENT_9750, "Image 975"), - DEVICE( AI, AI_M1435, "M1435"), - DEVICE( MATROX, MATROX_MGA_2, "Atlas PX2085"), - DEVICE( MATROX, MATROX_MIL, "Millennium"), - DEVICE( MATROX, MATROX_MYS, "Mystique"), - DEVICE( MATROX, MATROX_MIL_2, "Millennium II"), - DEVICE( MATROX, MATROX_MIL_2_AGP,"Millennium II AGP"), - DEVICE( MATROX, MATROX_G200_PCI,"Matrox G200 PCI"), - DEVICE( MATROX, MATROX_G200_AGP,"Matrox G200 AGP"), - DEVICE( MATROX, MATROX_MGA_IMP, "MGA Impression"), - DEVICE( MATROX, MATROX_G100_MM, "Matrox G100 multi monitor"), - DEVICE( MATROX, MATROX_G100_AGP,"Matrox G100 AGP"), - DEVICE( CT, CT_65545, "65545"), - DEVICE( CT, CT_65548, "65548"), - DEVICE( CT, CT_65550, "65550"), - DEVICE( CT, CT_65554, "65554"), - DEVICE( CT, CT_65555, "65555"), - DEVICE( MIRO, MIRO_36050, "ZR36050"), - DEVICE( NEC, NEC_PCX2, "PowerVR PCX2"), - DEVICE( FD, FD_36C70, "TMC-18C30"), - DEVICE( SI, SI_5591_AGP, "5591/5592 AGP"), - DEVICE( SI, SI_6202, "6202"), - DEVICE( SI, SI_503, "85C503"), - DEVICE( SI, SI_ACPI, "ACPI"), - DEVICE( SI, SI_5597_VGA, "5597/5598 VGA"), - DEVICE( SI, SI_6205, "6205"), - DEVICE( SI, SI_501, "85C501"), - DEVICE( SI, SI_496, "85C496"), - DEVICE( SI, SI_601, "85C601"), - DEVICE( SI, SI_5107, "5107"), - DEVICE( SI, SI_5511, "85C5511"), - DEVICE( SI, SI_5513, "85C5513"), - DEVICE( SI, SI_5571, "5571"), - DEVICE( SI, SI_5591, "5591/5592 Host"), - DEVICE( SI, SI_5597, "5597/5598 Host"), - DEVICE( SI, SI_7001, "7001 USB"), - DEVICE( HP, HP_J2585A, "J2585A"), - DEVICE( HP, HP_J2585B, "J2585B (Lassen)"), - DEVICE( PCTECH, PCTECH_RZ1000, "RZ1000 (buggy)"), - DEVICE( PCTECH, PCTECH_RZ1001, "RZ1001 (buggy?)"), - DEVICE( PCTECH, PCTECH_SAMURAI_0,"Samurai 0"), - DEVICE( PCTECH, PCTECH_SAMURAI_1,"Samurai 1"), - DEVICE( PCTECH, PCTECH_SAMURAI_IDE,"Samurai IDE"), - DEVICE( DPT, DPT, "SmartCache/Raid"), - DEVICE( OPTI, OPTI_92C178, "92C178"), - DEVICE( OPTI, OPTI_82C557, "82C557 Viper-M"), - DEVICE( OPTI, OPTI_82C558, "82C558 Viper-M ISA+IDE"), - DEVICE( OPTI, OPTI_82C621, "82C621"), - DEVICE( OPTI, OPTI_82C700, "82C700"), - DEVICE( OPTI, OPTI_82C701, "82C701 FireStar Plus"), - DEVICE( OPTI, OPTI_82C814, "82C814 Firebridge 1"), - DEVICE( OPTI, OPTI_82C822, "82C822"), - DEVICE( OPTI, OPTI_82C825, "82C825 Firebridge 2"), - DEVICE( SGS, SGS_2000, "STG 2000X"), - DEVICE( SGS, SGS_1764, "STG 1764X"), - DEVICE( BUSLOGIC, BUSLOGIC_MULTIMASTER_NC, "MultiMaster NC"), - DEVICE( BUSLOGIC, BUSLOGIC_MULTIMASTER, "MultiMaster"), - DEVICE( BUSLOGIC, BUSLOGIC_FLASHPOINT, "FlashPoint"), - DEVICE( TI, TI_TVP4010, "TVP4010 Permedia"), - DEVICE( TI, TI_TVP4020, "TVP4020 Permedia 2"), - DEVICE( TI, TI_PCI1130, "PCI1130"), - DEVICE( TI, TI_PCI1131, "PCI1131"), - DEVICE( TI, TI_PCI1250, "PCI1250"), - DEVICE( OAK, OAK_OTI107, "OTI107"), - DEVICE( WINBOND2, WINBOND2_89C940,"NE2000-PCI"), - DEVICE( MOTOROLA, MOTOROLA_MPC105,"MPC105 Eagle"), - DEVICE( MOTOROLA, MOTOROLA_MPC106,"MPC106 Grackle"), - DEVICE( MOTOROLA, MOTOROLA_RAVEN, "Raven"), - DEVICE( MOTOROLA, MOTOROLA_FALCON,"Falcon"), - DEVICE( MOTOROLA, MOTOROLA_CPX8216,"CPX8216"), - DEVICE( PROMISE, PROMISE_20246, "IDE UltraDMA/33"), - DEVICE( PROMISE, PROMISE_20262, "IDE UltraDMA/66"), - DEVICE( PROMISE, PROMISE_5300, "DC5030"), - DEVICE( N9, N9_I128, "Imagine 128"), - DEVICE( N9, N9_I128_2, "Imagine 128v2"), - DEVICE( N9, N9_I128_T2R, "Revolution 3D"), - DEVICE( UMC, UMC_UM8673F, "UM8673F"), - DEVICE( UMC, UMC_UM8891A, "UM8891A"), - DEVICE( UMC, UMC_UM8886BF, "UM8886BF"), - DEVICE( UMC, UMC_UM8886A, "UM8886A"), - DEVICE( UMC, UMC_UM8881F, "UM8881F"), - DEVICE( UMC, UMC_UM8886F, "UM8886F"), - DEVICE( UMC, UMC_UM9017F, "UM9017F"), - DEVICE( UMC, UMC_UM8886N, "UM8886N"), - DEVICE( UMC, UMC_UM8891N, "UM8891N"), - DEVICE( X, X_AGX016, "ITT AGX016"), - DEVICE( PICOP, PICOP_PT86C52X, "PT86C52x Vesuvius"), - DEVICE( PICOP, PICOP_PT80C524, "PT80C524 Nile"), - DEVICE( APPLE, APPLE_BANDIT, "Bandit"), - DEVICE( APPLE, APPLE_GC, "Grand Central"), - DEVICE( APPLE, APPLE_HYDRA, "Hydra"), - DEVICE( NEXGEN, NEXGEN_82C501, "82C501"), - DEVICE( QLOGIC, QLOGIC_ISP1020, "ISP1020"), - DEVICE( QLOGIC, QLOGIC_ISP1022, "ISP1022"), - DEVICE( CYRIX, CYRIX_5510, "5510"), - DEVICE( CYRIX, CYRIX_PCI_MASTER,"PCI Master"), - DEVICE( CYRIX, CYRIX_5520, "5520"), - DEVICE( CYRIX, CYRIX_5530_LEGACY,"5530 Kahlua Legacy"), - DEVICE( CYRIX, CYRIX_5530_SMI, "5530 Kahlua SMI"), - DEVICE( CYRIX, CYRIX_5530_IDE, "5530 Kahlua IDE"), - DEVICE( CYRIX, CYRIX_5530_AUDIO,"5530 Kahlua Audio"), - DEVICE( CYRIX, CYRIX_5530_VIDEO,"5530 Kahlua Video"), - DEVICE( LEADTEK, LEADTEK_805, "S3 805"), - DEVICE( CONTAQ, CONTAQ_82C599, "82C599"), - DEVICE( CONTAQ, CONTAQ_82C693, "82C693"), - DEVICE( OLICOM, OLICOM_OC3136, "OC-3136/3137"), - DEVICE( OLICOM, OLICOM_OC2315, "OC-2315"), - DEVICE( OLICOM, OLICOM_OC2325, "OC-2325"), - DEVICE( OLICOM, OLICOM_OC2183, "OC-2183/2185"), - DEVICE( OLICOM, OLICOM_OC2326, "OC-2326"), - DEVICE( OLICOM, OLICOM_OC6151, "OC-6151/6152"), - DEVICE( SUN, SUN_EBUS, "PCI-EBus Bridge"), - DEVICE( SUN, SUN_HAPPYMEAL, "Happy Meal Ethernet"), - DEVICE( SUN, SUN_SIMBA, "Advanced PCI Bridge"), - DEVICE( SUN, SUN_PBM, "PCI Bus Module"), - DEVICE( SUN, SUN_SABRE, "Ultra IIi PCI"), - DEVICE( CMD, CMD_640, "640 (buggy)"), - DEVICE( CMD, CMD_643, "643"), - DEVICE( CMD, CMD_646, "646"), - DEVICE( CMD, CMD_670, "670"), - DEVICE( VISION, VISION_QD8500, "QD-8500"), - DEVICE( VISION, VISION_QD8580, "QD-8580"), - DEVICE( BROOKTREE, BROOKTREE_848, "Bt848"), - DEVICE( BROOKTREE, BROOKTREE_849A, "Bt849"), - DEVICE( BROOKTREE, BROOKTREE_878_1,"Bt878 2nd Contr. (?)"), - DEVICE( BROOKTREE, BROOKTREE_878, "Bt878"), - DEVICE( BROOKTREE, BROOKTREE_8474, "Bt8474"), - DEVICE( SIERRA, SIERRA_STB, "STB Horizon 64"), - DEVICE( SGI, SGI_IOC3, "IOC3"), - DEVICE( ACC, ACC_2056, "2056"), - DEVICE( WINBOND, WINBOND_83769, "W83769F"), - DEVICE( WINBOND, WINBOND_82C105, "SL82C105"), - DEVICE( WINBOND, WINBOND_83C553, "W83C553"), - DEVICE( DATABOOK, DATABOOK_87144, "DB87144"), - DEVICE( PLX, PLX_9050, "PCI9050 I2O"), - DEVICE( PLX, PLX_9080, "PCI9080 I2O"), - DEVICE( MADGE, MADGE_MK2, "Smart 16/4 BM Mk2 Ringnode"), - DEVICE( MADGE, MADGE_C155S, "Collage 155 Server"), - DEVICE( 3COM, 3COM_3C339, "3C339 TokenRing"), - DEVICE( 3COM, 3COM_3C590, "3C590 10bT"), - DEVICE( 3COM, 3COM_3C595TX, "3C595 100bTX"), - DEVICE( 3COM, 3COM_3C595T4, "3C595 100bT4"), - DEVICE( 3COM, 3COM_3C595MII, "3C595 100b-MII"), - DEVICE( 3COM, 3COM_3C900TPO, "3C900 10bTPO"), - DEVICE( 3COM, 3COM_3C900COMBO,"3C900 10b Combo"), - DEVICE( 3COM, 3COM_3C905TX, "3C905 100bTX"), - DEVICE( 3COM, 3COM_3C905T4, "3C905 100bT4"), - DEVICE( 3COM, 3COM_3C905B_TX, "3C905B 100bTX"), - DEVICE( SMC, SMC_EPIC100, "9432 TX"), - DEVICE( AL, AL_M1445, "M1445"), - DEVICE( AL, AL_M1449, "M1449"), - DEVICE( AL, AL_M1451, "M1451"), - DEVICE( AL, AL_M1461, "M1461"), - DEVICE( AL, AL_M1489, "M1489"), - DEVICE( AL, AL_M1511, "M1511"), - DEVICE( AL, AL_M1513, "M1513"), - DEVICE( AL, AL_M1521, "M1521"), - DEVICE( AL, AL_M1523, "M1523"), - DEVICE( AL, AL_M1531, "M1531 Aladdin IV"), - DEVICE( AL, AL_M1533, "M1533 Aladdin IV"), - DEVICE( AL, AL_M1541, "M1541 Aladdin V"), - DEVICE( AL, AL_M1543, "M1543 Aladdin V"), - DEVICE( AL, AL_M3307, "M3307 MPEG-1 decoder"), - DEVICE( AL, AL_M4803, "M4803"), - DEVICE( AL, AL_M5219, "M5219"), - DEVICE( AL, AL_M5229, "M5229 TXpro"), - DEVICE( AL, AL_M5237, "M5237 USB"), - DEVICE( AL, AL_M5243, "M5243 AGP"), - DEVICE( AL, AL_M7101, "M7101 PMU"), - DEVICE( SURECOM, SURECOM_NE34, "NE-34PCI LAN"), - DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_NM2070, "Magicgraph NM2070"), - DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128V, "MagicGraph 128V"), - DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128ZV, "MagicGraph 128ZV"), - DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_NM2160, "MagicGraph NM2160"), - DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128ZVPLUS, "MagicGraph 128ZV+"), - DEVICE( ASP, ASP_ABP940, "ABP940"), - DEVICE( ASP, ASP_ABP940U, "ABP940U"), - DEVICE( ASP, ASP_ABP940UW, "ABP940UW"), - DEVICE( MACRONIX, MACRONIX_MX98713,"MX98713"), - DEVICE( MACRONIX, MACRONIX_MX987x5,"MX98715 / MX98725"), - DEVICE( CERN, CERN_SPSB_PMC, "STAR/RD24 SCI-PCI (PMC)"), - DEVICE( CERN, CERN_SPSB_PCI, "STAR/RD24 SCI-PCI (PMC)"), - DEVICE( CERN, CERN_HIPPI_DST, "HIPPI destination"), - DEVICE( CERN, CERN_HIPPI_SRC, "HIPPI source"), - DEVICE( IMS, IMS_8849, "8849"), - DEVICE( TEKRAM2, TEKRAM2_690c, "DC690c"), - DEVICE( TUNDRA, TUNDRA_CA91C042,"CA91C042 Universe"), - DEVICE( AMCC, AMCC_MYRINET, "Myrinet PCI (M2-PCI-32)"), - DEVICE( AMCC, AMCC_PARASTATION,"ParaStation Interface"), - DEVICE( AMCC, AMCC_S5933, "S5933 PCI44"), - DEVICE( AMCC, AMCC_S5933_HEPC3,"S5933 Traquair HEPC3"), - DEVICE( INTERG, INTERG_1680, "IGA-1680"), - DEVICE( INTERG, INTERG_1682, "IGA-1682"), - DEVICE( REALTEK, REALTEK_8029, "8029"), - DEVICE( REALTEK, REALTEK_8129, "8129"), - DEVICE( REALTEK, REALTEK_8139, "8139"), - DEVICE( TRUEVISION, TRUEVISION_T1000,"TARGA 1000"), - DEVICE( INIT, INIT_320P, "320 P"), - DEVICE( INIT, INIT_360P, "360 P"), - DEVICE( TTI, TTI_HPT343, "HPT343"), - DEVICE( VIA, VIA_82C505, "VT 82C505"), - DEVICE( VIA, VIA_82C561, "VT 82C561"), - DEVICE( VIA, VIA_82C586_1, "VT 82C586 Apollo IDE"), - DEVICE( VIA, VIA_82C576, "VT 82C576 3V"), - DEVICE( VIA, VIA_82C585, "VT 82C585 Apollo VP1/VPX"), - DEVICE( VIA, VIA_82C586_0, "VT 82C586 Apollo ISA"), - DEVICE( VIA, VIA_82C595, "VT 82C595 Apollo VP2"), - DEVICE( VIA, VIA_82C597_0, "VT 82C597 Apollo VP3"), - DEVICE( VIA, VIA_82C598_0, "VT 82C598 Apollo MVP3"), - DEVICE( VIA, VIA_82C926, "VT 82C926 Amazon"), - DEVICE( VIA, VIA_82C416, "VT 82C416MV"), - DEVICE( VIA, VIA_82C595_97, "VT 82C595 Apollo VP2/97"), - DEVICE( VIA, VIA_82C586_2, "VT 82C586 Apollo USB"), - DEVICE( VIA, VIA_82C586_3, "VT 82C586B Apollo ACPI"), - DEVICE( VIA, VIA_86C100A, "VT 86C100A"), - DEVICE( VIA, VIA_82C597_1, "VT 82C597 Apollo VP3 AGP"), - DEVICE( VIA, VIA_82C598_1, "VT 82C598 Apollo MVP3 AGP"), - DEVICE( SMC2, SMC2_1211TX, "1211 TX"), - DEVICE( VORTEX, VORTEX_GDT60x0, "GDT 60x0"), - DEVICE( VORTEX, VORTEX_GDT6000B,"GDT 6000b"), - DEVICE( VORTEX, VORTEX_GDT6x10, "GDT 6110/6510"), - DEVICE( VORTEX, VORTEX_GDT6x20, "GDT 6120/6520"), - DEVICE( VORTEX, VORTEX_GDT6530, "GDT 6530"), - DEVICE( VORTEX, VORTEX_GDT6550, "GDT 6550"), - DEVICE( VORTEX, VORTEX_GDT6x17, "GDT 6117/6517"), - DEVICE( VORTEX, VORTEX_GDT6x27, "GDT 6127/6527"), - DEVICE( VORTEX, VORTEX_GDT6537, "GDT 6537"), - DEVICE( VORTEX, VORTEX_GDT6557, "GDT 6557"), - DEVICE( VORTEX, VORTEX_GDT6x15, "GDT 6115/6515"), - DEVICE( VORTEX, VORTEX_GDT6x25, "GDT 6125/6525"), - DEVICE( VORTEX, VORTEX_GDT6535, "GDT 6535"), - DEVICE( VORTEX, VORTEX_GDT6555, "GDT 6555"), - DEVICE( VORTEX, VORTEX_GDT6x17RP,"GDT 6117RP/6517RP"), - DEVICE( VORTEX, VORTEX_GDT6x27RP,"GDT 6127RP/6527RP"), - DEVICE( VORTEX, VORTEX_GDT6537RP,"GDT 6537RP"), - DEVICE( VORTEX, VORTEX_GDT6557RP,"GDT 6557RP"), - DEVICE( VORTEX, VORTEX_GDT6x11RP,"GDT 6111RP/6511RP"), - DEVICE( VORTEX, VORTEX_GDT6x21RP,"GDT 6121RP/6521RP"), - DEVICE( VORTEX, VORTEX_GDT6x17RP1,"GDT 6117RP1/6517RP1"), - DEVICE( VORTEX, VORTEX_GDT6x27RP1,"GDT 6127RP1/6527RP1"), - DEVICE( VORTEX, VORTEX_GDT6537RP1,"GDT 6537RP1"), - DEVICE( VORTEX, VORTEX_GDT6557RP1,"GDT 6557RP1"), - DEVICE( VORTEX, VORTEX_GDT6x11RP1,"GDT 6111RP1/6511RP1"), - DEVICE( VORTEX, VORTEX_GDT6x21RP1,"GDT 6121RP1/6521RP1"), - DEVICE( VORTEX, VORTEX_GDT6x17RP2,"GDT 6117RP2/6517RP2"), - DEVICE( VORTEX, VORTEX_GDT6x27RP2,"GDT 6127RP2/6527RP2"), - DEVICE( VORTEX, VORTEX_GDT6537RP2,"GDT 6537RP2"), - DEVICE( VORTEX, VORTEX_GDT6557RP2,"GDT 6557RP2"), - DEVICE( VORTEX, VORTEX_GDT6x11RP2,"GDT 6111RP2/6511RP2"), - DEVICE( VORTEX, VORTEX_GDT6x21RP2,"GDT 6121RP2/6521RP2"), - DEVICE( EF, EF_ATM_FPGA, "155P-MF1 (FPGA)"), - DEVICE( EF, EF_ATM_ASIC, "155P-MF1 (ASIC)"), - DEVICE( FORE, FORE_PCA200PC, "PCA-200PC"), - DEVICE( FORE, FORE_PCA200E, "PCA-200E"), - DEVICE( IMAGINGTECH, IMAGINGTECH_ICPCI, "MVC IC-PCI"), - DEVICE( PHILIPS, PHILIPS_SAA7145,"SAA7145"), - DEVICE( PHILIPS, PHILIPS_SAA7146,"SAA7146"), - DEVICE( CYCLONE, CYCLONE_SDK, "SDK"), - DEVICE( ALLIANCE, ALLIANCE_PROMOTIO, "Promotion-6410"), - DEVICE( ALLIANCE, ALLIANCE_PROVIDEO, "Provideo"), - DEVICE( ALLIANCE, ALLIANCE_AT24, "AT24"), - DEVICE( ALLIANCE, ALLIANCE_AT3D, "AT3D"), - DEVICE( VMIC, VMIC_VME, "VMIVME-7587"), - DEVICE( DIGI, DIGI_EPC, "AccelPort EPC"), - DEVICE( DIGI, DIGI_RIGHTSWITCH, "RightSwitch SE-6"), - DEVICE( DIGI, DIGI_XEM, "AccelPort Xem"), - DEVICE( DIGI, DIGI_XR, "AccelPort Xr"), - DEVICE( DIGI, DIGI_CX, "AccelPort C/X"), - DEVICE( DIGI, DIGI_XRJ, "AccelPort Xr/J"), - DEVICE( DIGI, DIGI_EPCJ, "AccelPort EPC/J"), - DEVICE( DIGI, DIGI_XR_920, "AccelPort Xr 920"), - DEVICE( MUTECH, MUTECH_MV1000, "MV-1000"), - DEVICE( RENDITION, RENDITION_VERITE,"Verite 1000"), - DEVICE( RENDITION, RENDITION_VERITE2100,"Verite 2100"), - DEVICE( TOSHIBA, TOSHIBA_601, "Laptop"), - DEVICE( TOSHIBA, TOSHIBA_TOPIC95,"ToPIC95"), - DEVICE( TOSHIBA, TOSHIBA_TOPIC97,"ToPIC97"), - DEVICE( RICOH, RICOH_RL5C466, "RL5C466"), - DEVICE( ARTOP, ARTOP_ATP8400, "ATP8400"), - DEVICE( ARTOP, ARTOP_ATP850UF, "ATP850UF"), - DEVICE( ZEITNET, ZEITNET_1221, "1221"), - DEVICE( ZEITNET, ZEITNET_1225, "1225"), - DEVICE( OMEGA, OMEGA_82C092G, "82C092G"), - DEVICE( LITEON, LITEON_LNE100TX,"LNE100TX"), - DEVICE( NP, NP_PCI_FDDI, "NP-PCI"), - DEVICE( ATT, ATT_L56XMF, "L56xMF"), - DEVICE( SPECIALIX, SPECIALIX_IO8, "IO8+/PCI"), - DEVICE( SPECIALIX, SPECIALIX_XIO, "XIO/SIO host"), - DEVICE( SPECIALIX, SPECIALIX_RIO, "RIO host"), - DEVICE( AURAVISION, AURAVISION_VXP524,"VXP524"), - DEVICE( IKON, IKON_10115, "10115 Greensheet"), - DEVICE( IKON, IKON_10117, "10117 Greensheet"), - DEVICE( ZORAN, ZORAN_36057, "ZR36057"), - DEVICE( ZORAN, ZORAN_36120, "ZR36120"), - DEVICE( KINETIC, KINETIC_2915, "2915 CAMAC"), - DEVICE( COMPEX, COMPEX_ENET100VG4, "Readylink ENET100-VG4"), - DEVICE( COMPEX, COMPEX_RL2000, "ReadyLink 2000"), - DEVICE( RP, RP32INTF, "RocketPort 32 Intf"), - DEVICE( RP, RP8INTF, "RocketPort 8 Intf"), - DEVICE( RP, RP16INTF, "RocketPort 16 Intf"), - DEVICE( RP, RP4QUAD, "Rocketport 4 Quad"), - DEVICE( RP, RP8OCTA, "RocketPort 8 Oct"), - DEVICE( RP, RP8J, "RocketPort 8 J"), - DEVICE( RP, RPP4, "RocketPort Plus 4 Quad"), - DEVICE( RP, RPP8, "RocketPort Plus 8 Oct"), - DEVICE( RP, RP8M, "RocketModem 8 J"), - DEVICE( CYCLADES, CYCLOM_Y_Lo, "Cyclom-Y below 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_Y_Hi, "Cyclom-Y above 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_4Y_Lo, "Cyclom-4Y below 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_4Y_Hi, "Cyclom-4Y above 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_8Y_Lo, "Cyclom-8Y below 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_8Y_Hi, "Cyclom-8Y above 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_Z_Lo, "Cyclades-Z below 1Mbyte"), - DEVICE( CYCLADES, CYCLOM_Z_Hi, "Cyclades-Z above 1Mbyte"), - DEVICE( ESSENTIAL, ESSENTIAL_ROADRUNNER,"Roadrunner serial HIPPI"), - DEVICE( O2, O2_6832, "6832"), - DEVICE( 3DFX, 3DFX_VOODOO, "Voodoo"), - DEVICE( 3DFX, 3DFX_VOODOO2, "Voodoo2"), - DEVICE( 3DFX, 3DFX_BANSHEE, "Banshee"), - DEVICE( SIGMADES, SIGMADES_6425, "REALmagic64/GX"), - DEVICE( AVM, AVM_A1, "A1 (Fritz)"), - DEVICE( STALLION, STALLION_ECHPCI832,"EasyConnection 8/32"), - DEVICE( STALLION, STALLION_ECHPCI864,"EasyConnection 8/64"), - DEVICE( STALLION, STALLION_EIOPCI,"EasyIO"), - DEVICE( OPTIBASE, OPTIBASE_FORGE, "MPEG Forge"), - DEVICE( OPTIBASE, OPTIBASE_FUSION,"MPEG Fusion"), - DEVICE( OPTIBASE, OPTIBASE_VPLEX, "VideoPlex"), - DEVICE( OPTIBASE, OPTIBASE_VPLEXCC,"VideoPlex CC"), - DEVICE( OPTIBASE, OPTIBASE_VQUEST,"VideoQuest"), - DEVICE( SATSAGEM, SATSAGEM_PCR2101,"PCR2101 DVB receiver"), - DEVICE( SATSAGEM, SATSAGEM_TELSATTURBO,"Telsat Turbo DVB"), - DEVICE( HUGHES, HUGHES_DIRECPC, "DirecPC"), - DEVICE( ENSONIQ, ENSONIQ_ES1371, "ES1371"), - DEVICE( ENSONIQ, ENSONIQ_AUDIOPCI,"AudioPCI"), - DEVICE( ALTEON, ALTEON_ACENIC, "AceNIC"), - DEVICE( PICTUREL, PICTUREL_PCIVST,"PCIVST"), - DEVICE( NVIDIA_SGS, NVIDIA_SGS_RIVA128, "Riva 128"), - DEVICE( CBOARDS, CBOARDS_DAS1602_16,"DAS1602/16"), - DEVICE( MOTOROLA_OOPS, MOTOROLA_FALCON,"Falcon"), - DEVICE( SYMPHONY, SYMPHONY_101, "82C101"), - DEVICE( TEKRAM, TEKRAM_DC290, "DC-290"), - DEVICE( 3DLABS, 3DLABS_300SX, "GLINT 300SX"), - DEVICE( 3DLABS, 3DLABS_500TX, "GLINT 500TX"), - DEVICE( 3DLABS, 3DLABS_DELTA, "GLINT Delta"), - DEVICE( 3DLABS, 3DLABS_PERMEDIA,"PERMEDIA"), - DEVICE( 3DLABS, 3DLABS_MX, "GLINT MX"), - DEVICE( AVANCE, AVANCE_ALG2064, "ALG2064i"), - DEVICE( AVANCE, AVANCE_2302, "ALG-2302"), - DEVICE( NETVIN, NETVIN_NV5000SC,"NV5000"), - DEVICE( S3, S3_PLATO_PXS, "PLATO/PX (system)"), - DEVICE( S3, S3_ViRGE, "ViRGE"), - DEVICE( S3, S3_TRIO, "Trio32/Trio64"), - DEVICE( S3, S3_AURORA64VP, "Aurora64V+"), - DEVICE( S3, S3_TRIO64UVP, "Trio64UV+"), - DEVICE( S3, S3_ViRGE_VX, "ViRGE/VX"), - DEVICE( S3, S3_868, "Vision 868"), - DEVICE( S3, S3_928, "Vision 928-P"), - DEVICE( S3, S3_864_1, "Vision 864-P"), - DEVICE( S3, S3_864_2, "Vision 864-P"), - DEVICE( S3, S3_964_1, "Vision 964-P"), - DEVICE( S3, S3_964_2, "Vision 964-P"), - DEVICE( S3, S3_968, "Vision 968"), - DEVICE( S3, S3_TRIO64V2, "Trio64V2/DX or /GX"), - DEVICE( S3, S3_PLATO_PXG, "PLATO/PX (graphics)"), - DEVICE( S3, S3_ViRGE_DXGX, "ViRGE/DX or /GX"), - DEVICE( S3, S3_ViRGE_GX2, "ViRGE/GX2"), - DEVICE( S3, S3_ViRGE_MX, "ViRGE/MX"), - DEVICE( S3, S3_ViRGE_MXP, "ViRGE/MX+"), - DEVICE( S3, S3_ViRGE_MXPMV, "ViRGE/MX+MV"), - DEVICE( S3, S3_SONICVIBES, "SonicVibes"), - DEVICE( DCI, DCI_PCCOM4, "PC COM PCI Bus 4 port serial Adapter"), - DEVICE( GENROCO, GENROCO_HFP832, "TURBOstor HFP832"), - DEVICE( INTEL, INTEL_82375, "82375EB"), - DEVICE( INTEL, INTEL_82424, "82424ZX Saturn"), - DEVICE( INTEL, INTEL_82378, "82378IB"), - DEVICE( INTEL, INTEL_82430, "82430ZX Aries"), - DEVICE( INTEL, INTEL_82434, "82434LX Mercury/Neptune"), - DEVICE( INTEL, INTEL_82092AA_0,"82092AA PCMCIA bridge"), - DEVICE( INTEL, INTEL_82092AA_1,"82092AA EIDE"), - DEVICE( INTEL, INTEL_7116, "SAA7116"), - DEVICE( INTEL, INTEL_82596, "82596"), - DEVICE( INTEL, INTEL_82865, "82865"), - DEVICE( INTEL, INTEL_82557, "82557"), - DEVICE( INTEL, INTEL_82437, "82437"), - DEVICE( INTEL, INTEL_82371FB_0,"82371FB PIIX ISA"), - DEVICE( INTEL, INTEL_82371FB_1,"82371FB PIIX IDE"), - DEVICE( INTEL, INTEL_82371MX, "430MX - 82371MX MPIIX"), - DEVICE( INTEL, INTEL_82437MX, "430MX - 82437MX MTSC"), - DEVICE( INTEL, INTEL_82441, "82441FX Natoma"), - DEVICE( INTEL, INTEL_82380FB, "82380FB Mobile"), - DEVICE( INTEL, INTEL_82439, "82439HX Triton II"), - DEVICE( INTEL, INTEL_82371SB_0,"82371SB PIIX3 ISA"), - DEVICE( INTEL, INTEL_82371SB_1,"82371SB PIIX3 IDE"), - DEVICE( INTEL, INTEL_82371SB_2,"82371SB PIIX3 USB"), - DEVICE( INTEL, INTEL_82437VX, "82437VX Triton II"), - DEVICE( INTEL, INTEL_82439TX, "82439TX"), - DEVICE( INTEL, INTEL_82371AB_0,"82371AB PIIX4 ISA"), - DEVICE( INTEL, INTEL_82371AB, "82371AB PIIX4 IDE"), - DEVICE( INTEL, INTEL_82371AB_2,"82371AB PIIX4 USB"), - DEVICE( INTEL, INTEL_82371AB_3,"82371AB PIIX4 ACPI"), - DEVICE( INTEL, INTEL_82443LX_0,"440LX - 82443LX PAC Host"), - DEVICE( INTEL, INTEL_82443LX_1,"440LX - 82443LX PAC AGP"), - DEVICE( INTEL, INTEL_82443BX_0,"440BX - 82443BX Host"), - DEVICE( INTEL, INTEL_82443BX_1,"440BX - 82443BX AGP"), - DEVICE( INTEL, INTEL_82443BX_2,"440BX - 82443BX Host (no AGP)"), - DEVICE( INTEL, INTEL_P6, "Orion P6"), - DEVICE( INTEL, INTEL_82450GX, "82450GX Orion P6"), - DEVICE( KTI, KTI_ET32P2, "ET32P2"), - DEVICE( ADAPTEC, ADAPTEC_7810, "AIC-7810 RAID"), - DEVICE( ADAPTEC, ADAPTEC_7821, "AIC-7860"), - DEVICE( ADAPTEC, ADAPTEC_38602, "AIC-7860"), - DEVICE( ADAPTEC, ADAPTEC_7850, "AIC-7850"), - DEVICE( ADAPTEC, ADAPTEC_7855, "AIC-7855"), - DEVICE( ADAPTEC, ADAPTEC_5800, "AIC-5800"), - DEVICE( ADAPTEC, ADAPTEC_3860, "AIC-7860"), - DEVICE( ADAPTEC, ADAPTEC_7860, "AIC-7860"), - DEVICE( ADAPTEC, ADAPTEC_7861, "AIC-7861"), - DEVICE( ADAPTEC, ADAPTEC_7870, "AIC-7870"), - DEVICE( ADAPTEC, ADAPTEC_7871, "AIC-7871"), - DEVICE( ADAPTEC, ADAPTEC_7872, "AIC-7872"), - DEVICE( ADAPTEC, ADAPTEC_7873, "AIC-7873"), - DEVICE( ADAPTEC, ADAPTEC_7874, "AIC-7874"), - DEVICE( ADAPTEC, ADAPTEC_7895, "AIC-7895U"), - DEVICE( ADAPTEC, ADAPTEC_7880, "AIC-7880U"), - DEVICE( ADAPTEC, ADAPTEC_7881, "AIC-7881U"), - DEVICE( ADAPTEC, ADAPTEC_7882, "AIC-7882U"), - DEVICE( ADAPTEC, ADAPTEC_7883, "AIC-7883U"), - DEVICE( ADAPTEC, ADAPTEC_7884, "AIC-7884U"), - DEVICE( ADAPTEC, ADAPTEC_7885, "AIC-7885U"), - DEVICE( ADAPTEC, ADAPTEC_7886, "AIC-7886U"), - DEVICE( ADAPTEC, ADAPTEC_7887, "AIC-7887U"), - DEVICE( ADAPTEC, ADAPTEC_7888, "AIC-7888U"), - DEVICE( ADAPTEC, ADAPTEC_1030, "ABA-1030 DVB receiver"), - DEVICE( ADAPTEC2, ADAPTEC2_2940U2,"AHA-2940U2"), - DEVICE( ADAPTEC2, ADAPTEC2_2930U2,"AHA-2930U2"), - DEVICE( ADAPTEC2, ADAPTEC2_7890B, "AIC-7890/1"), - DEVICE( ADAPTEC2, ADAPTEC2_7890, "AIC-7890/1"), - DEVICE( ADAPTEC2, ADAPTEC2_3940U2,"AHA-3940U2"), - DEVICE( ADAPTEC2, ADAPTEC2_3950U2D,"AHA-3950U2D"), - DEVICE( ADAPTEC2, ADAPTEC2_7896, "AIC-7896/7"), - DEVICE( ADAPTEC2, ADAPTEC2_7892A, "AIC-7892"), - DEVICE( ADAPTEC2, ADAPTEC2_7892B, "AIC-7892"), - DEVICE( ADAPTEC2, ADAPTEC2_7892D, "AIC-7892"), - DEVICE( ADAPTEC2, ADAPTEC2_7892P, "AIC-7892"), - DEVICE( ADAPTEC2, ADAPTEC2_7899A, "AIC-7899"), - DEVICE( ADAPTEC2, ADAPTEC2_7899B, "AIC-7899"), - DEVICE( ADAPTEC2, ADAPTEC2_7899D, "AIC-7899"), - DEVICE( ADAPTEC2, ADAPTEC2_7899P, "AIC-7899"), - DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL"), - DEVICE( TIGERJET, TIGERJET_300, "Tiger300 ISDN"), - DEVICE( ARK, ARK_STING, "Stingray"), - DEVICE( ARK, ARK_STINGARK, "Stingray ARK 2000PV"), - DEVICE( ARK, ARK_2000MT, "2000MT") +#define VENDOR( vendor, name ) static const char __vendorstr_##vendor[] __initdata = name; +#define ENDVENDOR() +#define DEVICE( vendor, device, name ) static const char __devicestr_##vendor##device[] __initdata = name; +#include "devlist.h" + + +#define VENDOR( vendor, name ) static struct pci_device_info __devices_##vendor[] __initdata = { +#define ENDVENDOR() }; +#define DEVICE( vendor, device, name ) { PCI_DEVICE_ID_##device, 0, __devicestr_##vendor##device }, +#include "devlist.h" + +static const struct pci_vendor_info __initdata pci_vendor_list[] = { +#define VENDOR( vendor, name ) { PCI_VENDOR_ID_##vendor, sizeof(__devices_##vendor) / sizeof(struct pci_device_info), name, __devices_##vendor }, +#define ENDVENDOR() +#define DEVICE( vendor, device, name ) +#include "devlist.h" }; +#define VENDORS (sizeof(pci_vendor_list)/sizeof(struct pci_vendor_info)) -/* - * device_info[] is sorted so we can use binary search - */ -static struct pci_dev_info * __init pci_lookup_dev(unsigned int vendor, unsigned int dev) +void __init pci_namedevice(struct pci_dev *dev) { - int min = 0, - max = sizeof(dev_info)/sizeof(dev_info[0]) - 1; - - for ( ; ; ) - { - int i = (min + max) >> 1; - long order; - - order = dev_info[i].vendor - (long) vendor; - if (!order) - order = dev_info[i].device - (long) dev; + const struct pci_vendor_info *vendor_p = pci_vendor_list; + int i = VENDORS; - if (order < 0) - { - min = i + 1; - if ( min > max ) - return 0; - continue; - } + do { + if (vendor_p->vendor == dev->vendor) + goto match_vendor; + vendor_p++; + } while (--i); - if (order > 0) - { - max = i - 1; - if ( min > max ) - return 0; - continue; - } - - return & dev_info[ i ]; - } -} + /* Coulding find either the vendor nor the device */ + sprintf(dev->name, "PCI<%d:%04x> %04x:%04x", dev->bus->number, dev->devfn, dev->vendor, dev->device); + return; -__init void pci_namedevice(struct pci_dev *dev) -{ - struct pci_dev_info *info; + match_vendor: { + struct pci_device_info *device_p = vendor_p->devices; + int i = vendor_p->nr; - info = pci_lookup_dev(dev->vendor, dev->device); - if (info) { - strcpy(dev->name, info->name); + while (i > 0) { + if (device_p->device == dev->device) + goto match_device; + device_p++; + i--; + } + + /* Ok, found the vendor, but unknown device */ + sprintf(dev->name, "PCI<%d:%04x> %04x:%04x (%s)", dev->bus->number, dev->devfn, dev->vendor, dev->device, vendor_p->name); return; + + /* Full match */ + match_device: { + char *n = dev->name + sprintf(dev->name, "%s %s", vendor_p->name, device_p->name); + int nr = device_p->seen + 1; + device_p->seen = nr; + if (nr > 1) + sprintf(n, " (#%d)", nr); + } } - sprintf(dev->name, "PCI<%d:%04x> %04x:%04x", dev->bus->number, dev->devfn, dev->vendor, dev->device); } #ifdef CONFIG_PROC_FS @@ -719,149 +178,6 @@ static const char *pci_strclass (unsigned int class) } } - -static const char *pci_strvendor(unsigned int vendor) -{ - switch (vendor) { - case PCI_VENDOR_ID_COMPAQ: return "Compaq"; - case PCI_VENDOR_ID_NCR: return "NCR"; - case PCI_VENDOR_ID_ATI: return "ATI"; - case PCI_VENDOR_ID_VLSI: return "VLSI"; - case PCI_VENDOR_ID_ADL: return "Avance Logic"; - case PCI_VENDOR_ID_NS: return "NS"; - case PCI_VENDOR_ID_TSENG: return "Tseng'Lab"; - case PCI_VENDOR_ID_WEITEK: return "Weitek"; - case PCI_VENDOR_ID_DEC: return "DEC"; - case PCI_VENDOR_ID_CIRRUS: return "Cirrus Logic"; - case PCI_VENDOR_ID_IBM: return "IBM"; - case PCI_VENDOR_ID_WD: return "Western Digital"; - case PCI_VENDOR_ID_AMD: return "AMD"; - case PCI_VENDOR_ID_TRIDENT: return "Trident"; - case PCI_VENDOR_ID_AI: return "Acer Incorporated"; - case PCI_VENDOR_ID_MATROX: return "Matrox"; - case PCI_VENDOR_ID_CT: return "Chips & Technologies"; - case PCI_VENDOR_ID_MIRO: return "Miro"; - case PCI_VENDOR_ID_NEC: return "NEC"; - case PCI_VENDOR_ID_FD: return "Future Domain"; - case PCI_VENDOR_ID_SI: return "Silicon Integrated Systems"; - case PCI_VENDOR_ID_HP: return "Hewlett Packard"; - case PCI_VENDOR_ID_PCTECH: return "PCTECH"; - case PCI_VENDOR_ID_DPT: return "DPT"; - case PCI_VENDOR_ID_OPTI: return "OPTi"; - case PCI_VENDOR_ID_SGS: return "SGS Thomson"; - case PCI_VENDOR_ID_BUSLOGIC: return "BusLogic"; - case PCI_VENDOR_ID_TI: return "Texas Instruments"; - case PCI_VENDOR_ID_OAK: return "OAK"; - case PCI_VENDOR_ID_WINBOND2: return "Winbond"; - case PCI_VENDOR_ID_MOTOROLA: return "Motorola"; - case PCI_VENDOR_ID_MOTOROLA_OOPS: return "Motorola"; - case PCI_VENDOR_ID_PROMISE: return "Promise Technology"; - case PCI_VENDOR_ID_N9: return "Number Nine"; - case PCI_VENDOR_ID_UMC: return "UMC"; - case PCI_VENDOR_ID_X: return "X TECHNOLOGY"; - case PCI_VENDOR_ID_PICOP: return "PicoPower"; - case PCI_VENDOR_ID_APPLE: return "Apple"; - case PCI_VENDOR_ID_NEXGEN: return "Nexgen"; - case PCI_VENDOR_ID_QLOGIC: return "Q Logic"; - case PCI_VENDOR_ID_CYRIX: return "Cyrix"; - case PCI_VENDOR_ID_LEADTEK: return "Leadtek Research"; - case PCI_VENDOR_ID_CONTAQ: return "Contaq"; - case PCI_VENDOR_ID_FOREX: return "Forex"; - case PCI_VENDOR_ID_OLICOM: return "Olicom"; - case PCI_VENDOR_ID_SUN: return "Sun Microsystems"; - case PCI_VENDOR_ID_CMD: return "CMD"; - case PCI_VENDOR_ID_VISION: return "Vision"; - case PCI_VENDOR_ID_BROOKTREE: return "Brooktree"; - case PCI_VENDOR_ID_SIERRA: return "Sierra"; - case PCI_VENDOR_ID_ACC: return "ACC MICROELECTRONICS"; - case PCI_VENDOR_ID_WINBOND: return "Winbond"; - case PCI_VENDOR_ID_DATABOOK: return "Databook"; - case PCI_VENDOR_ID_PLX: return "PLX"; - case PCI_VENDOR_ID_MADGE: return "Madge Networks"; - case PCI_VENDOR_ID_3COM: return "3Com"; - case PCI_VENDOR_ID_SMC: return "SMC"; - case PCI_VENDOR_ID_AL: return "Acer Labs"; - case PCI_VENDOR_ID_MITSUBISHI: return "Mitsubishi"; - case PCI_VENDOR_ID_SURECOM: return "Surecom"; - case PCI_VENDOR_ID_NEOMAGIC: return "Neomagic"; - case PCI_VENDOR_ID_ASP: return "Advanced System Products"; - case PCI_VENDOR_ID_MACRONIX: return "Macronix"; - case PCI_VENDOR_ID_CERN: return "CERN"; - case PCI_VENDOR_ID_NVIDIA: return "NVidia"; - case PCI_VENDOR_ID_IMS: return "IMS"; - case PCI_VENDOR_ID_TEKRAM2: return "Tekram"; - case PCI_VENDOR_ID_TUNDRA: return "Tundra"; - case PCI_VENDOR_ID_AMCC: return "AMCC"; - case PCI_VENDOR_ID_INTERG: return "Intergraphics"; - case PCI_VENDOR_ID_REALTEK: return "Realtek"; - case PCI_VENDOR_ID_TRUEVISION: return "Truevision"; - case PCI_VENDOR_ID_INIT: return "Initio Corp"; - case PCI_VENDOR_ID_TTI: return "Triones Technologies, Inc."; - case PCI_VENDOR_ID_VIA: return "VIA Technologies"; - case PCI_VENDOR_ID_SMC2: return "SMC"; - case PCI_VENDOR_ID_VORTEX: return "VORTEX"; - case PCI_VENDOR_ID_EF: return "Efficient Networks"; - case PCI_VENDOR_ID_FORE: return "Fore Systems"; - case PCI_VENDOR_ID_IMAGINGTECH: return "Imaging Technology"; - case PCI_VENDOR_ID_PHILIPS: return "Philips"; - case PCI_VENDOR_ID_CYCLONE: return "Cyclone"; - case PCI_VENDOR_ID_ALLIANCE: return "Alliance"; - case PCI_VENDOR_ID_VMIC: return "VMIC"; - case PCI_VENDOR_ID_DIGI: return "Digi Intl."; - case PCI_VENDOR_ID_MUTECH: return "Mutech"; - case PCI_VENDOR_ID_RENDITION: return "Rendition"; - case PCI_VENDOR_ID_TOSHIBA: return "Toshiba"; - case PCI_VENDOR_ID_RICOH: return "Ricoh"; - case PCI_VENDOR_ID_ARTOP: return "Artop Electronics"; - case PCI_VENDOR_ID_ZEITNET: return "ZeitNet"; - case PCI_VENDOR_ID_OMEGA: return "Omega Micro"; - case PCI_VENDOR_ID_LITEON: return "LiteOn"; - case PCI_VENDOR_ID_NP: return "Network Peripherals"; - case PCI_VENDOR_ID_ATT: return "Lucent (ex-AT&T) Microelectronics"; - case PCI_VENDOR_ID_SPECIALIX: return "Specialix"; - case PCI_VENDOR_ID_AURAVISION: return "Auravision"; - case PCI_VENDOR_ID_IKON: return "Ikon"; - case PCI_VENDOR_ID_ZORAN: return "Zoran"; - case PCI_VENDOR_ID_KINETIC: return "Kinetic"; - case PCI_VENDOR_ID_COMPEX: return "Compex"; - case PCI_VENDOR_ID_RP: return "Comtrol"; - case PCI_VENDOR_ID_CYCLADES: return "Cyclades"; - case PCI_VENDOR_ID_ESSENTIAL: return "Essential Communications"; - case PCI_VENDOR_ID_O2: return "O2 Micro"; - case PCI_VENDOR_ID_3DFX: return "3Dfx"; - case PCI_VENDOR_ID_SIGMADES: return "Sigma Designs"; - case PCI_VENDOR_ID_AVM: return "AVM"; - case PCI_VENDOR_ID_CCUBE: return "C-Cube"; - case PCI_VENDOR_ID_DIPIX: return "Dipix"; - case PCI_VENDOR_ID_STALLION: return "Stallion Technologies"; - case PCI_VENDOR_ID_OPTIBASE: return "Optibase"; - case PCI_VENDOR_ID_SATSAGEM: return "SatSagem"; - case PCI_VENDOR_ID_HUGHES: return "Hughes"; - case PCI_VENDOR_ID_ENSONIQ: return "Ensoniq"; - case PCI_VENDOR_ID_ALTEON: return "Alteon"; - case PCI_VENDOR_ID_PICTUREL: return "Picture Elements"; - case PCI_VENDOR_ID_NVIDIA_SGS: return "NVidia/SGS Thomson"; - case PCI_VENDOR_ID_CBOARDS: return "ComputerBoards"; - case PCI_VENDOR_ID_SYMPHONY: return "Symphony"; - case PCI_VENDOR_ID_TEKRAM: return "Tekram"; - case PCI_VENDOR_ID_3DLABS: return "3Dlabs"; - case PCI_VENDOR_ID_AVANCE: return "Avance"; - case PCI_VENDOR_ID_NETVIN: return "NetVin"; - case PCI_VENDOR_ID_S3: return "S3 Inc."; - case PCI_VENDOR_ID_DCI: return "Decision Computer Int."; - case PCI_VENDOR_ID_GENROCO: return "Genroco"; - case PCI_VENDOR_ID_INTEL: return "Intel"; - case PCI_VENDOR_ID_KTI: return "KTI"; - case PCI_VENDOR_ID_ADAPTEC: return "Adaptec"; - case PCI_VENDOR_ID_ADAPTEC2: return "Adaptec"; - case PCI_VENDOR_ID_ATRONICS: return "Atronics"; - case PCI_VENDOR_ID_TIGERJET: return "TigerJet"; - case PCI_VENDOR_ID_ARK: return "ARK Logic"; - default: return "Unknown vendor"; - } -} - - /* * Convert some of the configuration space registers of the device at * address (bus,devfn) into a string (possibly several lines each). @@ -896,9 +212,10 @@ static int sprint_dev_config(struct pci_dev *dev, char *buf, int size) if (len + 80 > size) { return -1; } - len += sprintf(buf + len, " %s: %s %s (rev %d).\n ", - pci_strclass(class_rev >> 8), pci_strvendor(vendor), - dev->name, class_rev & 0xff); + len += sprintf(buf + len, " %s: %s (rev %d).\n ", + pci_strclass(class_rev >> 8), + dev->name, + class_rev & 0xff); switch (status & PCI_STATUS_DEVSEL_MASK) { case PCI_STATUS_DEVSEL_FAST: str = "Fast devsel. "; break; diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index f471c8073540..b66baa972d42 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -171,7 +171,6 @@ void __init pci_read_bases(struct pci_dev *dev, unsigned int howmany) do { size <<= 1; } while (!(size & newval)); - res->end = res->start + size - 1; /* 64-bit memory? */ if ((l & (PCI_BASE_ADDRESS_SPACE | PCI_BASE_ADDRESS_MEM_TYPE_MASK)) @@ -192,6 +191,7 @@ void __init pci_read_bases(struct pci_dev *dev, unsigned int howmany) #endif } } + res->end = res->start + size - 1; request_resource((l & PCI_BASE_ADDRESS_SPACE_IO) ? &ioport_resource : &iomem_resource, res); } } diff --git a/drivers/scsi/aic7xxx.c b/drivers/scsi/aic7xxx.c index 30f844b9062d..b5c73c7c3af5 100644 --- a/drivers/scsi/aic7xxx.c +++ b/drivers/scsi/aic7xxx.c @@ -9536,10 +9536,8 @@ aic7xxx_detect(Scsi_Host_Template *template) temp_p->pdev = pdev; temp_p->pci_bus = pdev->bus->number; temp_p->pci_device_fn = pdev->devfn; - temp_p->base = pdev->base_address[0]; - temp_p->mbase = pdev->base_address[1]; - temp_p->base &= PCI_BASE_ADDRESS_IO_MASK; - temp_p->mbase &= PCI_BASE_ADDRESS_MEM_MASK; + temp_p->base = pdev->resource[0].start; + temp_p->mbase = pdev->resource[1].start; current_p = list_p; while(current_p) { diff --git a/fs/buffer.c b/fs/buffer.c index 70117fed491a..3734b98d58a5 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1036,13 +1036,6 @@ static __inline__ void __put_unused_buffer_head(struct buffer_head * bh) } } -static void put_unused_buffer_head(struct buffer_head *bh) -{ - spin_lock(&unused_list_lock); - __put_unused_buffer_head(bh); - spin_unlock(&unused_list_lock); -} - /* * Reserve NR_RESERVED buffer heads for async IO requests to avoid * no-buffer-head deadlock. Return NULL on failure; waiting for diff --git a/fs/proc/root.c b/fs/proc/root.c index df9c9e95fd7e..944ddcea3e59 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c @@ -652,7 +652,7 @@ static struct proc_dir_entry proc_root_ioports = { 0, &proc_array_inode_operations }; static struct proc_dir_entry proc_root_iomem = { - PROC_MEMORY, 6, "iomem", + PROC_MEMORY, 5, "iomem", S_IFREG | S_IRUGO, 1, 0, 0, 0, &proc_array_inode_operations }; diff --git a/include/linux/init.h b/include/linux/init.h index ce1964d096c1..08ed89e18590 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -57,8 +57,7 @@ typedef int (*initcall_t)(void); extern initcall_t __initcall_start, __initcall_end; #define __initcall(fn) \ - static __attribute__ ((unused,__section__ (".initcall.init"))) \ - initcall_t __initcall_##fn = fn + static initcall_t __initcall_##fn __init_call = fn /* * Used for kernel command line parameter setup @@ -70,20 +69,20 @@ struct kernel_param { extern struct kernel_param __setup_start, __setup_end; -#define __setup(str, fn) \ - static __attribute__ ((__section__ (".data.init"))) \ - char __setup_str_##fn[] = str; \ - static __attribute__ ((unused,__section__ (".setup.init"))) \ - struct kernel_param __setup_##fn = { __setup_str_##fn, fn } +#define __setup(str, fn) \ + static char __setup_str_##fn[] __initdata = str; \ + static struct kernel_param __setup_##fn __initsetup = { __setup_str_##fn, fn } /* * Mark functions and data as being only used at initialization * or exit time. */ -#define __init __attribute__ ((__section__ (".text.init"))) -#define __exit __attribute__ ((unused, __section__(".text.init"))) -#define __initdata __attribute__ ((__section__ (".data.init"))) -#define __exitdata __attribute__ ((unused, __section__ (".data.init"))) +#define __init __attribute__ ((__section__ (".text.init"))) +#define __exit __attribute__ ((unused, __section__(".text.init"))) +#define __initdata __attribute__ ((__section__ (".data.init"))) +#define __exitdata __attribute__ ((unused, __section__ (".data.init"))) +#define __initsetup __attribute__ ((unused,__section__ (".setup.init"))) +#define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) #define __initfunc(__arginit) \ __arginit __init; \ diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 03e19e1ec83f..28309dc8b1e3 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -19,6 +19,16 @@ struct resource { struct resource *parent, *sibling, *child; }; +/* + * PCI-like IO resources have these defined flags. + * The low four bits come directly from the PCI specs, + * the rest are extended sw flags.. + */ +#define IORESOURCE_IOPORT 0x01 /* 0 - memory mapped, 1 - IO ports */ +#define IORESOURCE_MEMTYPE_MASK 0x06 /* PCI-specific mapping info */ +#define IORESOURCE_PREFETCH 0x08 /* No side effects */ +#define IORESOURCE_BUSY 0x10 /* Driver uses this resource */ + /* PC/ISA/whatever - the normal PC address spaces: IO and memory */ extern struct resource ioport_resource; extern struct resource iomem_resource; diff --git a/include/linux/pci.h b/include/linux/pci.h index 2e80c0ff2b8f..7f8f0ceae5fc 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -948,6 +948,7 @@ #define PCI_DEVICE_ID_3DFX_VOODOO 0x0001 #define PCI_DEVICE_ID_3DFX_VOODOO2 0x0002 #define PCI_DEVICE_ID_3DFX_BANSHEE 0x0003 +#define PCI_DEVICE_ID_3DFX_VOODOO3 0x0005 #define PCI_VENDOR_ID_SIGMADES 0x1236 #define PCI_DEVICE_ID_SIGMADES_6425 0x6401 @@ -1210,7 +1211,8 @@ struct pci_dev { unsigned int hdr_type; /* PCI header type */ unsigned int master : 1; /* set if device is master capable */ - char name[32]; + char name[48]; + /* * In theory, the irq level can be read from configuration * space and all would be fine. However, old PCI chips don't diff --git a/kernel/resource.c b/kernel/resource.c index 5e5d9567b47a..fe46e3d85a03 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -12,9 +12,13 @@ #include #include +#include + struct resource ioport_resource = { "PCI IO", 0x0000, 0xFFFF }; struct resource iomem_resource = { "PCI mem", 0x00000000, 0xFFFFFFFF }; +static rwlock_t resource_lock = RW_LOCK_UNLOCKED; + /* * This generates reports for /proc/ioports and /proc/memory */ @@ -47,25 +51,30 @@ static char * do_resource_list(struct resource *entry, const char *fmt, int offs int get_resource_list(struct resource *root, char *buf, int size) { char *fmt; + int retval; fmt = " %08lx-%08lx : %s\n"; if (root == &ioport_resource) fmt = " %04lx-%04lx : %s\n"; - return do_resource_list(root->child, fmt, 8, buf, buf + size) - buf; + read_lock(&resource_lock); + retval = do_resource_list(root->child, fmt, 8, buf, buf + size) - buf; + read_unlock(&resource_lock); + return retval; } -int request_resource(struct resource *root, struct resource *new) +/* Return the conflict entry if you can't request it */ +static struct resource * __request_resource(struct resource *root, struct resource *new) { unsigned long start = new->start; unsigned long end = new->end; struct resource *tmp, **p; if (end < start) - return -EINVAL; + return root; if (start < root->start) - return -EINVAL; + return root; if (end > root->end) - return -EINVAL; + return root; p = &root->child; for (;;) { tmp = *p; @@ -73,15 +82,25 @@ int request_resource(struct resource *root, struct resource *new) new->sibling = tmp; *p = new; new->parent = root; - return 0; + return NULL; } p = &tmp->sibling; if (tmp->end < start) continue; - return -EBUSY; + return tmp; } } +int request_resource(struct resource *root, struct resource *new) +{ + struct resource *conflict; + + write_lock(&resource_lock); + conflict = __request_resource(root, new); + write_unlock(&resource_lock); + return conflict ? -EBUSY : 0; +} + int release_resource(struct resource *old) { struct resource *tmp, **p; @@ -101,6 +120,18 @@ int release_resource(struct resource *old) return -EINVAL; } +/* + * This is compatibility stuff for IO resources. + * + * Note how this, unlike the above, knows about + * the IO flag meanings (busy etc). + * + * Request-region creates a new busy region. + * + * Check-region returns non-zero if the area is already busy + * + * Release-region releases a matching busy region. + */ struct resource * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name) { struct resource *res = kmalloc(sizeof(*res), GFP_KERNEL); @@ -110,21 +141,32 @@ struct resource * __request_region(struct resource *parent, unsigned long start, res->name = name; res->start = start; res->end = start + n - 1; - if (request_resource(parent, res) != 0) { + res->flags = IORESOURCE_BUSY; + + write_lock(&resource_lock); + + while (!(parent->flags & IORESOURCE_BUSY)) { + struct resource *conflict; + + conflict = __request_resource(parent, res); + if (!conflict) + break; + if (conflict != parent) { + parent = conflict; + continue; + } + + /* Uhhuh, that didn't work out.. */ kfree(res); res = NULL; + break; } + write_unlock(&resource_lock); } return res; } /* - * Compatibility cruft. - * - * Check-region returns non-zero if something already exists. - * - * Release-region releases an anonymous region that matches - * the IO port range. */ int __check_region(struct resource *parent, unsigned long start, unsigned long n) { @@ -152,13 +194,20 @@ void __release_region(struct resource *parent, unsigned long start, unsigned lon if (!res) break; - if (res->start == start && res->end == end) { + if (res->start <= start && res->end >= end) { + if (!(res->flags & IORESOURCE_BUSY)) { + p = &res->child; + continue; + } + if (res->start != start || res->end != end) + break; *p = res->sibling; kfree(res); - break; + return; } p = &res->sibling; } + printk("Trying to free nonexistent resource <%04lx-%04lx>\n", start, end); } /*