Commit 152e5911 authored by Linus Torvalds's avatar Linus Torvalds

Import 2.3.13pre6

parent e3be5730
Joystick API Documentation -*-Text-*- Joystick API Documentation -*-Text-*-
Ragnar Hojland Espinosa Ragnar Hojland Espinosa
<ragnar@lightside.ddns.org> <ragnar@lightside.dhis.org>
7 Aug 1998 7 Aug 1998
...@@ -74,9 +74,10 @@ is, you have both an axis 0 and a button 0). Generally, ...@@ -74,9 +74,10 @@ is, you have both an axis 0 and a button 0). Generally,
2nd Axis Y 3 2nd Axis Y 3
...and so on ...and so on
Hats vary from one joystick type to another. Some can be moved in 8 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 directions, some only in 4. The driver, however, always reports a hat
independent axis, even if the hardware doesn't allow independent movement. as two independent axis, even if the hardware doesn't allow independent
movement.
2.3 js_event.value 2.3 js_event.value
...@@ -85,7 +86,7 @@ independent axis, even if the hardware doesn't allow independent movement. ...@@ -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 For an axis, ``value'' is a signed integer between -32767 and +32767
representing the position of the joystick along that axis. If you 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 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 For a button, ``value'' for a press button event is 1 and for a release
button event is 0. button event is 0.
...@@ -93,16 +94,16 @@ button event is 0. ...@@ -93,16 +94,16 @@ button event is 0.
Though this Though this
if (js_event.type == JS_EVENT_BUTTON) { 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, may work well if you handle JS_EVENT_INIT events separately,
if ((js_event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON) { if ((js_event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON) {
if (js_event.value) if (js_event.value)
buttons_state |= (1 << js_event.number); buttons_state |= (1 << js_event.number);
else else
buttons_state &= ~(1 << js_event.number); buttons_state &= ~(1 << js_event.number);
} }
is much safer since it can't lose sync with the driver. As you would 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. ...@@ -112,6 +113,7 @@ snippet, this ends up being shorter.
2.4 js_event.time 2.4 js_event.time
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
The time an event was generated is stored in ``js_event.time''. It's a 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 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 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). ...@@ -144,14 +146,14 @@ all events on the queue (that is, until you get a -1).
For example, For example,
while (1) { while (1) {
while (read (fd, &e, sizeof(struct js_event)) > 0) { while (read (fd, &e, sizeof(struct js_event)) > 0) {
process_event (e); process_event (e);
} }
/* EAGAIN is returned when the queue is empty */ /* EAGAIN is returned when the queue is empty */
if (errno != EAGAIN) { if (errno != EAGAIN) {
/* error */ /* error */
} }
/* do something interesting with processed events */ /* do something interesting with processed events */
} }
One reason for emptying the queue is that if it gets full you'll start One reason for emptying the queue is that if it gets full you'll start
...@@ -219,6 +221,7 @@ JS_VERSION symbol ...@@ -219,6 +221,7 @@ JS_VERSION symbol
#ifdef JS_VERSION #ifdef JS_VERSION
#if JS_VERSION > 0xsomething #if JS_VERSION > 0xsomething
4.2 JSIOCGNAME 4.2 JSIOCGNAME
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
...@@ -232,6 +235,7 @@ possible overrun should the name be too long. ...@@ -232,6 +235,7 @@ possible overrun should the name be too long.
strncpy(name, "Unknown", sizeof(name)); strncpy(name, "Unknown", sizeof(name));
printf("Name: %s\n", name); printf("Name: %s\n", name);
4.3 JSIOC[SG]CORR 4.3 JSIOC[SG]CORR
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
...@@ -266,10 +270,10 @@ The driver offers backward compatibility, though. Here's a quick summary: ...@@ -266,10 +270,10 @@ The driver offers backward compatibility, though. Here's a quick summary:
struct JS_DATA_TYPE js; struct JS_DATA_TYPE js;
while (1) { while (1) {
if (read (fd, &js, JS_RETURN) != JS_RETURN) { if (read (fd, &js, JS_RETURN) != JS_RETURN) {
/* error */ /* error */
} }
usleep (1000); usleep (1000);
} }
As you can figure out from the example, the read returns immediately, 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 ...@@ -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 called Multisystem joystick in this driver), under /dev/djsX. This driver
doesn't try to be compatible with that interface. doesn't try to be compatible with that interface.
6. Final Notes 6. Final Notes
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/fixmap.h> #include <asm/fixmap.h>
static unsigned long totalram = 0;
extern void show_net_buffers(void); extern void show_net_buffers(void);
extern unsigned long init_smp_mappings(unsigned long); extern unsigned long init_smp_mappings(unsigned long);
...@@ -419,6 +421,7 @@ __initfunc(void mem_init(unsigned long start_mem, unsigned long end_mem)) ...@@ -419,6 +421,7 @@ __initfunc(void mem_init(unsigned long start_mem, unsigned long end_mem))
continue; continue;
} }
set_page_count(mem_map+MAP_NR(tmp), 1); set_page_count(mem_map+MAP_NR(tmp), 1);
totalram += PAGE_SIZE;
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
if (!initrd_start || (tmp < initrd_start || tmp >= if (!initrd_start || (tmp < initrd_start || tmp >=
initrd_end)) initrd_end))
...@@ -446,28 +449,16 @@ void free_initmem(void) ...@@ -446,28 +449,16 @@ void free_initmem(void)
mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved); mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved);
set_page_count(mem_map+MAP_NR(addr), 1); set_page_count(mem_map+MAP_NR(addr), 1);
free_page(addr); free_page(addr);
totalram += PAGE_SIZE;
} }
printk ("Freeing unused kernel memory: %dk freed\n", (&__init_end - &__init_begin) >> 10); printk ("Freeing unused kernel memory: %dk freed\n", (&__init_end - &__init_begin) >> 10);
} }
void si_meminfo(struct sysinfo *val) void si_meminfo(struct sysinfo *val)
{ {
int i; val->totalram = totalram;
i = max_mapnr;
val->totalram = 0;
val->sharedram = 0; val->sharedram = 0;
val->freeram = nr_free_pages << PAGE_SHIFT; val->freeram = nr_free_pages << PAGE_SHIFT;
val->bufferram = atomic_read(&buffermem); 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; return;
} }
...@@ -1763,11 +1763,10 @@ static int __init parport_pc_init_pci (int irq, int dma) ...@@ -1763,11 +1763,10 @@ static int __init parport_pc_init_pci (int irq, int dma)
for (n = 0; n < cards[i].numports; n++) { for (n = 0; n < cards[i].numports; n++) {
unsigned long lo = cards[i].addr[n].lo; unsigned long lo = cards[i].addr[n].lo;
unsigned long hi = cards[i].addr[n].hi; unsigned long hi = cards[i].addr[n].hi;
unsigned long io_lo = pcidev->base_address[lo]; unsigned long io_lo, io_hi;
unsigned long io_hi = ((hi < 0) ? 0 : io_lo = pcidev->resource[lo].start;
pcidev->base_address[hi]); io_hi = ((hi < 0) ? 0 :
io_lo &= PCI_BASE_ADDRESS_IO_MASK; pcidev->resource[hi].start);
io_hi &= PCI_BASE_ADDRESS_IO_MASK;
if (irq == PARPORT_IRQ_AUTO) { if (irq == PARPORT_IRQ_AUTO) {
if (parport_pc_probe_port (io_lo, if (parport_pc_probe_port (io_lo,
io_hi, io_hi,
......
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
...@@ -18,625 +18,84 @@ ...@@ -18,625 +18,84 @@
#include <asm/page.h> #include <asm/page.h>
struct pci_dev_info { struct pci_device_info {
unsigned short vendor; /* vendor id */ unsigned short device;
unsigned short device; /* device id */ unsigned short seen;
const char *name;
const char *name; /* device name */
}; };
#define DEVICE(vid,did,name) \ struct pci_vendor_info {
{PCI_VENDOR_ID_##vid, PCI_DEVICE_ID_##did, (name)} unsigned short vendor;
unsigned short nr;
const char *name;
struct pci_device_info *devices;
};
/* /*
* Sorted in ascending order by vendor and device. * This is ridiculous, but we want the strings in
* Use binary search for lookup. If you add a device make sure * the .init section so that they don't take up
* it is sequential by both vendor and device id. * real memory.. Parse the same file multiple times
* to get all the info.
*/ */
static __initdata struct pci_dev_info dev_info[] = { #define VENDOR( vendor, name ) static const char __vendorstr_##vendor[] __initdata = name;
DEVICE( COMPAQ, COMPAQ_1280, "QVision 1280/p"), #define ENDVENDOR()
DEVICE( COMPAQ, COMPAQ_SMART2P, "Smart-2/P RAID Controller"), #define DEVICE( vendor, device, name ) static const char __devicestr_##vendor##device[] __initdata = name;
DEVICE( COMPAQ, COMPAQ_NETEL100,"Netelligent 10/100"), #include "devlist.h"
DEVICE( COMPAQ, COMPAQ_NETEL10, "Netelligent 10"),
DEVICE( COMPAQ, COMPAQ_NETFLEX3I,"NetFlex 3"),
DEVICE( COMPAQ, COMPAQ_NETEL100D,"Netelligent 10/100 Dual"), #define VENDOR( vendor, name ) static struct pci_device_info __devices_##vendor[] __initdata = {
DEVICE( COMPAQ, COMPAQ_NETEL100PI,"Netelligent 10/100 ProLiant"), #define ENDVENDOR() };
DEVICE( COMPAQ, COMPAQ_NETEL100I,"Netelligent 10/100 Integrated"), #define DEVICE( vendor, device, name ) { PCI_DEVICE_ID_##device, 0, __devicestr_##vendor##device },
DEVICE( COMPAQ, COMPAQ_THUNDER, "ThunderLAN"), #include "devlist.h"
DEVICE( COMPAQ, COMPAQ_NETFLEX3B,"NetFlex 3 BNC"),
DEVICE( NCR, NCR_53C810, "53c810"), static const struct pci_vendor_info __initdata pci_vendor_list[] = {
DEVICE( NCR, NCR_53C820, "53c820"), #define VENDOR( vendor, name ) { PCI_VENDOR_ID_##vendor, sizeof(__devices_##vendor) / sizeof(struct pci_device_info), name, __devices_##vendor },
DEVICE( NCR, NCR_53C825, "53c825"), #define ENDVENDOR()
DEVICE( NCR, NCR_53C815, "53c815"), #define DEVICE( vendor, device, name )
DEVICE( NCR, NCR_53C860, "53c860"), #include "devlist.h"
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 VENDORS (sizeof(pci_vendor_list)/sizeof(struct pci_vendor_info))
/* void __init pci_namedevice(struct pci_dev *dev)
* 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)
{ {
int min = 0, const struct pci_vendor_info *vendor_p = pci_vendor_list;
max = sizeof(dev_info)/sizeof(dev_info[0]) - 1; int i = VENDORS;
for ( ; ; )
{
int i = (min + max) >> 1;
long order;
order = dev_info[i].vendor - (long) vendor;
if (!order)
order = dev_info[i].device - (long) dev;
if (order < 0) do {
{ if (vendor_p->vendor == dev->vendor)
min = i + 1; goto match_vendor;
if ( min > max ) vendor_p++;
return 0; } while (--i);
continue;
}
if (order > 0) /* 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);
max = i - 1; return;
if ( min > max )
return 0;
continue;
}
return & dev_info[ i ];
}
}
__init void pci_namedevice(struct pci_dev *dev) match_vendor: {
{ struct pci_device_info *device_p = vendor_p->devices;
struct pci_dev_info *info; int i = vendor_p->nr;
info = pci_lookup_dev(dev->vendor, dev->device); while (i > 0) {
if (info) { if (device_p->device == dev->device)
strcpy(dev->name, info->name); 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; 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 #ifdef CONFIG_PROC_FS
...@@ -719,149 +178,6 @@ static const char *pci_strclass (unsigned int class) ...@@ -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 * Convert some of the configuration space registers of the device at
* address (bus,devfn) into a string (possibly several lines each). * 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) ...@@ -896,9 +212,10 @@ static int sprint_dev_config(struct pci_dev *dev, char *buf, int size)
if (len + 80 > size) { if (len + 80 > size) {
return -1; return -1;
} }
len += sprintf(buf + len, " %s: %s %s (rev %d).\n ", len += sprintf(buf + len, " %s: %s (rev %d).\n ",
pci_strclass(class_rev >> 8), pci_strvendor(vendor), pci_strclass(class_rev >> 8),
dev->name, class_rev & 0xff); dev->name,
class_rev & 0xff);
switch (status & PCI_STATUS_DEVSEL_MASK) { switch (status & PCI_STATUS_DEVSEL_MASK) {
case PCI_STATUS_DEVSEL_FAST: str = "Fast devsel. "; break; case PCI_STATUS_DEVSEL_FAST: str = "Fast devsel. "; break;
......
...@@ -171,7 +171,6 @@ void __init pci_read_bases(struct pci_dev *dev, unsigned int howmany) ...@@ -171,7 +171,6 @@ void __init pci_read_bases(struct pci_dev *dev, unsigned int howmany)
do { do {
size <<= 1; size <<= 1;
} while (!(size & newval)); } while (!(size & newval));
res->end = res->start + size - 1;
/* 64-bit memory? */ /* 64-bit memory? */
if ((l & (PCI_BASE_ADDRESS_SPACE | PCI_BASE_ADDRESS_MEM_TYPE_MASK)) 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) ...@@ -192,6 +191,7 @@ void __init pci_read_bases(struct pci_dev *dev, unsigned int howmany)
#endif #endif
} }
} }
res->end = res->start + size - 1;
request_resource((l & PCI_BASE_ADDRESS_SPACE_IO) ? &ioport_resource : &iomem_resource, res); request_resource((l & PCI_BASE_ADDRESS_SPACE_IO) ? &ioport_resource : &iomem_resource, res);
} }
} }
......
...@@ -9536,10 +9536,8 @@ aic7xxx_detect(Scsi_Host_Template *template) ...@@ -9536,10 +9536,8 @@ aic7xxx_detect(Scsi_Host_Template *template)
temp_p->pdev = pdev; temp_p->pdev = pdev;
temp_p->pci_bus = pdev->bus->number; temp_p->pci_bus = pdev->bus->number;
temp_p->pci_device_fn = pdev->devfn; temp_p->pci_device_fn = pdev->devfn;
temp_p->base = pdev->base_address[0]; temp_p->base = pdev->resource[0].start;
temp_p->mbase = pdev->base_address[1]; temp_p->mbase = pdev->resource[1].start;
temp_p->base &= PCI_BASE_ADDRESS_IO_MASK;
temp_p->mbase &= PCI_BASE_ADDRESS_MEM_MASK;
current_p = list_p; current_p = list_p;
while(current_p) while(current_p)
{ {
......
...@@ -1036,13 +1036,6 @@ static __inline__ void __put_unused_buffer_head(struct buffer_head * bh) ...@@ -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 * Reserve NR_RESERVED buffer heads for async IO requests to avoid
* no-buffer-head deadlock. Return NULL on failure; waiting for * no-buffer-head deadlock. Return NULL on failure; waiting for
......
...@@ -652,7 +652,7 @@ static struct proc_dir_entry proc_root_ioports = { ...@@ -652,7 +652,7 @@ static struct proc_dir_entry proc_root_ioports = {
0, &proc_array_inode_operations 0, &proc_array_inode_operations
}; };
static struct proc_dir_entry proc_root_iomem = { static struct proc_dir_entry proc_root_iomem = {
PROC_MEMORY, 6, "iomem", PROC_MEMORY, 5, "iomem",
S_IFREG | S_IRUGO, 1, 0, 0, S_IFREG | S_IRUGO, 1, 0, 0,
0, &proc_array_inode_operations 0, &proc_array_inode_operations
}; };
......
...@@ -57,8 +57,7 @@ typedef int (*initcall_t)(void); ...@@ -57,8 +57,7 @@ typedef int (*initcall_t)(void);
extern initcall_t __initcall_start, __initcall_end; extern initcall_t __initcall_start, __initcall_end;
#define __initcall(fn) \ #define __initcall(fn) \
static __attribute__ ((unused,__section__ (".initcall.init"))) \ static initcall_t __initcall_##fn __init_call = fn
initcall_t __initcall_##fn = fn
/* /*
* Used for kernel command line parameter setup * Used for kernel command line parameter setup
...@@ -70,20 +69,20 @@ struct kernel_param { ...@@ -70,20 +69,20 @@ struct kernel_param {
extern struct kernel_param __setup_start, __setup_end; extern struct kernel_param __setup_start, __setup_end;
#define __setup(str, fn) \ #define __setup(str, fn) \
static __attribute__ ((__section__ (".data.init"))) \ static char __setup_str_##fn[] __initdata = str; \
char __setup_str_##fn[] = str; \ static struct kernel_param __setup_##fn __initsetup = { __setup_str_##fn, fn }
static __attribute__ ((unused,__section__ (".setup.init"))) \
struct kernel_param __setup_##fn = { __setup_str_##fn, fn }
/* /*
* Mark functions and data as being only used at initialization * Mark functions and data as being only used at initialization
* or exit time. * or exit time.
*/ */
#define __init __attribute__ ((__section__ (".text.init"))) #define __init __attribute__ ((__section__ (".text.init")))
#define __exit __attribute__ ((unused, __section__(".text.init"))) #define __exit __attribute__ ((unused, __section__(".text.init")))
#define __initdata __attribute__ ((__section__ (".data.init"))) #define __initdata __attribute__ ((__section__ (".data.init")))
#define __exitdata __attribute__ ((unused, __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) \ #define __initfunc(__arginit) \
__arginit __init; \ __arginit __init; \
......
...@@ -19,6 +19,16 @@ struct resource { ...@@ -19,6 +19,16 @@ struct resource {
struct resource *parent, *sibling, *child; 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 */ /* PC/ISA/whatever - the normal PC address spaces: IO and memory */
extern struct resource ioport_resource; extern struct resource ioport_resource;
extern struct resource iomem_resource; extern struct resource iomem_resource;
......
...@@ -948,6 +948,7 @@ ...@@ -948,6 +948,7 @@
#define PCI_DEVICE_ID_3DFX_VOODOO 0x0001 #define PCI_DEVICE_ID_3DFX_VOODOO 0x0001
#define PCI_DEVICE_ID_3DFX_VOODOO2 0x0002 #define PCI_DEVICE_ID_3DFX_VOODOO2 0x0002
#define PCI_DEVICE_ID_3DFX_BANSHEE 0x0003 #define PCI_DEVICE_ID_3DFX_BANSHEE 0x0003
#define PCI_DEVICE_ID_3DFX_VOODOO3 0x0005
#define PCI_VENDOR_ID_SIGMADES 0x1236 #define PCI_VENDOR_ID_SIGMADES 0x1236
#define PCI_DEVICE_ID_SIGMADES_6425 0x6401 #define PCI_DEVICE_ID_SIGMADES_6425 0x6401
...@@ -1210,7 +1211,8 @@ struct pci_dev { ...@@ -1210,7 +1211,8 @@ struct pci_dev {
unsigned int hdr_type; /* PCI header type */ unsigned int hdr_type; /* PCI header type */
unsigned int master : 1; /* set if device is master capable */ 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 * In theory, the irq level can be read from configuration
* space and all would be fine. However, old PCI chips don't * space and all would be fine. However, old PCI chips don't
......
...@@ -12,9 +12,13 @@ ...@@ -12,9 +12,13 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/malloc.h> #include <linux/malloc.h>
#include <asm/spinlock.h>
struct resource ioport_resource = { "PCI IO", 0x0000, 0xFFFF }; struct resource ioport_resource = { "PCI IO", 0x0000, 0xFFFF };
struct resource iomem_resource = { "PCI mem", 0x00000000, 0xFFFFFFFF }; 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 * 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 ...@@ -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) int get_resource_list(struct resource *root, char *buf, int size)
{ {
char *fmt; char *fmt;
int retval;
fmt = " %08lx-%08lx : %s\n"; fmt = " %08lx-%08lx : %s\n";
if (root == &ioport_resource) if (root == &ioport_resource)
fmt = " %04lx-%04lx : %s\n"; 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 start = new->start;
unsigned long end = new->end; unsigned long end = new->end;
struct resource *tmp, **p; struct resource *tmp, **p;
if (end < start) if (end < start)
return -EINVAL; return root;
if (start < root->start) if (start < root->start)
return -EINVAL; return root;
if (end > root->end) if (end > root->end)
return -EINVAL; return root;
p = &root->child; p = &root->child;
for (;;) { for (;;) {
tmp = *p; tmp = *p;
...@@ -73,15 +82,25 @@ int request_resource(struct resource *root, struct resource *new) ...@@ -73,15 +82,25 @@ int request_resource(struct resource *root, struct resource *new)
new->sibling = tmp; new->sibling = tmp;
*p = new; *p = new;
new->parent = root; new->parent = root;
return 0; return NULL;
} }
p = &tmp->sibling; p = &tmp->sibling;
if (tmp->end < start) if (tmp->end < start)
continue; 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) int release_resource(struct resource *old)
{ {
struct resource *tmp, **p; struct resource *tmp, **p;
...@@ -101,6 +120,18 @@ int release_resource(struct resource *old) ...@@ -101,6 +120,18 @@ int release_resource(struct resource *old)
return -EINVAL; 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 * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name)
{ {
struct resource *res = kmalloc(sizeof(*res), GFP_KERNEL); struct resource *res = kmalloc(sizeof(*res), GFP_KERNEL);
...@@ -110,21 +141,32 @@ struct resource * __request_region(struct resource *parent, unsigned long start, ...@@ -110,21 +141,32 @@ struct resource * __request_region(struct resource *parent, unsigned long start,
res->name = name; res->name = name;
res->start = start; res->start = start;
res->end = start + n - 1; 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); kfree(res);
res = NULL; res = NULL;
break;
} }
write_unlock(&resource_lock);
} }
return res; 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) 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 ...@@ -152,13 +194,20 @@ void __release_region(struct resource *parent, unsigned long start, unsigned lon
if (!res) if (!res)
break; 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; *p = res->sibling;
kfree(res); kfree(res);
break; return;
} }
p = &res->sibling; p = &res->sibling;
} }
printk("Trying to free nonexistent resource <%04lx-%04lx>\n", start, end);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment