2 * PCI defines and function prototypes 3 * Copyright 1994, Drew Eckhardt 5 * For more information, please consult 7 * PCI BIOS Specification Revision 8 * PCI Local Bus Specification 9 * PCI System Design Guide 11 * PCI Special Interest Group 13 * 5200 N.E. Elam Young Parkway 14 * Hillsboro, Oregon 97124-6497 18 * Manuals are $25 each or $50 for all three, plus $7 shipping 19 * within the United States, $35 abroad. 24 /* PROCEDURE TO REPORT NEW PCI DEVICES 25 * We are trying to collect information on new PCI devices, using 26 * the standard PCI identification procedure. If some warning is 27 * displayed at boot time, please report 29 * - your exact hardware description. Try to find out 30 * which device is unknown. It may be you mainboard chipset. 31 * PCI-CPU bridge or PCI-ISA bridge. 32 * - If you can't find the actual information in your hardware 33 * booklet, try to read the references of the chip on the board. 34 * - Send all that to linux-pcisupport@cao-vlsi.ibp.fr, 35 * and I'll add your device to the list as soon as possible 37 * BEFORE you send a mail, please check the latest linux releases 38 * to be sure it has not been recently added. 50 * Under PCI, each device has 256 bytes of configuration address space, 51 * of which the first 64 bytes are standardized as follows: 53 #define PCI_VENDOR_ID 0x00/* 16 bits */ 54 #define PCI_DEVICE_ID 0x02/* 16 bits */ 55 #define PCI_COMMAND 0x04/* 16 bits */ 56 #define PCI_COMMAND_IO 0x1/* Enable response in I/O space */ 57 #define PCI_COMMAND_MEMORY 0x2/* Enable response in Memory space */ 58 #define PCI_COMMAND_MASTER 0x4/* Enable bus mastering */ 59 #define PCI_COMMAND_SPECIAL 0x8/* Enable response to special cycles */ 60 #define PCI_COMMAND_INVALIDATE 0x10/* Use memory write and invalidate */ 61 #define PCI_COMMAND_VGA_PALETTE 0x20/* Enable palette snooping */ 62 #define PCI_COMMAND_PARITY 0x40/* Enable parity checking */ 63 #define PCI_COMMAND_WAIT 0x80/* Enable address/data stepping */ 64 #define PCI_COMMAND_SERR 0x100/* Enable SERR */ 65 #define PCI_COMMAND_FAST_BACK 0x200/* Enable back-to-back writes */ 67 #define PCI_STATUS 0x06/* 16 bits */ 68 #define PCI_STATUS_66MHZ 0x20/* Support 66 Mhz PCI 2.1 bus */ 69 #define PCI_STATUS_UDF 0x40/* Support User Definable Features */ 71 #define PCI_STATUS_FAST_BACK 0x80/* Accept fast-back to back */ 72 #define PCI_STATUS_PARITY 0x100/* Detected parity error */ 73 #define PCI_STATUS_DEVSEL_MASK 0x600/* DEVSEL timing */ 74 #define PCI_STATUS_DEVSEL_FAST 0x000 75 #define PCI_STATUS_DEVSEL_MEDIUM 0x200 76 #define PCI_STATUS_DEVSEL_SLOW 0x400 77 #define PCI_STATUS_SIG_TARGET_ABORT 0x800/* Set on target abort */ 78 #define PCI_STATUS_REC_TARGET_ABORT 0x1000/* Master ack of " */ 79 #define PCI_STATUS_REC_MASTER_ABORT 0x2000/* Set on master abort */ 80 #define PCI_STATUS_SIG_SYSTEM_ERROR 0x4000/* Set when we drive SERR */ 81 #define PCI_STATUS_DETECTED_PARITY 0x8000/* Set on parity error */ 83 #define PCI_CLASS_REVISION 0x08/* High 24 bits are class, low 8 85 #define PCI_REVISION_ID 0x08/* Revision ID */ 86 #define PCI_CLASS_PROG 0x09/* Reg. Level Programming Interface */ 87 #define PCI_CLASS_DEVICE 0x0a/* Device class */ 89 #define PCI_CACHE_LINE_SIZE 0x0c/* 8 bits */ 90 #define PCI_LATENCY_TIMER 0x0d/* 8 bits */ 91 #define PCI_HEADER_TYPE 0x0e/* 8 bits */ 92 #define PCI_BIST 0x0f/* 8 bits */ 93 #define PCI_BIST_CODE_MASK 0x0f/* Return result */ 94 #define PCI_BIST_START 0x40/* 1 to start BIST, 2 secs or less */ 95 #define PCI_BIST_CAPABLE 0x80/* 1 if BIST capable */ 98 * Base addresses specify locations in memory or I/O space. 99 * Decoded size can be determined by writing a value of 100 * 0xffffffff to the register, and reading it back. Only 101 * 1 bits are decoded. 103 #define PCI_BASE_ADDRESS_0 0x10/* 32 bits */ 104 #define PCI_BASE_ADDRESS_1 0x14/* 32 bits */ 105 #define PCI_BASE_ADDRESS_2 0x18/* 32 bits */ 106 #define PCI_BASE_ADDRESS_3 0x1c/* 32 bits */ 107 #define PCI_BASE_ADDRESS_4 0x20/* 32 bits */ 108 #define PCI_BASE_ADDRESS_5 0x24/* 32 bits */ 109 #define PCI_BASE_ADDRESS_SPACE 0x01/* 0 = memory, 1 = I/O */ 110 #define PCI_BASE_ADDRESS_SPACE_IO 0x01 111 #define PCI_BASE_ADDRESS_SPACE_MEMORY 0x00 112 #define PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06 113 #define PCI_BASE_ADDRESS_MEM_TYPE_32 0x00/* 32 bit address */ 114 #define PCI_BASE_ADDRESS_MEM_TYPE_1M 0x02/* Below 1M */ 115 #define PCI_BASE_ADDRESS_MEM_TYPE_64 0x04/* 64 bit address */ 116 #define PCI_BASE_ADDRESS_MEM_PREFETCH 0x08/* prefetchable? */ 117 #define PCI_BASE_ADDRESS_MEM_MASK (~0x0f) 118 #define PCI_BASE_ADDRESS_IO_MASK (~0x03) 119 /* bit 1 is reserved if address_space = 1 */ 121 #define PCI_CARDBUS_CIS 0x28 122 #define PCI_SUBSYSTEM_ID 0x2c 123 #define PCI_SUBSYSTEM_VENDOR_ID 0x2e 124 #define PCI_ROM_ADDRESS 0x30/* 32 bits */ 125 #define PCI_ROM_ADDRESS_ENABLE 0x01/* Write 1 to enable ROM, 126 bits 31..11 are address, 127 10..2 are reserved */ 128 /* 0x34-0x3b are reserved */ 129 #define PCI_INTERRUPT_LINE 0x3c/* 8 bits */ 130 #define PCI_INTERRUPT_PIN 0x3d/* 8 bits */ 131 #define PCI_MIN_GNT 0x3e/* 8 bits */ 132 #define PCI_MAX_LAT 0x3f/* 8 bits */ 134 #define PCI_CLASS_NOT_DEFINED 0x0000 135 #define PCI_CLASS_NOT_DEFINED_VGA 0x0001 137 #define PCI_BASE_CLASS_STORAGE 0x01 138 #define PCI_CLASS_STORAGE_SCSI 0x0100 139 #define PCI_CLASS_STORAGE_IDE 0x0101 140 #define PCI_CLASS_STORAGE_FLOPPY 0x0102 141 #define PCI_CLASS_STORAGE_IPI 0x0103 142 #define PCI_CLASS_STORAGE_RAID 0x0104 143 #define PCI_CLASS_STORAGE_OTHER 0x0180 145 #define PCI_BASE_CLASS_NETWORK 0x02 146 #define PCI_CLASS_NETWORK_ETHERNET 0x0200 147 #define PCI_CLASS_NETWORK_TOKEN_RING 0x0201 148 #define PCI_CLASS_NETWORK_FDDI 0x0202 149 #define PCI_CLASS_NETWORK_ATM 0x0203 150 #define PCI_CLASS_NETWORK_OTHER 0x0280 152 #define PCI_BASE_CLASS_DISPLAY 0x03 153 #define PCI_CLASS_DISPLAY_VGA 0x0300 154 #define PCI_CLASS_DISPLAY_XGA 0x0301 155 #define PCI_CLASS_DISPLAY_OTHER 0x0380 157 #define PCI_BASE_CLASS_MULTIMEDIA 0x04 158 #define PCI_CLASS_MULTIMEDIA_VIDEO 0x0400 159 #define PCI_CLASS_MULTIMEDIA_AUDIO 0x0401 160 #define PCI_CLASS_MULTIMEDIA_OTHER 0x0480 162 #define PCI_BASE_CLASS_MEMORY 0x05 163 #define PCI_CLASS_MEMORY_RAM 0x0500 164 #define PCI_CLASS_MEMORY_FLASH 0x0501 165 #define PCI_CLASS_MEMORY_OTHER 0x0580 167 #define PCI_BASE_CLASS_BRIDGE 0x06 168 #define PCI_CLASS_BRIDGE_HOST 0x0600 169 #define PCI_CLASS_BRIDGE_ISA 0x0601 170 #define PCI_CLASS_BRIDGE_EISA 0x0602 171 #define PCI_CLASS_BRIDGE_MC 0x0603 172 #define PCI_CLASS_BRIDGE_PCI 0x0604 173 #define PCI_CLASS_BRIDGE_PCMCIA 0x0605 174 #define PCI_CLASS_BRIDGE_NUBUS 0x0606 175 #define PCI_CLASS_BRIDGE_CARDBUS 0x0607 176 #define PCI_CLASS_BRIDGE_OTHER 0x0680 179 #define PCI_BASE_CLASS_COMMUNICATION 0x07 180 #define PCI_CLASS_COMMUNICATION_SERIAL 0x0700 181 #define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701 182 #define PCI_CLASS_COMMUNICATION_OTHER 0x0780 184 #define PCI_BASE_CLASS_SYSTEM 0x08 185 #define PCI_CLASS_SYSTEM_PIC 0x0800 186 #define PCI_CLASS_SYSTEM_DMA 0x0801 187 #define PCI_CLASS_SYSTEM_TIMER 0x0802 188 #define PCI_CLASS_SYSTEM_RTC 0x0803 189 #define PCI_CLASS_SYSTEM_OTHER 0x0880 191 #define PCI_BASE_CLASS_INPUT 0x09 192 #define PCI_CLASS_INPUT_KEYBOARD 0x0900 193 #define PCI_CLASS_INPUT_PEN 0x0901 194 #define PCI_CLASS_INPUT_MOUSE 0x0902 195 #define PCI_CLASS_INPUT_OTHER 0x0980 197 #define PCI_BASE_CLASS_DOCKING 0x0a 198 #define PCI_CLASS_DOCKING_GENERIC 0x0a00 199 #define PCI_CLASS_DOCKING_OTHER 0x0a01 201 #define PCI_BASE_CLASS_PROCESSOR 0x0b 202 #define PCI_CLASS_PROCESSOR_386 0x0b00 203 #define PCI_CLASS_PROCESSOR_486 0x0b01 204 #define PCI_CLASS_PROCESSOR_PENTIUM 0x0b02 205 #define PCI_CLASS_PROCESSOR_ALPHA 0x0b10 206 #define PCI_CLASS_PROCESSOR_POWERPC 0x0b20 207 #define PCI_CLASS_PROCESSOR_CO 0x0b40 209 #define PCI_BASE_CLASS_SERIAL 0x0c 210 #define PCI_CLASS_SERIAL_FIREWIRE 0x0c00 211 #define PCI_CLASS_SERIAL_ACCESS 0x0c01 212 #define PCI_CLASS_SERIAL_SSA 0x0c02 213 #define PCI_CLASS_SERIAL_USB 0x0c03 214 #define PCI_CLASS_SERIAL_FIBER 0x0c04 216 #define PCI_CLASS_OTHERS 0xff 219 * Vendor and card ID's: sort these numerically according to vendor 220 * (and according to card ID within vendor) 222 #define PCI_VENDOR_ID_COMPAQ 0x0e11 223 #define PCI_DEVICE_ID_COMPAQ_1280 0x3033 224 #define PCI_DEVICE_ID_COMPAQ_THUNDER 0xf130 226 #define PCI_VENDOR_ID_NCR 0x1000 227 #define PCI_DEVICE_ID_NCR_53C810 0x0001 228 #define PCI_DEVICE_ID_NCR_53C820 0x0002 229 #define PCI_DEVICE_ID_NCR_53C825 0x0003 230 #define PCI_DEVICE_ID_NCR_53C815 0x0004 232 #define PCI_VENDOR_ID_ATI 0x1002 233 #define PCI_DEVICE_ID_ATI_68800 0x4158 234 #define PCI_DEVICE_ID_ATI_215CT222 0x4354 235 #define PCI_DEVICE_ID_ATI_210888CX 0x4358 236 #define PCI_DEVICE_ID_ATI_210888GX 0x4758 238 #define PCI_VENDOR_ID_VLSI 0x1004 239 #define PCI_DEVICE_ID_VLSI_82C592 0x0005 240 #define PCI_DEVICE_ID_VLSI_82C593 0x0006 241 #define PCI_DEVICE_ID_VLSI_82C594 0x0007 242 #define PCI_DEVICE_ID_VLSI_82C597 0x0009 244 #define PCI_VENDOR_ID_ADL 0x1005 245 #define PCI_DEVICE_ID_ADL_2301 0x2301 247 #define PCI_VENDOR_ID_NS 0x100b 248 #define PCI_DEVICE_ID_NS_87410 0xd001 250 #define PCI_VENDOR_ID_TSENG 0x100c 251 #define PCI_DEVICE_ID_TSENG_W32P_2 0x3202 252 #define PCI_DEVICE_ID_TSENG_W32P_b 0x3205 253 #define PCI_DEVICE_ID_TSENG_W32P_c 0x3206 254 #define PCI_DEVICE_ID_TSENG_W32P_d 0x3207 256 #define PCI_VENDOR_ID_WEITEK 0x100e 257 #define PCI_DEVICE_ID_WEITEK_P9000 0x9001 258 #define PCI_DEVICE_ID_WEITEK_P9100 0x9100 260 #define PCI_VENDOR_ID_DEC 0x1011 261 #define PCI_DEVICE_ID_DEC_BRD 0x0001 262 #define PCI_DEVICE_ID_DEC_TULIP 0x0002 263 #define PCI_DEVICE_ID_DEC_TGA 0x0004 264 #define PCI_DEVICE_ID_DEC_TULIP_FAST 0x0009 265 #define PCI_DEVICE_ID_DEC_FDDI 0x000F 266 #define PCI_DEVICE_ID_DEC_TULIP_PLUS 0x0014 268 #define PCI_VENDOR_ID_CIRRUS 0x1013 269 #define PCI_DEVICE_ID_CIRRUS_5430 0x00a0 270 #define PCI_DEVICE_ID_CIRRUS_5434_4 0x00a4 271 #define PCI_DEVICE_ID_CIRRUS_5434_8 0x00a8 272 #define PCI_DEVICE_ID_CIRRUS_5436 0x00ac 273 #define PCI_DEVICE_ID_CIRRUS_6729 0x1100 274 #define PCI_DEVICE_ID_CIRRUS_7542 0x1200 275 #define PCI_DEVICE_ID_CIRRUS_7543 0x1202 277 #define PCI_VENDOR_ID_IBM 0x1014 278 #define PCI_DEVICE_ID_IBM_82G2675 0x001d 280 #define PCI_VENDOR_ID_WD 0x101c 281 #define PCI_DEVICE_ID_WD_7197 0x3296 283 #define PCI_VENDOR_ID_AMD 0x1022 284 #define PCI_DEVICE_ID_AMD_LANCE 0x2000 285 #define PCI_DEVICE_ID_AMD_SCSI 0x2020 287 #define PCI_VENDOR_ID_TRIDENT 0x1023 288 #define PCI_DEVICE_ID_TRIDENT_9420 0x9420 289 #define PCI_DEVICE_ID_TRIDENT_9440 0x9440 290 #define PCI_DEVICE_ID_TRIDENT_9660 0x9660 292 #define PCI_VENDOR_ID_AI 0x1025 293 #define PCI_DEVICE_ID_AI_M1435 0x1435 295 #define PCI_VENDOR_ID_MATROX 0x102B 296 #define PCI_DEVICE_ID_MATROX_MGA_2 0x0518 297 #define PCI_DEVICE_ID_MATROX_MIL 0x0519 298 #define PCI_DEVICE_ID_MATROX_MGA_IMP 0x0d10 300 #define PCI_VENDOR_ID_CT 0x102c 301 #define PCI_DEVICE_ID_CT_65545 0x00d8 302 #define PCI_DEVICE_ID_CT_65548 0x00dc 304 #define PCI_VENDOR_ID_MIRO 0x1031 305 #define PCI_DEVICE_ID_MIRO_36050 0x5601 307 #define PCI_VENDOR_ID_FD 0x1036 308 #define PCI_DEVICE_ID_FD_36C70 0x0000 310 #define PCI_VENDOR_ID_SI 0x1039 311 #define PCI_DEVICE_ID_SI_6201 0x0001 312 #define PCI_DEVICE_ID_SI_6202 0x0002 313 #define PCI_DEVICE_ID_SI_6205 0x0205 314 #define PCI_DEVICE_ID_SI_503 0x0008 315 #define PCI_DEVICE_ID_SI_501 0x0406 316 #define PCI_DEVICE_ID_SI_496 0x0496 317 #define PCI_DEVICE_ID_SI_601 0x0601 318 #define PCI_DEVICE_ID_SI_5511 0x5511 319 #define PCI_DEVICE_ID_SI_5513 0x5513 321 #define PCI_VENDOR_ID_HP 0x103c 322 #define PCI_DEVICE_ID_HP_J2585A 0x1030 324 #define PCI_VENDOR_ID_PCTECH 0x1042 325 #define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000 326 #define PCI_DEVICE_ID_PCTECH_RZ1001 0x1001 328 #define PCI_VENDOR_ID_DPT 0x1044 329 #define PCI_DEVICE_ID_DPT 0xa400 331 #define PCI_VENDOR_ID_OPTI 0x1045 332 #define PCI_DEVICE_ID_OPTI_92C178 0xc178 333 #define PCI_DEVICE_ID_OPTI_82C557 0xc557 334 #define PCI_DEVICE_ID_OPTI_82C558 0xc558 335 #define PCI_DEVICE_ID_OPTI_82C621 0xc621 336 #define PCI_DEVICE_ID_OPTI_82C822 0xc822 338 #define PCI_VENDOR_ID_SGS 0x104a 339 #define PCI_DEVICE_ID_SGS_2000 0x0008 340 #define PCI_DEVICE_ID_SGS_1764 0x0009 342 #define PCI_VENDOR_ID_BUSLOGIC 0x104B 343 #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140 344 #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER 0x1040 345 #define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT 0x8130 347 #define PCI_VENDOR_ID_OAK 0x104e 348 #define PCI_DEVICE_ID_OAK_OTI107 0x0107 350 #define PCI_VENDOR_ID_PROMISE 0x105a 351 #define PCI_DEVICE_ID_PROMISE_5300 0x5300 353 #define PCI_VENDOR_ID_N9 0x105d 354 #define PCI_DEVICE_ID_N9_I128 0x2309 355 #define PCI_DEVICE_ID_N9_I128_2 0x2339 357 #define PCI_VENDOR_ID_UMC 0x1060 358 #define PCI_DEVICE_ID_UMC_UM8673F 0x0101 359 #define PCI_DEVICE_ID_UMC_UM8891A 0x0891 360 #define PCI_DEVICE_ID_UMC_UM8886BF 0x673a 361 #define PCI_DEVICE_ID_UMC_UM8886A 0x886a 362 #define PCI_DEVICE_ID_UMC_UM8881F 0x8881 363 #define PCI_DEVICE_ID_UMC_UM8886F 0x8886 364 #define PCI_DEVICE_ID_UMC_UM9017F 0x9017 365 #define PCI_DEVICE_ID_UMC_UM8886N 0xe886 366 #define PCI_DEVICE_ID_UMC_UM8891N 0xe891 368 #define PCI_VENDOR_ID_X 0x1061 369 #define PCI_DEVICE_ID_X_AGX016 0x0001 371 #define PCI_VENDOR_ID_NEXGEN 0x1074 372 #define PCI_DEVICE_ID_NEXGEN_82C501 0x4e78 374 #define PCI_VENDOR_ID_QLOGIC 0x1077 375 #define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020 376 #define PCI_DEVICE_ID_QLOGIC_ISP1022 0x1022 378 #define PCI_VENDOR_ID_LEADTEK 0x107d 379 #define PCI_DEVICE_ID_LEADTEK_805 0x0000 381 #define PCI_VENDOR_ID_CONTAQ 0x1080 382 #define PCI_DEVICE_ID_CONTAQ_82C599 0x0600 384 #define PCI_VENDOR_ID_FOREX 0x1083 386 #define PCI_VENDOR_ID_OLICOM 0x108d 388 #define PCI_VENDOR_ID_CMD 0x1095 389 #define PCI_DEVICE_ID_CMD_640 0x0640 390 #define PCI_DEVICE_ID_CMD_646 0x0646 392 #define PCI_VENDOR_ID_VISION 0x1098 393 #define PCI_DEVICE_ID_VISION_QD8500 0x0001 394 #define PCI_DEVICE_ID_VISION_QD8580 0x0002 396 #define PCI_VENDOR_ID_SIERRA 0x10a8 397 #define PCI_DEVICE_ID_SIERRA_STB 0x0000 399 #define PCI_VENDOR_ID_ACC 0x10aa 400 #define PCI_DEVICE_ID_ACC_2056 0x0000 402 #define PCI_VENDOR_ID_WINBOND 0x10ad 403 #define PCI_DEVICE_ID_WINBOND_83769 0x0001 404 #define PCI_DEVICE_ID_WINBOND_82C105 0x0105 406 #define PCI_VENDOR_ID_3COM 0x10b7 407 #define PCI_DEVICE_ID_3COM_3C590 0x5900 408 #define PCI_DEVICE_ID_3COM_3C595TX 0x5950 409 #define PCI_DEVICE_ID_3COM_3C595T4 0x5951 410 #define PCI_DEVICE_ID_3COM_3C595MII 0x5952 412 #define PCI_VENDOR_ID_AL 0x10b9 413 #define PCI_DEVICE_ID_AL_M1445 0x1445 414 #define PCI_DEVICE_ID_AL_M1449 0x1449 415 #define PCI_DEVICE_ID_AL_M1451 0x1451 416 #define PCI_DEVICE_ID_AL_M1461 0x1461 417 #define PCI_DEVICE_ID_AL_M1489 0x1489 418 #define PCI_DEVICE_ID_AL_M1511 0x1511 419 #define PCI_DEVICE_ID_AL_M1513 0x1513 420 #define PCI_DEVICE_ID_AL_M4803 0x5215 422 #define PCI_VENDOR_ID_ASP 0x10cd 423 #define PCI_DEVICE_ID_ASP_ABP940 0x1200 425 #define PCI_VENDOR_ID_CERN 0x10dc 426 #define PCI_DEVICE_ID_CERN_SPSB_PMC 0x0001 427 #define PCI_DEVICE_ID_CERN_SPSB_PCI 0x0002 429 #define PCI_VENDOR_ID_IMS 0x10e0 430 #define PCI_DEVICE_ID_IMS_8849 0x8849 432 #define PCI_VENDOR_ID_TEKRAM2 0x10e1 433 #define PCI_DEVICE_ID_TEKRAM2_690c 0x690c 435 #define PCI_VENDOR_ID_AMCC 0x10e8 436 #define PCI_DEVICE_ID_AMCC_MYRINET 0x8043 438 #define PCI_VENDOR_ID_INTERG 0x10ea 439 #define PCI_DEVICE_ID_INTERG_1680 0x1680 441 #define PCI_VENDOR_ID_REALTEK 0x10ec 442 #define PCI_DEVICE_ID_REALTEK_8029 0x8029 444 #define PCI_VENDOR_ID_INIT 0x1101 445 #define PCI_DEVICE_ID_INIT_320P 0x9100 447 #define PCI_VENDOR_ID_VIA 0x1106 448 #define PCI_DEVICE_ID_VIA_82C505 0x0505 449 #define PCI_DEVICE_ID_VIA_82C561 0x0561 450 #define PCI_DEVICE_ID_VIA_82C576 0x0576 451 #define PCI_DEVICE_ID_VIA_82C416 0x1571 453 #define PCI_VENDOR_ID_VORTEX 0x1119 454 #define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000 455 #define PCI_DEVICE_ID_VORTEX_GDT6000B 0x0001 456 #define PCI_DEVICE_ID_VORTEX_GDT6x10 0x0002 457 #define PCI_DEVICE_ID_VORTEX_GDT6x20 0x0003 458 #define PCI_DEVICE_ID_VORTEX_GDT6530 0x0004 459 #define PCI_DEVICE_ID_VORTEX_GDT6550 0x0005 460 #define PCI_DEVICE_ID_VORTEX_GDT6x17 0x0006 461 #define PCI_DEVICE_ID_VORTEX_GDT6x27 0x0007 462 #define PCI_DEVICE_ID_VORTEX_GDT6537 0x0008 463 #define PCI_DEVICE_ID_VORTEX_GDT6557 0x0009 464 #define PCI_DEVICE_ID_VORTEX_GDT6x15 0x000a 465 #define PCI_DEVICE_ID_VORTEX_GDT6x25 0x000b 466 #define PCI_DEVICE_ID_VORTEX_GDT6535 0x000c 467 #define PCI_DEVICE_ID_VORTEX_GDT6555 0x000d 469 #define PCI_VENDOR_ID_EF 0x111a 470 #define PCI_DEVICE_ID_EF_ATM_FPGA 0x0000 471 #define PCI_DEVICE_ID_EF_ATM_ASIC 0x0002 473 #define PCI_VENDOR_ID_FORE 0x1127 474 #define PCI_DEVICE_ID_FORE_PCA200PC 0x0210 475 #define PCI_DEVICE_ID_FORE_PCA200E 0x0300 477 #define PCI_VENDOR_ID_IMAGINGTECH 0x112f 478 #define PCI_DEVICE_ID_IMAGINGTECH_ICPCI 0x0000 480 #define PCI_VENDOR_ID_PLX 0x113c 481 #define PCI_DEVICE_ID_PLX_9060 0x0001 483 #define PCI_VENDOR_ID_ALLIANCE 0x1142 484 #define PCI_DEVICE_ID_ALLIANCE_PROMOTIO 0x3210 485 #define PCI_DEVICE_ID_ALLIANCE_PROVIDEO 0x6422 487 #define PCI_VENDOR_ID_VMIC 0x114a 488 #define PCI_DEVICE_ID_VMIC_VME 0x7587 490 #define PCI_VENDOR_ID_DIGI 0x114f 491 #define PCI_DEVICE_ID_DIGI_RIGHTSWITCH 0x0003 493 #define PCI_VENDOR_ID_MUTECH 0x1159 494 #define PCI_DEVICE_ID_MUTECH_MV1000 0x0001 496 #define PCI_VENDOR_ID_TOSHIBA 0x1179 498 #define PCI_VENDOR_ID_ZEITNET 0x1193 499 #define PCI_DEVICE_ID_ZEITNET_1221 0x0001 500 #define PCI_DEVICE_ID_ZEITNET_1225 0x0002 502 #define PCI_VENDOR_ID_SPECIALIX 0x11cb 503 #define PCI_DEVICE_ID_SPECIALIX_XIO 0x4000 504 #define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000 506 #define PCI_VENDOR_ID_RP 0x11fe 507 #define PCI_DEVICE_ID_RP8OCTA 0x0001 508 #define PCI_DEVICE_ID_RP8INTF 0x0002 509 #define PCI_DEVICE_ID_RP16INTF 0x0003 510 #define PCI_DEVICE_ID_RP32INTF 0x0004 512 #define PCI_VENDOR_ID_CYCLADES 0x120e 513 #define PCI_DEVICE_ID_CYCLOM_Y_Lo 0x0100 514 #define PCI_DEVICE_ID_CYCLOM_Y_Hi 0x0101 515 #define PCI_DEVICE_ID_CYCLOM_Z_Lo 0x0200 516 #define PCI_DEVICE_ID_CYCLOM_Z_Hi 0x0201 518 #define PCI_VENDOR_ID_SYMPHONY 0x1c1c 519 #define PCI_DEVICE_ID_SYMPHONY_101 0x0001 521 #define PCI_VENDOR_ID_TEKRAM 0x1de1 522 #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 524 #define PCI_VENDOR_ID_AVANCE 0x4005 525 #define PCI_DEVICE_ID_AVANCE_2302 0x2302 527 #define PCI_VENDOR_ID_S3 0x5333 528 #define PCI_DEVICE_ID_S3_811 0x8811 529 #define PCI_DEVICE_ID_S3_868 0x8880 530 #define PCI_DEVICE_ID_S3_928 0x88b0 531 #define PCI_DEVICE_ID_S3_864_1 0x88c0 532 #define PCI_DEVICE_ID_S3_864_2 0x88c1 533 #define PCI_DEVICE_ID_S3_964_1 0x88d0 534 #define PCI_DEVICE_ID_S3_964_2 0x88d1 535 #define PCI_DEVICE_ID_S3_968 0x88f0 537 #define PCI_VENDOR_ID_INTEL 0x8086 538 #define PCI_DEVICE_ID_INTEL_82375 0x0482 539 #define PCI_DEVICE_ID_INTEL_82424 0x0483 540 #define PCI_DEVICE_ID_INTEL_82378 0x0484 541 #define PCI_DEVICE_ID_INTEL_82430 0x0486 542 #define PCI_DEVICE_ID_INTEL_82434 0x04a3 543 #define PCI_DEVICE_ID_INTEL_7116 0x1223 544 #define PCI_DEVICE_ID_INTEL_82596 0x1226 545 #define PCI_DEVICE_ID_INTEL_82865 0x1227 546 #define PCI_DEVICE_ID_INTEL_82557 0x1229 547 #define PCI_DEVICE_ID_INTEL_82437 0x122d 548 #define PCI_DEVICE_ID_INTEL_82371_0 0x122e 549 #define PCI_DEVICE_ID_INTEL_82371_1 0x1230 550 #define PCI_DEVICE_ID_INTEL_82441 0x1237 551 #define PCI_DEVICE_ID_INTEL_82439 0x1250 552 #define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000 553 #define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010 554 #define PCI_DEVICE_ID_INTEL_P6 0x84c4 556 #define PCI_VENDOR_ID_ADAPTEC 0x9004 557 #define PCI_DEVICE_ID_ADAPTEC_7850 0x5078 558 #define PCI_DEVICE_ID_ADAPTEC_7855 0x5578 559 #define PCI_DEVICE_ID_ADAPTEC_7860 0x6078 560 #define PCI_DEVICE_ID_ADAPTEC_7870 0x7078 561 #define PCI_DEVICE_ID_ADAPTEC_7871 0x7178 562 #define PCI_DEVICE_ID_ADAPTEC_7872 0x7278 563 #define PCI_DEVICE_ID_ADAPTEC_7873 0x7378 564 #define PCI_DEVICE_ID_ADAPTEC_7874 0x7478 565 #define PCI_DEVICE_ID_ADAPTEC_7880 0x8078 566 #define PCI_DEVICE_ID_ADAPTEC_7881 0x8178 567 #define PCI_DEVICE_ID_ADAPTEC_7882 0x8278 568 #define PCI_DEVICE_ID_ADAPTEC_7883 0x8378 569 #define PCI_DEVICE_ID_ADAPTEC_7884 0x8478 571 #define PCI_VENDOR_ID_ATRONICS 0x907f 572 #define PCI_DEVICE_ID_ATRONICS_2015 0x2015 574 #define PCI_VENDOR_ID_HER 0xedd8 575 #define PCI_DEVICE_ID_HER_STING 0xa091 576 #define PCI_DEVICE_ID_HER_STINGARK 0xa099 579 * The PCI interface treats multi-function devices as independent 580 * devices. The slot/function address of each device is encoded 581 * in a single byte as follows: 586 #define PCI_DEVFN(slot,func) ((((slot) & 0x1f) << 3) | ((func) & 0x07)) 587 #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f) 588 #define PCI_FUNC(devfn) ((devfn) & 0x07) 591 * There is one pci_dev structure for each slot-number/function-number 595 struct pci_bus
*bus
;/* bus this device is on */ 596 struct pci_dev
*sibling
;/* next device on this bus */ 597 struct pci_dev
*next
;/* chain of all devices */ 599 void*sysdata
;/* hook for sys-specific extension */ 601 unsigned int devfn
;/* encoded device & function index */ 602 unsigned short vendor
; 603 unsigned short device
; 604 unsigned intclass;/* 3 bytes: (base,sub,prog-if) */ 605 unsigned int master
:1;/* set if device is master capable */ 607 * In theory, the irq level can be read from configuration 608 * space and all would be fine. However, old PCI chips don't 609 * support these registers and return 0 instead. For example, 610 * the Vision864-P rev 0 chip can uses INTA, but returns 0 in 611 * the interrupt line and pin registers. pci_init() 612 * initializes this field with the value at PCI_INTERRUPT_LINE 613 * and it is the job of pcibios_fixup() to change it if 614 * necessary. The field must not be 0 unless the device 615 * cannot generate interrupts at all. 617 unsigned char irq
;/* irq generated by this device */ 621 struct pci_bus
*parent
;/* parent bus this bridge is on */ 622 struct pci_bus
*children
;/* chain of P2P bridges on this bus */ 623 struct pci_bus
*next
;/* chain of all PCI buses */ 625 struct pci_dev
*self
;/* bridge device as seen by parent */ 626 struct pci_dev
*devices
;/* devices behind this bridge */ 628 void*sysdata
;/* hook for sys-specific extension */ 630 unsigned char number
;/* bus number */ 631 unsigned char primary
;/* number of primary bridge */ 632 unsigned char secondary
;/* number of secondary bridge */ 633 unsigned char subordinate
;/* max number of subordinate buses */ 637 * This is used to map a vendor-id/device-id pair into device-specific 640 struct pci_dev_info
{ 641 unsigned short vendor
;/* vendor id */ 642 unsigned short device
;/* device id */ 644 const char*name
;/* device name */ 645 unsigned char bridge_type
;/* bridge type or 0xff */ 648 externstruct pci_bus pci_root
;/* root bus */ 649 externstruct pci_dev
*pci_devices
;/* list of all devices */ 652 externunsigned longpci_init(unsigned long mem_start
,unsigned long mem_end
); 654 externstruct pci_dev_info
*pci_lookup_dev(unsigned int vendor
, 656 externconst char*pci_strclass(unsigned intclass); 657 externconst char*pci_strvendor(unsigned int vendor
); 658 externconst char*pci_strdev(unsigned int vendor
,unsigned int device
); 660 externintget_pci_list(char*buf
);