2 * $Id: oldproc.c,v 1.4 1998/01/05 14:16:18 mj Exp $ 4 * Backward-compatible procfs interface for PCI. 6 * Copyright 1993, 1994, 1995, 1997 Drew Eckhardt, Frederic Potter, 7 * David Mosberger-Tang, Martin Mares 10 #include <linux/config.h> 11 #include <linux/types.h> 12 #include <linux/kernel.h> 13 #include <linux/bios32.h> 14 #include <linux/pci.h> 15 #include <linux/string.h> 16 #include <linux/sched.h> 22 unsigned short vendor
;/* vendor id */ 23 unsigned short device
;/* device id */ 25 const char*name
;/* device name */ 28 #define DEVICE(vid,did,name) \ 29 {PCI_VENDOR_ID_##vid, PCI_DEVICE_ID_##did, (name)} 32 * Sorted in ascending order by vendor and device. 33 * Use binary search for lookup. If you add a device make sure 34 * it is sequential by both vendor and device id. 36 struct pci_dev_info dev_info
[] = { 37 DEVICE( COMPAQ
, COMPAQ_1280
,"QVision 1280/p"), 38 DEVICE( COMPAQ
, COMPAQ_SMART2P
,"Smart-2/P RAID Controller"), 39 DEVICE( COMPAQ
, COMPAQ_NETEL100
,"Netelligent 10/100"), 40 DEVICE( COMPAQ
, COMPAQ_NETEL10
,"Netelligent 10"), 41 DEVICE( COMPAQ
, COMPAQ_NETFLEX3I
,"NetFlex 3"), 42 DEVICE( COMPAQ
, COMPAQ_NETEL100D
,"Netelligent 10/100 Dual"), 43 DEVICE( COMPAQ
, COMPAQ_NETEL100PI
,"Netelligent 10/100 ProLiant"), 44 DEVICE( COMPAQ
, COMPAQ_NETEL100I
,"Netelligent 10/100 Integrated"), 45 DEVICE( COMPAQ
, COMPAQ_THUNDER
,"ThunderLAN"), 46 DEVICE( COMPAQ
, COMPAQ_NETFLEX3B
,"NetFlex 3 BNC"), 47 DEVICE( NCR
, NCR_53C810
,"53c810"), 48 DEVICE( NCR
, NCR_53C820
,"53c820"), 49 DEVICE( NCR
, NCR_53C825
,"53c825"), 50 DEVICE( NCR
, NCR_53C815
,"53c815"), 51 DEVICE( NCR
, NCR_53C860
,"53c860"), 52 DEVICE( NCR
, NCR_53C896
,"53c896"), 53 DEVICE( NCR
, NCR_53C895
,"53c895"), 54 DEVICE( NCR
, NCR_53C885
,"53c885"), 55 DEVICE( NCR
, NCR_53C875
,"53c875"), 56 DEVICE( NCR
, NCR_53C875J
,"53c875J"), 57 DEVICE( ATI
, ATI_68800
,"68800AX"), 58 DEVICE( ATI
, ATI_215CT222
,"215CT222"), 59 DEVICE( ATI
, ATI_210888CX
,"210888CX"), 60 DEVICE( ATI
, ATI_215GB
,"Mach64 GB"), 61 DEVICE( ATI
, ATI_215GD
,"Mach64 GD (Rage Pro)"), 62 DEVICE( ATI
, ATI_215GP
,"Mach64 GP (Rage Pro)"), 63 DEVICE( ATI
, ATI_215GT
,"Mach64 GT (Rage II)"), 64 DEVICE( ATI
, ATI_215GTB
,"Mach64 GT (Rage II)"), 65 DEVICE( ATI
, ATI_210888GX
,"210888GX"), 66 DEVICE( ATI
, ATI_264VT
,"Mach64 VT"), 67 DEVICE( VLSI
, VLSI_82C592
,"82C592-FC1"), 68 DEVICE( VLSI
, VLSI_82C593
,"82C593-FC1"), 69 DEVICE( VLSI
, VLSI_82C594
,"82C594-AFC2"), 70 DEVICE( VLSI
, VLSI_82C597
,"82C597-AFC2"), 71 DEVICE( VLSI
, VLSI_82C541
,"82C541 Lynx"), 72 DEVICE( VLSI
, VLSI_82C543
,"82C543 Lynx ISA"), 73 DEVICE( VLSI
, VLSI_82C532
,"82C532"), 74 DEVICE( VLSI
, VLSI_82C534
,"82C534"), 75 DEVICE( VLSI
, VLSI_82C535
,"82C535"), 76 DEVICE( VLSI
, VLSI_82C147
,"82C147"), 77 DEVICE( VLSI
, VLSI_VAS96011
,"VAS96011 (Golden Gate II)"), 78 DEVICE( ADL
, ADL_2301
,"2301"), 79 DEVICE( NS
, NS_87415
,"87415"), 80 DEVICE( NS
, NS_87410
,"87410"), 81 DEVICE( TSENG
, TSENG_W32P_2
,"ET4000W32P"), 82 DEVICE( TSENG
, TSENG_W32P_b
,"ET4000W32P rev B"), 83 DEVICE( TSENG
, TSENG_W32P_c
,"ET4000W32P rev C"), 84 DEVICE( TSENG
, TSENG_W32P_d
,"ET4000W32P rev D"), 85 DEVICE( TSENG
, TSENG_ET6000
,"ET6000"), 86 DEVICE( WEITEK
, WEITEK_P9000
,"P9000"), 87 DEVICE( WEITEK
, WEITEK_P9100
,"P9100"), 88 DEVICE( DEC
, DEC_BRD
,"DC21050"), 89 DEVICE( DEC
, DEC_TULIP
,"DC21040"), 90 DEVICE( DEC
, DEC_TGA
,"TGA"), 91 DEVICE( DEC
, DEC_TULIP_FAST
,"DC21140"), 92 DEVICE( DEC
, DEC_TGA2
,"TGA2"), 93 DEVICE( DEC
, DEC_FDDI
,"DEFPA"), 94 DEVICE( DEC
, DEC_TULIP_PLUS
,"DC21041"), 95 DEVICE( DEC
, DEC_21142
,"DC21142"), 96 DEVICE( DEC
, DEC_21052
,"DC21052"), 97 DEVICE( DEC
, DEC_21150
,"DC21150"), 98 DEVICE( DEC
, DEC_21152
,"DC21152"), 99 DEVICE( CIRRUS
, CIRRUS_7548
,"GD 7548"), 100 DEVICE( CIRRUS
, CIRRUS_5430
,"GD 5430"), 101 DEVICE( CIRRUS
, CIRRUS_5434_4
,"GD 5434"), 102 DEVICE( CIRRUS
, CIRRUS_5434_8
,"GD 5434"), 103 DEVICE( CIRRUS
, CIRRUS_5436
,"GD 5436"), 104 DEVICE( CIRRUS
, CIRRUS_5446
,"GD 5446"), 105 DEVICE( CIRRUS
, CIRRUS_5480
,"GD 5480"), 106 DEVICE( CIRRUS
, CIRRUS_5464
,"GD 5464"), 107 DEVICE( CIRRUS
, CIRRUS_5465
,"GD 5465"), 108 DEVICE( CIRRUS
, CIRRUS_6729
,"CL 6729"), 109 DEVICE( CIRRUS
, CIRRUS_6832
,"PD 6832"), 110 DEVICE( CIRRUS
, CIRRUS_7542
,"CL 7542"), 111 DEVICE( CIRRUS
, CIRRUS_7543
,"CL 7543"), 112 DEVICE( CIRRUS
, CIRRUS_7541
,"CL 7541"), 113 DEVICE( IBM
, IBM_FIRE_CORAL
,"Fire Coral"), 114 DEVICE( IBM
, IBM_TR
,"Token Ring"), 115 DEVICE( IBM
, IBM_82G2675
,"82G2675"), 116 DEVICE( IBM
, IBM_MCA
,"MicroChannel"), 117 DEVICE( IBM
, IBM_82351
,"82351"), 118 DEVICE( WD
, WD_7197
,"WD 7197"), 119 DEVICE( AMD
, AMD_LANCE
,"79C970"), 120 DEVICE( AMD
, AMD_SCSI
,"53C974"), 121 DEVICE( TRIDENT
, TRIDENT_9397
,"Cyber9397"), 122 DEVICE( TRIDENT
, TRIDENT_9420
,"TG 9420"), 123 DEVICE( TRIDENT
, TRIDENT_9440
,"TG 9440"), 124 DEVICE( TRIDENT
, TRIDENT_9660
,"TG 9660 / Cyber9385"), 125 DEVICE( TRIDENT
, TRIDENT_9750
,"Image 975"), 126 DEVICE( AI
, AI_M1435
,"M1435"), 127 DEVICE( MATROX
, MATROX_MGA_2
,"Atlas PX2085"), 128 DEVICE( MATROX
, MATROX_MIL
,"Millennium"), 129 DEVICE( MATROX
, MATROX_MYS
,"Mystique"), 130 DEVICE( MATROX
, MATROX_MIL_2
,"Millennium II"), 131 DEVICE( MATROX
, MATROX_MIL_2_AGP
,"Millennium II AGP"), 132 DEVICE( MATROX
, MATROX_MGA_IMP
,"MGA Impression"), 133 DEVICE( CT
, CT_65545
,"65545"), 134 DEVICE( CT
, CT_65548
,"65548"), 135 DEVICE( CT
, CT_65550
,"65550"), 136 DEVICE( CT
, CT_65554
,"65554"), 137 DEVICE( MIRO
, MIRO_36050
,"ZR36050"), 138 DEVICE( NEC
, NEC_PCX2
,"PowerVR PCX2"), 139 DEVICE( FD
, FD_36C70
,"TMC-18C30"), 140 DEVICE( SI
, SI_6201
,"6201"), 141 DEVICE( SI
, SI_6202
,"6202"), 142 DEVICE( SI
, SI_503
,"85C503"), 143 DEVICE( SI
, SI_6205
,"6205"), 144 DEVICE( SI
, SI_501
,"85C501"), 145 DEVICE( SI
, SI_496
,"85C496"), 146 DEVICE( SI
, SI_601
,"85C601"), 147 DEVICE( SI
, SI_5107
,"5107"), 148 DEVICE( SI
, SI_5511
,"85C5511"), 149 DEVICE( SI
, SI_5513
,"85C5513"), 150 DEVICE( SI
, SI_5571
,"5571"), 151 DEVICE( SI
, SI_5597
,"5597"), 152 DEVICE( SI
, SI_7001
,"7001"), 153 DEVICE( HP
, HP_J2585A
,"J2585A"), 154 DEVICE( HP
, HP_J2585B
,"J2585B (Lassen)"), 155 DEVICE( PCTECH
, PCTECH_RZ1000
,"RZ1000 (buggy)"), 156 DEVICE( PCTECH
, PCTECH_RZ1001
,"RZ1001 (buggy?)"), 157 DEVICE( PCTECH
, PCTECH_SAMURAI_0
,"Samurai 0"), 158 DEVICE( PCTECH
, PCTECH_SAMURAI_1
,"Samurai 1"), 159 DEVICE( PCTECH
, PCTECH_SAMURAI_IDE
,"Samurai IDE"), 160 DEVICE( DPT
, DPT
,"SmartCache/Raid"), 161 DEVICE( OPTI
, OPTI_92C178
,"92C178"), 162 DEVICE( OPTI
, OPTI_82C557
,"82C557 Viper-M"), 163 DEVICE( OPTI
, OPTI_82C558
,"82C558 Viper-M ISA+IDE"), 164 DEVICE( OPTI
, OPTI_82C621
,"82C621"), 165 DEVICE( OPTI
, OPTI_82C700
,"82C700"), 166 DEVICE( OPTI
, OPTI_82C701
,"82C701 FireStar Plus"), 167 DEVICE( OPTI
, OPTI_82C814
,"82C814 Firebridge 1"), 168 DEVICE( OPTI
, OPTI_82C822
,"82C822"), 169 DEVICE( OPTI
, OPTI_82C825
,"82C825 Firebridge 2"), 170 DEVICE( SGS
, SGS_2000
,"STG 2000X"), 171 DEVICE( SGS
, SGS_1764
,"STG 1764X"), 172 DEVICE( BUSLOGIC
, BUSLOGIC_MULTIMASTER_NC
,"MultiMaster NC"), 173 DEVICE( BUSLOGIC
, BUSLOGIC_MULTIMASTER
,"MultiMaster"), 174 DEVICE( BUSLOGIC
, BUSLOGIC_FLASHPOINT
,"FlashPoint"), 175 DEVICE( TI
, TI_TVP4010
,"TVP4010 Permedia"), 176 DEVICE( TI
, TI_TVP4020
,"TVP4020 Permedia 2"), 177 DEVICE( TI
, TI_PCI1130
,"PCI1130"), 178 DEVICE( TI
, TI_PCI1131
,"PCI1131"), 179 DEVICE( TI
, TI_PCI1250
,"PCI1250"), 180 DEVICE( OAK
, OAK_OTI107
,"OTI107"), 181 DEVICE( WINBOND2
, WINBOND2_89C940
,"NE2000-PCI"), 182 DEVICE( MOTOROLA
, MOTOROLA_MPC105
,"MPC105 Eagle"), 183 DEVICE( MOTOROLA
, MOTOROLA_MPC106
,"MPC106 Grackle"), 184 DEVICE( MOTOROLA
, MOTOROLA_RAVEN
,"Raven"), 185 DEVICE( PROMISE
, PROMISE_20246
,"IDE UltraDMA/33"), 186 DEVICE( PROMISE
, PROMISE_5300
,"DC5030"), 187 DEVICE( N9
, N9_I128
,"Imagine 128"), 188 DEVICE( N9
, N9_I128_2
,"Imagine 128v2"), 189 DEVICE( UMC
, UMC_UM8673F
,"UM8673F"), 190 DEVICE( UMC
, UMC_UM8891A
,"UM8891A"), 191 DEVICE( UMC
, UMC_UM8886BF
,"UM8886BF"), 192 DEVICE( UMC
, UMC_UM8886A
,"UM8886A"), 193 DEVICE( UMC
, UMC_UM8881F
,"UM8881F"), 194 DEVICE( UMC
, UMC_UM8886F
,"UM8886F"), 195 DEVICE( UMC
, UMC_UM9017F
,"UM9017F"), 196 DEVICE( UMC
, UMC_UM8886N
,"UM8886N"), 197 DEVICE( UMC
, UMC_UM8891N
,"UM8891N"), 198 DEVICE( X
, X_AGX016
,"ITT AGX016"), 199 DEVICE( PICOP
, PICOP_PT86C52X
,"PT86C52x Vesuvius"), 200 DEVICE( APPLE
, APPLE_BANDIT
,"Bandit"), 201 DEVICE( APPLE
, APPLE_GC
,"Grand Central"), 202 DEVICE( APPLE
, APPLE_HYDRA
,"Hydra"), 203 DEVICE( NEXGEN
, NEXGEN_82C501
,"82C501"), 204 DEVICE( QLOGIC
, QLOGIC_ISP1020
,"ISP1020"), 205 DEVICE( QLOGIC
, QLOGIC_ISP1022
,"ISP1022"), 206 DEVICE( CYRIX
, CYRIX_5510
,"5510"), 207 DEVICE( CYRIX
, CYRIX_PCI_MASTER
,"PCI Master"), 208 DEVICE( CYRIX
, CYRIX_5520
,"5520"), 209 DEVICE( CYRIX
, CYRIX_5530_LEGACY
,"5530 Kahlua Legacy"), 210 DEVICE( CYRIX
, CYRIX_5530_SMI
,"5530 Kahlua SMI"), 211 DEVICE( CYRIX
, CYRIX_5530_IDE
,"5530 Kahlua IDE"), 212 DEVICE( CYRIX
, CYRIX_5530_AUDIO
,"5530 Kahlua Audio"), 213 DEVICE( CYRIX
, CYRIX_5530_VIDEO
,"5530 Kahlua Video"), 214 DEVICE( LEADTEK
, LEADTEK_805
,"S3 805"), 215 DEVICE( CONTAQ
, CONTAQ_82C599
,"82C599"), 216 DEVICE( OLICOM
, OLICOM_OC3136
,"OC-3136/3137"), 217 DEVICE( OLICOM
, OLICOM_OC2315
,"OC-2315"), 218 DEVICE( OLICOM
, OLICOM_OC2325
,"OC-2325"), 219 DEVICE( OLICOM
, OLICOM_OC2183
,"OC-2183/2185"), 220 DEVICE( OLICOM
, OLICOM_OC2326
,"OC-2326"), 221 DEVICE( OLICOM
, OLICOM_OC6151
,"OC-6151/6152"), 222 DEVICE( SUN
, SUN_EBUS
,"EBUS"), 223 DEVICE( SUN
, SUN_HAPPYMEAL
,"Happy Meal"), 224 DEVICE( SUN
, SUN_PBM
,"PCI Bus Module"), 225 DEVICE( CMD
, CMD_640
,"640 (buggy)"), 226 DEVICE( CMD
, CMD_643
,"643"), 227 DEVICE( CMD
, CMD_646
,"646"), 228 DEVICE( CMD
, CMD_670
,"670"), 229 DEVICE( VISION
, VISION_QD8500
,"QD-8500"), 230 DEVICE( VISION
, VISION_QD8580
,"QD-8580"), 231 DEVICE( BROOKTREE
, BROOKTREE_848
,"Bt848"), 232 DEVICE( BROOKTREE
, BROOKTREE_849A
,"Bt849"), 233 DEVICE( BROOKTREE
, BROOKTREE_8474
,"Bt8474"), 234 DEVICE( SIERRA
, SIERRA_STB
,"STB Horizon 64"), 235 DEVICE( ACC
, ACC_2056
,"2056"), 236 DEVICE( WINBOND
, WINBOND_83769
,"W83769F"), 237 DEVICE( WINBOND
, WINBOND_82C105
,"SL82C105"), 238 DEVICE( WINBOND
, WINBOND_83C553
,"W83C553"), 239 DEVICE( DATABOOK
, DATABOOK_87144
,"DB87144"), 240 DEVICE( PLX
, PLX_9080
,"PCI9080 I2O"), 241 DEVICE(3COM
,3COM_3C590
,"3C590 10bT"), 242 DEVICE(3COM
,3COM_3C595TX
,"3C595 100bTX"), 243 DEVICE(3COM
,3COM_3C595T4
,"3C595 100bT4"), 244 DEVICE(3COM
,3COM_3C595MII
,"3C595 100b-MII"), 245 DEVICE(3COM
,3COM_3C900TPO
,"3C900 10bTPO"), 246 DEVICE(3COM
,3COM_3C900COMBO
,"3C900 10b Combo"), 247 DEVICE(3COM
,3COM_3C905TX
,"3C905 100bTX"), 248 DEVICE( SMC
, SMC_EPIC100
,"9432 TX"), 249 DEVICE( AL
, AL_M1445
,"M1445"), 250 DEVICE( AL
, AL_M1449
,"M1449"), 251 DEVICE( AL
, AL_M1451
,"M1451"), 252 DEVICE( AL
, AL_M1461
,"M1461"), 253 DEVICE( AL
, AL_M1489
,"M1489"), 254 DEVICE( AL
, AL_M1511
,"M1511"), 255 DEVICE( AL
, AL_M1513
,"M1513"), 256 DEVICE( AL
, AL_M1521
,"M1521"), 257 DEVICE( AL
, AL_M1523
,"M1523"), 258 DEVICE( AL
, AL_M1531
,"M1531 Aladdin IV"), 259 DEVICE( AL
, AL_M1533
,"M1533 Aladdin IV"), 260 DEVICE( AL
, AL_M3307
,"M3307 MPEG-1 decoder"), 261 DEVICE( AL
, AL_M4803
,"M4803"), 262 DEVICE( AL
, AL_M5219
,"M5219"), 263 DEVICE( AL
, AL_M5229
,"M5229 TXpro"), 264 DEVICE( AL
, AL_M5237
,"M5237 USB"), 265 DEVICE( SURECOM
, SURECOM_NE34
,"NE-34PCI LAN"), 266 DEVICE( NEOMAGIC
, NEOMAGIC_MAGICGRAPH_NM2070
,"Magicgraph NM2070"), 267 DEVICE( NEOMAGIC
, NEOMAGIC_MAGICGRAPH_128V
,"MagicGraph 128V"), 268 DEVICE( NEOMAGIC
, NEOMAGIC_MAGICGRAPH_128ZV
,"MagicGraph 128ZV"), 269 DEVICE( NEOMAGIC
, NEOMAGIC_MAGICGRAPH_NM2160
,"MagicGraph NM2160"), 270 DEVICE( ASP
, ASP_ABP940
,"ABP940"), 271 DEVICE( ASP
, ASP_ABP940U
,"ABP940U"), 272 DEVICE( ASP
, ASP_ABP940UW
,"ABP940UW"), 273 DEVICE( CERN
, CERN_SPSB_PMC
,"STAR/RD24 SCI-PCI (PMC)"), 274 DEVICE( CERN
, CERN_SPSB_PCI
,"STAR/RD24 SCI-PCI (PMC)"), 275 DEVICE( IMS
, IMS_8849
,"8849"), 276 DEVICE( TEKRAM2
, TEKRAM2_690c
,"DC690c"), 277 DEVICE( TUNDRA
, TUNDRA_CA91C042
,"CA91C042 Universe"), 278 DEVICE( AMCC
, AMCC_MYRINET
,"Myrinet PCI (M2-PCI-32)"), 279 DEVICE( AMCC
, AMCC_S5933
,"S5933 PCI44"), 280 DEVICE( AMCC
, AMCC_S5933_HEPC3
,"S5933 Traquair HEPC3"), 281 DEVICE( INTERG
, INTERG_1680
,"IGA-1680"), 282 DEVICE( INTERG
, INTERG_1682
,"IGA-1682"), 283 DEVICE( REALTEK
, REALTEK_8029
,"8029"), 284 DEVICE( REALTEK
, REALTEK_8129
,"8129"), 285 DEVICE( TRUEVISION
, TRUEVISION_T1000
,"TARGA 1000"), 286 DEVICE( INIT
, INIT_320P
,"320 P"), 287 DEVICE( INIT
, INIT_360P
,"360 P"), 288 DEVICE( VIA
, VIA_82C505
,"VT 82C505"), 289 DEVICE( VIA
, VIA_82C561
,"VT 82C561"), 290 DEVICE( VIA
, VIA_82C586_1
,"VT 82C586 Apollo IDE"), 291 DEVICE( VIA
, VIA_82C576
,"VT 82C576 3V"), 292 DEVICE( VIA
, VIA_82C585
,"VT 82C585 Apollo VP1/VPX"), 293 DEVICE( VIA
, VIA_82C586_0
,"VT 82C586 Apollo ISA"), 294 DEVICE( VIA
, VIA_82C595
,"VT 82C595 Apollo VP2"), 295 DEVICE( VIA
, VIA_82C597_0
,"VT 82C597 Apollo VP3"), 296 DEVICE( VIA
, VIA_82C926
,"VT 82C926 Amazon"), 297 DEVICE( VIA
, VIA_82C416
,"VT 82C416MV"), 298 DEVICE( VIA
, VIA_82C595_97
,"VT 82C595 Apollo VP2/97"), 299 DEVICE( VIA
, VIA_82C586_2
,"VT 82C586 Apollo USB"), 300 DEVICE( VIA
, VIA_82C586_3
,"VT 82C586B Apollo ACPI"), 301 DEVICE( VIA
, VIA_82C597_1
,"VT 82C597 Apollo VP3 AGP"), 302 DEVICE( VORTEX
, VORTEX_GDT60x0
,"GDT 60x0"), 303 DEVICE( VORTEX
, VORTEX_GDT6000B
,"GDT 6000b"), 304 DEVICE( VORTEX
, VORTEX_GDT6x10
,"GDT 6110/6510"), 305 DEVICE( VORTEX
, VORTEX_GDT6x20
,"GDT 6120/6520"), 306 DEVICE( VORTEX
, VORTEX_GDT6530
,"GDT 6530"), 307 DEVICE( VORTEX
, VORTEX_GDT6550
,"GDT 6550"), 308 DEVICE( VORTEX
, VORTEX_GDT6x17
,"GDT 6117/6517"), 309 DEVICE( VORTEX
, VORTEX_GDT6x27
,"GDT 6127/6527"), 310 DEVICE( VORTEX
, VORTEX_GDT6537
,"GDT 6537"), 311 DEVICE( VORTEX
, VORTEX_GDT6557
,"GDT 6557"), 312 DEVICE( VORTEX
, VORTEX_GDT6x15
,"GDT 6115/6515"), 313 DEVICE( VORTEX
, VORTEX_GDT6x25
,"GDT 6125/6525"), 314 DEVICE( VORTEX
, VORTEX_GDT6535
,"GDT 6535"), 315 DEVICE( VORTEX
, VORTEX_GDT6555
,"GDT 6555"), 316 DEVICE( VORTEX
, VORTEX_GDT6x17RP
,"GDT 6117RP/6517RP"), 317 DEVICE( VORTEX
, VORTEX_GDT6x27RP
,"GDT 6127RP/6527RP"), 318 DEVICE( VORTEX
, VORTEX_GDT6537RP
,"GDT 6537RP"), 319 DEVICE( VORTEX
, VORTEX_GDT6557RP
,"GDT 6557RP"), 320 DEVICE( VORTEX
, VORTEX_GDT6x11RP
,"GDT 6111RP/6511RP"), 321 DEVICE( VORTEX
, VORTEX_GDT6x21RP
,"GDT 6121RP/6521RP"), 322 DEVICE( VORTEX
, VORTEX_GDT6x17RP1
,"GDT 6117RP1/6517RP1"), 323 DEVICE( VORTEX
, VORTEX_GDT6x27RP1
,"GDT 6127RP1/6527RP1"), 324 DEVICE( VORTEX
, VORTEX_GDT6537RP1
,"GDT 6537RP1"), 325 DEVICE( VORTEX
, VORTEX_GDT6557RP1
,"GDT 6557RP1"), 326 DEVICE( VORTEX
, VORTEX_GDT6x11RP1
,"GDT 6111RP1/6511RP1"), 327 DEVICE( VORTEX
, VORTEX_GDT6x21RP1
,"GDT 6121RP1/6521RP1"), 328 DEVICE( VORTEX
, VORTEX_GDT6x17RP2
,"GDT 6117RP2/6517RP2"), 329 DEVICE( VORTEX
, VORTEX_GDT6x27RP2
,"GDT 6127RP2/6527RP2"), 330 DEVICE( VORTEX
, VORTEX_GDT6537RP2
,"GDT 6537RP2"), 331 DEVICE( VORTEX
, VORTEX_GDT6557RP2
,"GDT 6557RP2"), 332 DEVICE( VORTEX
, VORTEX_GDT6x11RP2
,"GDT 6111RP2/6511RP2"), 333 DEVICE( VORTEX
, VORTEX_GDT6x21RP2
,"GDT 6121RP2/6521RP2"), 334 DEVICE( EF
, EF_ATM_FPGA
,"155P-MF1 (FPGA)"), 335 DEVICE( EF
, EF_ATM_ASIC
,"155P-MF1 (ASIC)"), 336 DEVICE( FORE
, FORE_PCA200PC
,"PCA-200PC"), 337 DEVICE( FORE
, FORE_PCA200E
,"PCA-200E"), 338 DEVICE( IMAGINGTECH
, IMAGINGTECH_ICPCI
,"MVC IC-PCI"), 339 DEVICE( PHILIPS
, PHILIPS_SAA7146
,"SAA7146"), 340 DEVICE( CYCLONE
, CYCLONE_SDK
,"SDK"), 341 DEVICE( ALLIANCE
, ALLIANCE_PROMOTIO
,"Promotion-6410"), 342 DEVICE( ALLIANCE
, ALLIANCE_PROVIDEO
,"Provideo"), 343 DEVICE( ALLIANCE
, ALLIANCE_AT24
,"AT24"), 344 DEVICE( ALLIANCE
, ALLIANCE_AT3D
,"AT3D"), 345 DEVICE( VMIC
, VMIC_VME
,"VMIVME-7587"), 346 DEVICE( DIGI
, DIGI_EPC
,"AccelPort EPC"), 347 DEVICE( DIGI
, DIGI_RIGHTSWITCH
,"RightSwitch SE-6"), 348 DEVICE( DIGI
, DIGI_XEM
,"AccelPort Xem"), 349 DEVICE( DIGI
, DIGI_XR
,"AccelPort Xr"), 350 DEVICE( DIGI
, DIGI_CX
,"AccelPort C/X"), 351 DEVICE( DIGI
, DIGI_XRJ
,"AccelPort Xr/J"), 352 DEVICE( DIGI
, DIGI_EPCJ
,"AccelPort EPC/J"), 353 DEVICE( MUTECH
, MUTECH_MV1000
,"MV-1000"), 354 DEVICE( RENDITION
, RENDITION_VERITE
,"Verite 1000"), 355 DEVICE( RENDITION
, RENDITION_VERITE2100
,"Verite 2100"), 356 DEVICE( TOSHIBA
, TOSHIBA_601
,"Laptop"), 357 DEVICE( TOSHIBA
, TOSHIBA_TOPIC95
,"ToPIC95"), 358 DEVICE( TOSHIBA
, TOSHIBA_TOPIC97
,"ToPIC97"), 359 DEVICE( RICOH
, RICOH_RL5C466
,"RL5C466"), 360 DEVICE( ARTOP
, ARTOP_ATP850UF
,"ATP850UF"), 361 DEVICE( ZEITNET
, ZEITNET_1221
,"1221"), 362 DEVICE( ZEITNET
, ZEITNET_1225
,"1225"), 363 DEVICE( OMEGA
, OMEGA_82C092G
,"82C092G"), 364 DEVICE( LITEON
, LITEON_LNE100TX
,"LNE100TX"), 365 DEVICE( NP
, NP_PCI_FDDI
,"NP-PCI"), 366 DEVICE( ATT
, ATT_L56XMF
,"L56xMF"), 367 DEVICE( SPECIALIX
, SPECIALIX_XIO
,"XIO/SIO host"), 368 DEVICE( SPECIALIX
, SPECIALIX_RIO
,"RIO host"), 369 DEVICE( AURAVISION
, AURAVISION_VXP524
,"VXP524"), 370 DEVICE( IKON
, IKON_10115
,"10115 Greensheet"), 371 DEVICE( IKON
, IKON_10117
,"10117 Greensheet"), 372 DEVICE( ZORAN
, ZORAN_36057
,"ZR36057"), 373 DEVICE( ZORAN
, ZORAN_36120
,"ZR36120"), 374 DEVICE( COMPEX
, COMPEX_ENET100VG4
,"Readylink ENET100-VG4"), 375 DEVICE( COMPEX
, COMPEX_RL2000
,"ReadyLink 2000"), 376 DEVICE( RP
, RP8OCTA
,"RocketPort 8 Oct"), 377 DEVICE( RP
, RP8INTF
,"RocketPort 8 Intf"), 378 DEVICE( RP
, RP16INTF
,"RocketPort 16 Intf"), 379 DEVICE( RP
, RP32INTF
,"RocketPort 32 Intf"), 380 DEVICE( CYCLADES
, CYCLOM_Y_Lo
,"Cyclom-Y below 1Mbyte"), 381 DEVICE( CYCLADES
, CYCLOM_Y_Hi
,"Cyclom-Y above 1Mbyte"), 382 DEVICE( CYCLADES
, CYCLOM_Z_Lo
,"Cyclom-Z below 1Mbyte"), 383 DEVICE( CYCLADES
, CYCLOM_Z_Hi
,"Cyclom-Z above 1Mbyte"), 384 DEVICE( O2
, O2_6832
,"6832"), 385 DEVICE(3DFX
,3DFX_VOODOO
,"Voodoo"), 386 DEVICE(3DFX
,3DFX_VOODOO2
,"Voodoo2"), 387 DEVICE( SIGMADES
, SIGMADES_6425
,"REALmagic64/GX"), 388 DEVICE( STALLION
, STALLION_ECHPCI832
,"EasyConnection 8/32"), 389 DEVICE( STALLION
, STALLION_ECHPCI864
,"EasyConnection 8/64"), 390 DEVICE( STALLION
, STALLION_EIOPCI
,"EasyIO"), 391 DEVICE( OPTIBASE
, OPTIBASE_FORGE
,"MPEG Forge"), 392 DEVICE( OPTIBASE
, OPTIBASE_FUSION
,"MPEG Fusion"), 393 DEVICE( OPTIBASE
, OPTIBASE_VPLEX
,"VideoPlex"), 394 DEVICE( OPTIBASE
, OPTIBASE_VPLEXCC
,"VideoPlex CC"), 395 DEVICE( OPTIBASE
, OPTIBASE_VQUEST
,"VideoQuest"), 396 DEVICE( ENSONIQ
, ENSONIQ_AUDIOPCI
,"AudioPCI"), 397 DEVICE( PICTUREL
, PICTUREL_PCIVST
,"PCIVST"), 398 DEVICE( NVIDIA_SGS
, NVIDIA_SGS_RIVA128
,"Riva 128"), 399 DEVICE( SYMPHONY
, SYMPHONY_101
,"82C101"), 400 DEVICE( TEKRAM
, TEKRAM_DC290
,"DC-290"), 401 DEVICE(3DLABS
,3DLABS_300SX
,"GLINT 300SX"), 402 DEVICE(3DLABS
,3DLABS_500TX
,"GLINT 500TX"), 403 DEVICE(3DLABS
,3DLABS_DELTA
,"GLINT Delta"), 404 DEVICE(3DLABS
,3DLABS_PERMEDIA
,"PERMEDIA"), 405 DEVICE( AVANCE
, AVANCE_ALG2064
,"ALG2064i"), 406 DEVICE( AVANCE
, AVANCE_2302
,"ALG-2302"), 407 DEVICE( NETVIN
, NETVIN_NV5000SC
,"NV5000"), 408 DEVICE( S3
, S3_PLATO_PXS
,"PLATO/PX (system)"), 409 DEVICE( S3
, S3_ViRGE
,"ViRGE"), 410 DEVICE( S3
, S3_TRIO
,"Trio32/Trio64"), 411 DEVICE( S3
, S3_AURORA64VP
,"Aurora64V+"), 412 DEVICE( S3
, S3_TRIO64UVP
,"Trio64UV+"), 413 DEVICE( S3
, S3_ViRGE_VX
,"ViRGE/VX"), 414 DEVICE( S3
, S3_868
,"Vision 868"), 415 DEVICE( S3
, S3_928
,"Vision 928-P"), 416 DEVICE( S3
, S3_864_1
,"Vision 864-P"), 417 DEVICE( S3
, S3_864_2
,"Vision 864-P"), 418 DEVICE( S3
, S3_964_1
,"Vision 964-P"), 419 DEVICE( S3
, S3_964_2
,"Vision 964-P"), 420 DEVICE( S3
, S3_968
,"Vision 968"), 421 DEVICE( S3
, S3_TRIO64V2
,"Trio64V2/DX or /GX"), 422 DEVICE( S3
, S3_PLATO_PXG
,"PLATO/PX (graphics)"), 423 DEVICE( S3
, S3_ViRGE_DXGX
,"ViRGE/DX or /GX"), 424 DEVICE( S3
, S3_ViRGE_GX2
,"ViRGE/GX2"), 425 DEVICE( S3
, S3_ViRGE_MX
,"ViRGE/MX"), 426 DEVICE( S3
, S3_ViRGE_MXP
,"ViRGE/MX+"), 427 DEVICE( S3
, S3_ViRGE_MXPMV
,"ViRGE/MX+MV"), 428 DEVICE( S3
, S3_SONICVIBES
,"SonicVibes"), 429 DEVICE( INTEL
, INTEL_82375
,"82375EB"), 430 DEVICE( INTEL
, INTEL_82424
,"82424ZX Saturn"), 431 DEVICE( INTEL
, INTEL_82378
,"82378IB"), 432 DEVICE( INTEL
, INTEL_82430
,"82430ZX Aries"), 433 DEVICE( INTEL
, INTEL_82434
,"82434LX Mercury/Neptune"), 434 DEVICE( INTEL
, INTEL_82092AA_0
,"82092AA PCMCIA bridge"), 435 DEVICE( INTEL
, INTEL_82092AA_1
,"82092AA EIDE"), 436 DEVICE( INTEL
, INTEL_7116
,"SAA7116"), 437 DEVICE( INTEL
, INTEL_82596
,"82596"), 438 DEVICE( INTEL
, INTEL_82865
,"82865"), 439 DEVICE( INTEL
, INTEL_82557
,"82557"), 440 DEVICE( INTEL
, INTEL_82437
,"82437"), 441 DEVICE( INTEL
, INTEL_82371FB_0
,"82371FB PIIX ISA"), 442 DEVICE( INTEL
, INTEL_82371FB_1
,"82371FB PIIX IDE"), 443 DEVICE( INTEL
, INTEL_82371MX
,"430MX - 82371MX MPIIX"), 444 DEVICE( INTEL
, INTEL_82437MX
,"430MX - 82437MX MTSC"), 445 DEVICE( INTEL
, INTEL_82441
,"82441FX Natoma"), 446 DEVICE( INTEL
, INTEL_82439
,"82439HX Triton II"), 447 DEVICE( INTEL
, INTEL_82371SB_0
,"82371SB PIIX3 ISA"), 448 DEVICE( INTEL
, INTEL_82371SB_1
,"82371SB PIIX3 IDE"), 449 DEVICE( INTEL
, INTEL_82371SB_2
,"82371SB PIIX3 USB"), 450 DEVICE( INTEL
, INTEL_82437VX
,"82437VX Triton II"), 451 DEVICE( INTEL
, INTEL_82439TX
,"82439TX"), 452 DEVICE( INTEL
, INTEL_82371AB_0
,"82371AB PIIX4 ISA"), 453 DEVICE( INTEL
, INTEL_82371AB
,"82371AB PIIX4 IDE"), 454 DEVICE( INTEL
, INTEL_82371AB_2
,"82371AB PIIX4 USB"), 455 DEVICE( INTEL
, INTEL_82371AB_3
,"82371AB PIIX4 ACPI"), 456 DEVICE( INTEL
, INTEL_82443LX_0
,"440LX - 82443LX PAC Host"), 457 DEVICE( INTEL
, INTEL_82443LX_1
,"440LX - 82443LX PAC AGP"), 458 DEVICE( INTEL
, INTEL_P6
,"Orion P6"), 459 DEVICE( INTEL
, INTEL_82450GX
,"82450GX Orion P6"), 460 DEVICE( KTI
, KTI_ET32P2
,"ET32P2"), 461 DEVICE( ADAPTEC
, ADAPTEC_7850
,"AIC-7850"), 462 DEVICE( ADAPTEC
, ADAPTEC_7855
,"AIC-7855"), 463 DEVICE( ADAPTEC
, ADAPTEC_5800
,"AIC-5800"), 464 DEVICE( ADAPTEC
, ADAPTEC_7860
,"AIC-7860"), 465 DEVICE( ADAPTEC
, ADAPTEC_7861
,"AIC-7861"), 466 DEVICE( ADAPTEC
, ADAPTEC_7870
,"AIC-7870"), 467 DEVICE( ADAPTEC
, ADAPTEC_7871
,"AIC-7871"), 468 DEVICE( ADAPTEC
, ADAPTEC_7872
,"AIC-7872"), 469 DEVICE( ADAPTEC
, ADAPTEC_7873
,"AIC-7873"), 470 DEVICE( ADAPTEC
, ADAPTEC_7874
,"AIC-7874"), 471 DEVICE( ADAPTEC
, ADAPTEC_7895
,"AIC-7895U"), 472 DEVICE( ADAPTEC
, ADAPTEC_7880
,"AIC-7880U"), 473 DEVICE( ADAPTEC
, ADAPTEC_7881
,"AIC-7881U"), 474 DEVICE( ADAPTEC
, ADAPTEC_7882
,"AIC-7882U"), 475 DEVICE( ADAPTEC
, ADAPTEC_7883
,"AIC-7883U"), 476 DEVICE( ADAPTEC
, ADAPTEC_7884
,"AIC-7884U"), 477 DEVICE( ATRONICS
, ATRONICS_2015
,"IDE-2015PL"), 478 DEVICE( ARK
, ARK_STING
,"Stingray"), 479 DEVICE( ARK
, ARK_STINGARK
,"Stingray ARK 2000PV"), 480 DEVICE( ARK
, ARK_2000MT
,"2000MT") 485 * device_info[] is sorted so we can use binary search 487 static struct pci_dev_info
*pci_lookup_dev(unsigned int vendor
,unsigned int dev
) 490 max
=sizeof(dev_info
)/sizeof(dev_info
[0]) -1; 494 int i
= (min
+ max
) >>1; 497 order
= dev_info
[i
].vendor
- (long) vendor
; 499 order
= dev_info
[i
].device
- (long) dev
; 517 return& dev_info
[ i
]; 521 static const char*pci_strclass(unsigned intclass) 524 case PCI_CLASS_NOT_DEFINED
:return"Non-VGA device"; 525 case PCI_CLASS_NOT_DEFINED_VGA
:return"VGA compatible device"; 527 case PCI_CLASS_STORAGE_SCSI
:return"SCSI storage controller"; 528 case PCI_CLASS_STORAGE_IDE
:return"IDE interface"; 529 case PCI_CLASS_STORAGE_FLOPPY
:return"Floppy disk controller"; 530 case PCI_CLASS_STORAGE_IPI
:return"IPI bus controller"; 531 case PCI_CLASS_STORAGE_RAID
:return"RAID bus controller"; 532 case PCI_CLASS_STORAGE_OTHER
:return"Unknown mass storage controller"; 534 case PCI_CLASS_NETWORK_ETHERNET
:return"Ethernet controller"; 535 case PCI_CLASS_NETWORK_TOKEN_RING
:return"Token ring network controller"; 536 case PCI_CLASS_NETWORK_FDDI
:return"FDDI network controller"; 537 case PCI_CLASS_NETWORK_ATM
:return"ATM network controller"; 538 case PCI_CLASS_NETWORK_OTHER
:return"Network controller"; 540 case PCI_CLASS_DISPLAY_VGA
:return"VGA compatible controller"; 541 case PCI_CLASS_DISPLAY_XGA
:return"XGA compatible controller"; 542 case PCI_CLASS_DISPLAY_OTHER
:return"Display controller"; 544 case PCI_CLASS_MULTIMEDIA_VIDEO
:return"Multimedia video controller"; 545 case PCI_CLASS_MULTIMEDIA_AUDIO
:return"Multimedia audio controller"; 546 case PCI_CLASS_MULTIMEDIA_OTHER
:return"Multimedia controller"; 548 case PCI_CLASS_MEMORY_RAM
:return"RAM memory"; 549 case PCI_CLASS_MEMORY_FLASH
:return"FLASH memory"; 550 case PCI_CLASS_MEMORY_OTHER
:return"Memory"; 552 case PCI_CLASS_BRIDGE_HOST
:return"Host bridge"; 553 case PCI_CLASS_BRIDGE_ISA
:return"ISA bridge"; 554 case PCI_CLASS_BRIDGE_EISA
:return"EISA bridge"; 555 case PCI_CLASS_BRIDGE_MC
:return"MicroChannel bridge"; 556 case PCI_CLASS_BRIDGE_PCI
:return"PCI bridge"; 557 case PCI_CLASS_BRIDGE_PCMCIA
:return"PCMCIA bridge"; 558 case PCI_CLASS_BRIDGE_NUBUS
:return"NuBus bridge"; 559 case PCI_CLASS_BRIDGE_CARDBUS
:return"CardBus bridge"; 560 case PCI_CLASS_BRIDGE_OTHER
:return"Bridge"; 562 case PCI_CLASS_COMMUNICATION_SERIAL
:return"Serial controller"; 563 case PCI_CLASS_COMMUNICATION_PARALLEL
:return"Parallel controller"; 564 case PCI_CLASS_COMMUNICATION_OTHER
:return"Communication controller"; 566 case PCI_CLASS_SYSTEM_PIC
:return"PIC"; 567 case PCI_CLASS_SYSTEM_DMA
:return"DMA controller"; 568 case PCI_CLASS_SYSTEM_TIMER
:return"Timer"; 569 case PCI_CLASS_SYSTEM_RTC
:return"RTC"; 570 case PCI_CLASS_SYSTEM_OTHER
:return"System peripheral"; 572 case PCI_CLASS_INPUT_KEYBOARD
:return"Keyboard controller"; 573 case PCI_CLASS_INPUT_PEN
:return"Digitizer Pen"; 574 case PCI_CLASS_INPUT_MOUSE
:return"Mouse controller"; 575 case PCI_CLASS_INPUT_OTHER
:return"Input device controller"; 577 case PCI_CLASS_DOCKING_GENERIC
:return"Generic Docking Station"; 578 case PCI_CLASS_DOCKING_OTHER
:return"Docking Station"; 580 case PCI_CLASS_PROCESSOR_386
:return"386"; 581 case PCI_CLASS_PROCESSOR_486
:return"486"; 582 case PCI_CLASS_PROCESSOR_PENTIUM
:return"Pentium"; 583 case PCI_CLASS_PROCESSOR_ALPHA
:return"Alpha"; 584 case PCI_CLASS_PROCESSOR_POWERPC
:return"Power PC"; 585 case PCI_CLASS_PROCESSOR_CO
:return"Co-processor"; 587 case PCI_CLASS_SERIAL_FIREWIRE
:return"FireWire (IEEE 1394)"; 588 case PCI_CLASS_SERIAL_ACCESS
:return"ACCESS Bus"; 589 case PCI_CLASS_SERIAL_SSA
:return"SSA"; 590 case PCI_CLASS_SERIAL_USB
:return"USB Controller"; 591 case PCI_CLASS_SERIAL_FIBER
:return"Fiber Channel"; 593 default:return"Unknown class"; 598 static const char*pci_strvendor(unsigned int vendor
) 601 case PCI_VENDOR_ID_COMPAQ
:return"Compaq"; 602 case PCI_VENDOR_ID_NCR
:return"NCR"; 603 case PCI_VENDOR_ID_ATI
:return"ATI"; 604 case PCI_VENDOR_ID_VLSI
:return"VLSI"; 605 case PCI_VENDOR_ID_ADL
:return"Avance Logic"; 606 case PCI_VENDOR_ID_NS
:return"NS"; 607 case PCI_VENDOR_ID_TSENG
:return"Tseng'Lab"; 608 case PCI_VENDOR_ID_WEITEK
:return"Weitek"; 609 case PCI_VENDOR_ID_DEC
:return"DEC"; 610 case PCI_VENDOR_ID_CIRRUS
:return"Cirrus Logic"; 611 case PCI_VENDOR_ID_IBM
:return"IBM"; 612 case PCI_VENDOR_ID_WD
:return"Western Digital"; 613 case PCI_VENDOR_ID_AMD
:return"AMD"; 614 case PCI_VENDOR_ID_TRIDENT
:return"Trident"; 615 case PCI_VENDOR_ID_AI
:return"Acer Incorporated"; 616 case PCI_VENDOR_ID_MATROX
:return"Matrox"; 617 case PCI_VENDOR_ID_CT
:return"Chips & Technologies"; 618 case PCI_VENDOR_ID_MIRO
:return"Miro"; 619 case PCI_VENDOR_ID_NEC
:return"NEC"; 620 case PCI_VENDOR_ID_FD
:return"Future Domain"; 621 case PCI_VENDOR_ID_SI
:return"Silicon Integrated Systems"; 622 case PCI_VENDOR_ID_HP
:return"Hewlett Packard"; 623 case PCI_VENDOR_ID_PCTECH
:return"PCTECH"; 624 case PCI_VENDOR_ID_DPT
:return"DPT"; 625 case PCI_VENDOR_ID_OPTI
:return"OPTi"; 626 case PCI_VENDOR_ID_SGS
:return"SGS Thomson"; 627 case PCI_VENDOR_ID_BUSLOGIC
:return"BusLogic"; 628 case PCI_VENDOR_ID_TI
:return"Texas Instruments"; 629 case PCI_VENDOR_ID_OAK
:return"OAK"; 630 case PCI_VENDOR_ID_WINBOND2
:return"Winbond"; 631 case PCI_VENDOR_ID_MOTOROLA
:return"Motorola"; 632 case PCI_VENDOR_ID_PROMISE
:return"Promise Technology"; 633 case PCI_VENDOR_ID_N9
:return"Number Nine"; 634 case PCI_VENDOR_ID_UMC
:return"UMC"; 635 case PCI_VENDOR_ID_X
:return"X TECHNOLOGY"; 636 case PCI_VENDOR_ID_PICOP
:return"PicoPower"; 637 case PCI_VENDOR_ID_APPLE
:return"Apple"; 638 case PCI_VENDOR_ID_NEXGEN
:return"Nexgen"; 639 case PCI_VENDOR_ID_QLOGIC
:return"Q Logic"; 640 case PCI_VENDOR_ID_CYRIX
:return"Cyrix"; 641 case PCI_VENDOR_ID_LEADTEK
:return"Leadtek Research"; 642 case PCI_VENDOR_ID_CONTAQ
:return"Contaq"; 643 case PCI_VENDOR_ID_FOREX
:return"Forex"; 644 case PCI_VENDOR_ID_OLICOM
:return"Olicom"; 645 case PCI_VENDOR_ID_SUN
:return"Sun Microsystems"; 646 case PCI_VENDOR_ID_CMD
:return"CMD"; 647 case PCI_VENDOR_ID_VISION
:return"Vision"; 648 case PCI_VENDOR_ID_BROOKTREE
:return"Brooktree"; 649 case PCI_VENDOR_ID_SIERRA
:return"Sierra"; 650 case PCI_VENDOR_ID_ACC
:return"ACC MICROELECTRONICS"; 651 case PCI_VENDOR_ID_WINBOND
:return"Winbond"; 652 case PCI_VENDOR_ID_DATABOOK
:return"Databook"; 653 case PCI_VENDOR_ID_PLX
:return"PLX"; 654 case PCI_VENDOR_ID_3COM
:return"3Com"; 655 case PCI_VENDOR_ID_SMC
:return"SMC"; 656 case PCI_VENDOR_ID_AL
:return"Acer Labs"; 657 case PCI_VENDOR_ID_MITSUBISHI
:return"Mitsubishi"; 658 case PCI_VENDOR_ID_SURECOM
:return"Surecom"; 659 case PCI_VENDOR_ID_NEOMAGIC
:return"Neomagic"; 660 case PCI_VENDOR_ID_ASP
:return"Advanced System Products"; 661 case PCI_VENDOR_ID_CERN
:return"CERN"; 662 case PCI_VENDOR_ID_NVIDIA
:return"NVidia"; 663 case PCI_VENDOR_ID_IMS
:return"IMS"; 664 case PCI_VENDOR_ID_TEKRAM2
:return"Tekram"; 665 case PCI_VENDOR_ID_TUNDRA
:return"Tundra"; 666 case PCI_VENDOR_ID_AMCC
:return"AMCC"; 667 case PCI_VENDOR_ID_INTERG
:return"Intergraphics"; 668 case PCI_VENDOR_ID_REALTEK
:return"Realtek"; 669 case PCI_VENDOR_ID_TRUEVISION
:return"Truevision"; 670 case PCI_VENDOR_ID_INIT
:return"Initio Corp"; 671 case PCI_VENDOR_ID_VIA
:return"VIA Technologies"; 672 case PCI_VENDOR_ID_VORTEX
:return"VORTEX"; 673 case PCI_VENDOR_ID_EF
:return"Efficient Networks"; 674 case PCI_VENDOR_ID_FORE
:return"Fore Systems"; 675 case PCI_VENDOR_ID_IMAGINGTECH
:return"Imaging Technology"; 676 case PCI_VENDOR_ID_PHILIPS
:return"Philips"; 677 case PCI_VENDOR_ID_CYCLONE
:return"Cyclone"; 678 case PCI_VENDOR_ID_ALLIANCE
:return"Alliance"; 679 case PCI_VENDOR_ID_VMIC
:return"VMIC"; 680 case PCI_VENDOR_ID_DIGI
:return"Digi Intl."; 681 case PCI_VENDOR_ID_MUTECH
:return"Mutech"; 682 case PCI_VENDOR_ID_RENDITION
:return"Rendition"; 683 case PCI_VENDOR_ID_TOSHIBA
:return"Toshiba"; 684 case PCI_VENDOR_ID_RICOH
:return"Ricoh"; 685 case PCI_VENDOR_ID_ARTOP
:return"Artop Electronics"; 686 case PCI_VENDOR_ID_ZEITNET
:return"ZeitNet"; 687 case PCI_VENDOR_ID_OMEGA
:return"Omega Micro"; 688 case PCI_VENDOR_ID_LITEON
:return"LiteOn"; 689 case PCI_VENDOR_ID_NP
:return"Network Peripherals"; 690 case PCI_VENDOR_ID_ATT
:return"Lucent (ex-AT&T) Microelectronics"; 691 case PCI_VENDOR_ID_SPECIALIX
:return"Specialix"; 692 case PCI_VENDOR_ID_AURAVISION
:return"Auravision"; 693 case PCI_VENDOR_ID_IKON
:return"Ikon"; 694 case PCI_VENDOR_ID_ZORAN
:return"Zoran"; 695 case PCI_VENDOR_ID_COMPEX
:return"Compex"; 696 case PCI_VENDOR_ID_RP
:return"Comtrol"; 697 case PCI_VENDOR_ID_CYCLADES
:return"Cyclades"; 698 case PCI_VENDOR_ID_O2
:return"O2 Micro"; 699 case PCI_VENDOR_ID_3DFX
:return"3Dfx"; 700 case PCI_VENDOR_ID_STALLION
:return"Stallion Technologies"; 701 case PCI_VENDOR_ID_SIGMADES
:return"Sigma Designs"; 702 case PCI_VENDOR_ID_OPTIBASE
:return"Optibase"; 703 case PCI_VENDOR_ID_ENSONIQ
:return"Ensoniq"; 704 case PCI_VENDOR_ID_PICTUREL
:return"Picture Elements"; 705 case PCI_VENDOR_ID_NVIDIA_SGS
:return"NVidia/SGS Thomson"; 706 case PCI_VENDOR_ID_SYMPHONY
:return"Symphony"; 707 case PCI_VENDOR_ID_TEKRAM
:return"Tekram"; 708 case PCI_VENDOR_ID_3DLABS
:return"3Dlabs"; 709 case PCI_VENDOR_ID_AVANCE
:return"Avance"; 710 case PCI_VENDOR_ID_NETVIN
:return"NetVin"; 711 case PCI_VENDOR_ID_S3
:return"S3 Inc."; 712 case PCI_VENDOR_ID_INTEL
:return"Intel"; 713 case PCI_VENDOR_ID_KTI
:return"KTI"; 714 case PCI_VENDOR_ID_ADAPTEC
:return"Adaptec"; 715 case PCI_VENDOR_ID_ATRONICS
:return"Atronics"; 716 case PCI_VENDOR_ID_ARK
:return"ARK Logic"; 717 default:return"Unknown vendor"; 722 static const char*pci_strdev(unsigned int vendor
,unsigned int device
) 724 struct pci_dev_info
*info
; 726 info
=pci_lookup_dev(vendor
, device
); 727 return info
? info
->name
:"Unknown device"; 732 * Convert some of the configuration space registers of the device at 733 * address (bus,devfn) into a string (possibly several lines each). 734 * The configuration string is stored starting at buf[len]. If the 735 * string would exceed the size of the buffer (SIZE), 0 is returned. 737 static intsprint_dev_config(struct pci_dev
*dev
,char*buf
,int size
) 740 unsigned int l
, class_rev
, bus
, devfn
; 741 unsigned short vendor
, device
, status
; 742 unsigned char bist
, latency
, min_gnt
, max_lat
; 746 bus
= dev
->bus
->number
; 749 pcibios_read_config_dword(bus
, devfn
, PCI_CLASS_REVISION
, &class_rev
); 750 pcibios_read_config_word(bus
, devfn
, PCI_VENDOR_ID
, &vendor
); 751 pcibios_read_config_word(bus
, devfn
, PCI_DEVICE_ID
, &device
); 752 pcibios_read_config_word(bus
, devfn
, PCI_STATUS
, &status
); 753 pcibios_read_config_byte(bus
, devfn
, PCI_BIST
, &bist
); 754 pcibios_read_config_byte(bus
, devfn
, PCI_LATENCY_TIMER
, &latency
); 755 pcibios_read_config_byte(bus
, devfn
, PCI_MIN_GNT
, &min_gnt
); 756 pcibios_read_config_byte(bus
, devfn
, PCI_MAX_LAT
, &max_lat
); 760 len
+=sprintf(buf
+ len
," Bus %2d, device %3d, function %2d:\n", 761 bus
,PCI_SLOT(devfn
),PCI_FUNC(devfn
)); 766 len
+=sprintf(buf
+ len
," %s: %s %s (rev %d).\n", 767 pci_strclass(class_rev
>>8),pci_strvendor(vendor
), 768 pci_strdev(vendor
, device
), class_rev
&0xff); 770 if(!pci_lookup_dev(vendor
, device
)) { 771 len
+=sprintf(buf
+ len
, 772 "Vendor id=%x. Device id=%x.\n", 776 str
=0;/* to keep gcc shut... */ 777 switch(status
& PCI_STATUS_DEVSEL_MASK
) { 778 case PCI_STATUS_DEVSEL_FAST
: str
="Fast devsel. ";break; 779 case PCI_STATUS_DEVSEL_MEDIUM
: str
="Medium devsel. ";break; 780 case PCI_STATUS_DEVSEL_SLOW
: str
="Slow devsel. ";break; 782 if(len
+strlen(str
) > size
) { 785 len
+=sprintf(buf
+ len
, str
); 787 if(status
& PCI_STATUS_FAST_BACK
) { 788 # define fast_b2b_capable"Fast back-to-back capable. " 789 if(len
+strlen(fast_b2b_capable
) > size
) { 792 len
+=sprintf(buf
+ len
, fast_b2b_capable
); 793 # undef fast_b2b_capable 796 if(bist
& PCI_BIST_CAPABLE
) { 797 # define BIST_capable"BIST capable. " 798 if(len
+strlen(BIST_capable
) > size
) { 801 len
+=sprintf(buf
+ len
, BIST_capable
); 809 len
+=sprintf(buf
+ len
,"IRQ %x. ", dev
->irq
); 816 len
+=sprintf(buf
+ len
,"Master Capable. "); 818 len
+=sprintf(buf
+ len
,"Latency=%d. ", latency
); 820 len
+=sprintf(buf
+ len
,"No bursts. "); 822 len
+=sprintf(buf
+ len
,"Min Gnt=%d.", min_gnt
); 824 len
+=sprintf(buf
+ len
,"Max Lat=%d.", max_lat
); 827 for(reg
=0; reg
<6; reg
++) { 831 pcibios_read_config_dword(bus
, devfn
, 832 PCI_BASE_ADDRESS_0
+ (reg
<<2), &l
); 840 if(base
& PCI_BASE_ADDRESS_SPACE_IO
) { 841 len
+=sprintf(buf
+ len
, 842 "\nI/O at 0x%lx [0x%lx].", 843 base
& PCI_BASE_ADDRESS_IO_MASK
, 844 dev
->base_address
[reg
]); 846 const char*pref
, *type
="unknown"; 848 if(base
& PCI_BASE_ADDRESS_MEM_PREFETCH
) { 853 switch(base
& PCI_BASE_ADDRESS_MEM_TYPE_MASK
) { 854 case PCI_BASE_ADDRESS_MEM_TYPE_32
: 855 type
="32 bit";break; 856 case PCI_BASE_ADDRESS_MEM_TYPE_1M
: 857 type
="20 bit";break; 858 case PCI_BASE_ADDRESS_MEM_TYPE_64
: 860 /* read top 32 bit address of base addr: */ 862 pcibios_read_config_dword(bus
, devfn
, reg
, &l
); 863 base
|= ((u64
) l
) <<32; 866 len
+=sprintf(buf
+ len
, 867 "\n%srefetchable %s memory at " 868 "0x%lx [0x%lx].", pref
, type
, 869 base
& PCI_BASE_ADDRESS_MEM_MASK
, 870 dev
->base_address
[reg
]); 874 len
+=sprintf(buf
+ len
,"\n"); 880 * Return list of PCI devices as a character string for /proc/pci. 881 * BUF is a buffer that is PAGE_SIZE bytes long. 883 intget_pci_list(char*buf
) 885 int nprinted
, len
, size
; 887 static int complained
=0; 888 # define MSG"\nwarning: page-size limit reached!\n" 892 printk(KERN_INFO
"%s uses obsolete /proc/pci interface\n", 896 /* reserve same for truncation warning message: */ 897 size
= PAGE_SIZE
- (strlen(MSG
) +1); 898 len
=sprintf(buf
,"PCI devices found:\n"); 900 for(dev
= pci_devices
; dev
; dev
= dev
->next
) { 901 nprinted
=sprint_dev_config(dev
, buf
+ len
, size
- len
); 903 return len
+sprintf(buf
+ len
, MSG
); 910 #endif/* CONFIG_PROC_FS */