root/include/linux/pci.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * PCI defines and function prototypes
   3  * Copyright 1994, Drew Eckhardt
   4  *
   5  * For more information, please consult 
   6  * 
   7  * PCI BIOS Specification Revision
   8  * PCI Local Bus Specification
   9  * PCI System Design Guide
  10  *
  11  * PCI Special Interest Group
  12  * M/S HF3-15A
  13  * 5200 N.E. Elam Young Parkway
  14  * Hillsboro, Oregon 97124-6497
  15  * +1 (503) 696-2000 
  16  * +1 (800) 433-5177
  17  * 
  18  * Manuals are $25 each or $50 for all three, plus $7 shipping 
  19  * within the United States, $35 abroad.
  20  */
  21 
  22 #ifndef PCI_H
  23 #define PCI_H
  24 
  25 /* Configuration method #1 */
  26 #define PCI_CONFIG1_ADDRESS_REG  0xcf8
  27 #define PCI_CONFIG1_ENABLE 0x80000000
  28 #define PCI_CONFIG1_TUPPLE(bus, device, function, register)     \
  29         (PCI_CONFIG1_ENABLE | ((bus) << 16) & 0xff0000 |        \
  30         ((device) << 11) & 0xf800 | ((function) << 8) & 0x700 | \
  31         ((register) << 2) & 0xfc)
  32 #define PCI_CONFIG1_DATA_REG     0xcfc
  33 
  34 /* Configuration method #2, deprecated */
  35 #define PCI_CONFIG2_ENABLE_REG  0xcf8
  36 #define PCI_CONFIG2_ENABLE      0xf0
  37 #define PCI_CONFIG2_TUPPLE(function)                            \
  38         (PCI_CONFIG2_ENABLE | ((function) << 1) & 0xe)
  39 #define PCI_CONFIG2_FORWARD_REG 0xcfa
  40 
  41 /*
  42  * Under PCI, each device has 256 bytes of configuration address space,
  43  * of which the first 64 bytes is standardized as follows : 
  44  */
  45 
  46 #define PCI_VENDOR_ID           0x00    /* 16 bits */
  47 #define PCI_DEVICE_ID           0x02    /* 16 bits */
  48 #define PCI_COMMAND             0x04    /* 16 bits */
  49 #define  PCI_COMMAND_IO         0x1     /* Enable response in I/O space */
  50 #define  PCI_COMMAND_MEMORY     0x2     /* Enable response in I/O space */
  51 #define  PCI_COMMAND_MASTER     0x4     /* Enable bus mastering */
  52 #define  PCI_COMMAND_SPECIAL    0x8     /* Enable response to special cycles */
  53 #define  PCI_COMMAND_INVALIDATE 0x10    /* Use memory write and invalidate */
  54 #define  PCI_COMMAND_VGA_PALETTE        0x20    /* Enable palette snooping */
  55 #define  PCI_COMMAND_PARITY     0x40    /* Enable parity checking */
  56 #define  PCI_COMMAND_WAIT       0x80    /* Enable address/data stepping */
  57 #define  PCI_COMMAND_SERR       0x100   /* Enable SERR */
  58 #define  PCI_COMMAND_FAST_BACK  0x200   /* Enable back-to-back writes */
  59 
  60 #define PCI_STATUS              0x06    /* 16 bits */
  61 #define  PCI_STATUS_FAST_BACK   0x80    /* Accept fast-back to back */
  62 #define  PCI_STATUS_PARITY      0x100   /* Detected parity error */
  63 #define  PCI_STATUS_DEVSEL_MASK 0x600   /* DEVSEL timing */
  64 #define  PCI_STATUS_DEVSEL_FAST 0x000   
  65 #define  PCI_STATUS_DEVSEL_MEDIUM 0x200
  66 #define  PCI_STATUS_DEVESEL_SLOW 0x400
  67 #define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */
  68 #define  PCI_STATUS_REC_TARGET_ABORT 0x1000 /* Master ack of " */
  69 #define  PCI_STATUS_REC_MASTER_ABORT 0x2000 /* Set on master abort */
  70 #define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000 /* Set when we drive SERR */
  71 #define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */
  72 
  73 #define PCI_CLASS_REVISION      0x08    /* High 24 bits are class, low 8
  74                                            revision */
  75 #define PCI_REVISION_ID         0x08    /* Revision ID */
  76 #define PCI_CLASS_PROG          0x09    /* Reg. Level Programming Interface */
  77 #define PCI_CLASS_DEVICE        0x0a    /* Device class */
  78 
  79 #define PCI_CACHE_LINE_SIZE     0x0c    /* 8 bits */
  80 #define PCI_LATENCY_TIMER       0x0d    /* 8 bits */
  81 #define PCI_HEADER_TYPE         0x0e    /* 8 bits */
  82 #define PCI_BIST                0x0f    /* 8 bits */
  83 #define PCI_BIST_CODE_MASK      0x0f    /* Return result */
  84 #define PCI_BIST_START          0x40    /* 1 to start BIST, 2 secs or less */
  85 #define PCI_BIST_CAPABLE        0x80    /* 1 if BIST capable */
  86 
  87 /*
  88  * Base addresses specify locations in memory or I/O space.
  89  * Decoded size can be determined by writing a value of 
  90  * 0xffffffff to the register, and reading it back.  Only 
  91  * 1 bits are decoded.
  92  */
  93 
  94 #define PCI_BASE_ADDRESS_0      0x10    /* 32 bits */
  95 #define PCI_BASE_ADDRESS_1      0x14    /* 32 bits */
  96 #define PCI_BASE_ADDRESS_2      0x18    /* 32 bits */
  97 #define PCI_BASE_ADDRESS_3      0x1c    /* 32 bits */
  98 #define PCI_BASE_ADDRESS_4      0x20    /* 32 bits */
  99 #define PCI_BASE_ADDRESS_5      0x24    /* 32 bits */
 100 #define  PCI_BASE_ADDRESS_SPACE 0x01    /* 0 = memory, 1 = I/O */
 101 #define  PCI_BASE_ADDRESS_SPACE_IO 0x01
 102 #define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
 103 #define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
 104 #define  PCI_BASE_ADDRESS_MEM_TYPE_32   0x00    /* 32 bit address */
 105 #define  PCI_BASE_ADDRESS_MEM_TYPE_1M   0x02    /* Below 1M */
 106 #define  PCI_BASE_ADDRESS_MEM_TYPE_64   0x04    /* 64 bit address */
 107 #define  PCI_BASE_ADDRESS_MEM_MASK      ~7
 108 #define  PCI_BASE_ADDRESS_IO_MASK       ~3
 109 /* bit 1 is reserved if address_space = 1 */
 110 
 111 /* 0x28-0x2f are reserved */
 112 #define PCI_ROM_ADDRESS         0x30    /* 32 bits */
 113 #define  PCI_ROM_ADDRESS_ENABLE 0x01    /* Write 1 to enable ROM,
 114                                            bits 31..11 are address,
 115                                            10..2 are reserved */
 116 /* 0x34-0x3b are reserved */
 117 #define PCI_INTERRUPT_LINE      0x3c    /* 8 bits */
 118 #define PCI_INTERRUPT_PIN       0x3d    /* 8 bits */
 119 #define PCI_MIN_GNT             0x3e    /* 8 bits */
 120 #define PCI_MAX_LAT             0x3f    /* 8 bits */
 121 
 122 #define PCI_CLASS_NOT_DEFINED           0x0000
 123 #define PCI_CLASS_NOT_DEFINED_VGA       0x0001
 124 
 125 #define PCI_CLASS_STORAGE_SCSI          0x0100
 126 #define PCI_CLASS_STORAGE_IDE           0x0101
 127 #define PCI_CLASS_STORAGE_FLOPPY        0x0102
 128 #define PCI_CLASS_STORAGE_IPI           0x0103
 129 #define PCI_CLASS_STORAGE_OTHER         0x0180
 130 
 131 #define PCI_CLASS_NETWORK_ETHERNET      0x0200
 132 #define PCI_CLASS_NETWORK_TOKEN_RING    0x0201
 133 #define PCI_CLASS_NETWORK_FDDI          0x0202
 134 #define PCI_CLASS_NETWORK_OTHER         0x0280
 135 
 136 #define PCI_CLASS_DISPLAY_VGA           0x0300
 137 #define PCI_CLASS_DISPLAY_XGA           0x0301
 138 #define PCI_CLASS_DISPLAY_OTHER         0x0380
 139 
 140 #define PCI_CLASS_MULTIMEDIA_VIDEO      0x0400
 141 #define PCI_CLASS_MULTIMEDIA_AUDIO      0x0401
 142 #define PCI_CLASS_MULTIMEDIA_OTHER      0x0480
 143 
 144 #define PCI_CLASS_MEMORY_RAM            0x0500
 145 #define PCI_CLASS_MEMORY_FLASH          0x0501
 146 #define PCI_CLASS_MEMORY_OTHER          0x0580
 147 
 148 #define PCI_CLASS_BRIDGE_HOST           0x0600
 149 #define PCI_CLASS_BRIDGE_ISA            0x0601
 150 #define PCI_CLASS_BRIDGE_EISA           0x0602
 151 #define PCI_CLASS_BRIDGE_MC             0x0603
 152 #define PCI_CLASS_BRIDGE_PCI            0x0604
 153 #define PCI_CLASS_BRIDGE_PCMCIA         0x0605
 154 #define PCI_CLASS_BRIDGE_OTHER          0x0680
 155 
 156 #define PCI_CLASS_OTHERS                0xff
 157 
 158 struct pci_class_type {
 159         unsigned long class_id;
 160         char *class_name;
 161 };
 162 
 163 #define PCI_CLASS_NUM 28
 164 #define PCI_CLASS_TYPE    { \
 165         {PCI_CLASS_NOT_DEFINED,         "Old unidentified device"}, \
 166         {PCI_CLASS_NOT_DEFINED_VGA,     "Old VGA controller"}, \
 167         {PCI_CLASS_STORAGE_SCSI,        "SCSI bus controller"}, \
 168         {PCI_CLASS_STORAGE_IDE,         "IDE controller"}, \
 169         {PCI_CLASS_STORAGE_FLOPPY,      "Floppy controller"}, \
 170         {PCI_CLASS_STORAGE_IPI,         "IPI bus controller"}, \
 171         {PCI_CLASS_STORAGE_OTHER,       "Unknown mass storage controller"}, \
 172         {PCI_CLASS_NETWORK_ETHERNET,    "Ethernet controller"}, \
 173         {PCI_CLASS_NETWORK_TOKEN_RING,  "Token ring controller"}, \
 174         {PCI_CLASS_NETWORK_FDDI,        "FDDI controller"}, \
 175         {PCI_CLASS_NETWORK_OTHER,       "Unknown network controller"}, \
 176         {PCI_CLASS_DISPLAY_VGA,         "VGA display controller"}, \
 177         {PCI_CLASS_DISPLAY_XGA,         "XGA display controller"}, \
 178         {PCI_CLASS_DISPLAY_OTHER,       "Unknown display controller"}, \
 179         {PCI_CLASS_MULTIMEDIA_VIDEO,    "Video device"}, \
 180         {PCI_CLASS_MULTIMEDIA_AUDIO,    "Audio device"}, \
 181         {PCI_CLASS_MULTIMEDIA_OTHER,    "Unknown multimedia device"}, \
 182         {PCI_CLASS_MEMORY_RAM,          "RAM controller"}, \
 183         {PCI_CLASS_MEMORY_FLASH,        "FLASH controller"}, \
 184         {PCI_CLASS_MEMORY_OTHER,        "Unknown memory controller"}, \
 185         {PCI_CLASS_BRIDGE_HOST,         "Host bridge"}, \
 186         {PCI_CLASS_BRIDGE_ISA,          "ISA bridge"}, \
 187         {PCI_CLASS_BRIDGE_EISA,         "EISA bridge"}, \
 188         {PCI_CLASS_BRIDGE_MC,           "MC bridge"}, \
 189         {PCI_CLASS_BRIDGE_PCI,          "PCI to PCI bridge"}, \
 190         {PCI_CLASS_BRIDGE_PCMCIA,       "PCMCIA bridge"}, \
 191         {PCI_CLASS_BRIDGE_OTHER,        "Unknown bridge device"}, \
 192         {0,                             "Unknown type of PCI device"} \
 193 }
 194 
 195 #define PCI_VENDOR_ID_NCR               0x1000
 196 #define PCI_DEVICE_ID_NCR_53C810        0x0001
 197 #define PCI_DEVICE_ID_NCR_53C815        0x0004
 198 #define PCI_DEVICE_ID_NCR_53C820        0x0002
 199 #define PCI_DEVICE_ID_NCR_53C825        0x0003
 200 
 201 #define PCI_VENDOR_ID_ADAPTEC           0x9004
 202 #define PCI_DEVICE_ID_ADAPTEC_2940      0x7178
 203 #define PCI_DEVICE_ID_ADAPTEC_294x      0x7078
 204 
 205 #define PCI_VENDOR_ID_DPT               0x1044   
 206 #define PCI_DEVICE_ID_DPT               0xa400  
 207 
 208 #define PCI_VENDOR_ID_S3                0x5333
 209 #define PCI_DEVICE_ID_S3_864_1          0x88c0
 210 #define PCI_DEVICE_ID_S3_864_2          0x88c1
 211 #define PCI_DEVICE_ID_S3_928            0x88b0
 212 #define PCI_DEVICE_ID_S3_964_1          0x88d0
 213 #define PCI_DEVICE_ID_S3_964_2          0x88d1
 214 #define PCI_DEVICE_ID_S3_811            0x8811
 215 
 216 #define PCI_VENDOR_ID_OPTI              0x1045
 217 #define PCI_DEVICE_ID_OPTI_82C822       0xc822
 218 #define PCI_DEVICE_ID_OPTI_82C621       0xc621
 219 
 220 #define PCI_VENDOR_ID_UMC               0x1060
 221 #define PCI_DEVICE_ID_UMC_UM8881F       0x8881
 222 #define PCI_DEVICE_ID_UMC_UM8891A       0x0891
 223 #define PCI_DEVICE_ID_UMC_UM8886F       0x8886
 224 #define PCI_DEVICE_ID_UMC_UM8673F       0x886a
 225 
 226 #define PCI_VENDOR_ID_DEC               0x1011
 227 #define PCI_DEVICE_ID_DEC_TULIP         0x0002
 228 #define PCI_DEVICE_ID_DEC_TULIP_FAST    0x0009
 229 #define PCI_DEVICE_ID_DEC_FDDI          0x000F
 230 #define PCI_DEVICE_ID_DEC_BRD           0x0001
 231 
 232 #define PCI_VENDOR_ID_MATROX            0x102B
 233 #define PCI_DEVICE_ID_MATROX_MGA_2      0x0518
 234 #define PCI_DEVICE_ID_MATROX_MGA_IMP    0x0d10
 235 
 236 #define PCI_VENDOR_ID_INTEL             0x8086
 237 #define PCI_DEVICE_ID_INTEL_82378       0x0484
 238 #define PCI_DEVICE_ID_INTEL_82424       0x0483
 239 #define PCI_DEVICE_ID_INTEL_82375       0x0482
 240 #define PCI_DEVICE_ID_INTEL_82434       0x04a3
 241 #define PCI_DEVICE_ID_INTEL_82430       0x0486
 242 #define PCI_DEVICE_ID_INTEL_82437       0x122d
 243 #define PCI_DEVICE_ID_INTEL_82371       0x122e
 244 
 245 #define PCI_VENDOR_ID_SMC               0x1042
 246 #define PCI_DEVICE_ID_SMC_37C665        0x1000
 247 
 248 #define PCI_VENDOR_ID_ATI               0x1002
 249 #define PCI_DEVICE_ID_ATI_M32           0x4158
 250 #define PCI_DEVICE_ID_ATI_M64           0x4758
 251 
 252 #define PCI_VENDOR_ID_WEITEK            0x100e
 253 #define PCI_DEVICE_ID_WEITEK_P9000      0x9001
 254 #define PCI_DEVICE_ID_WEITEK_P9100      0x9100
 255 
 256 #define PCI_VENDOR_ID_CIRRUS            0x1013
 257 #define PCI_DEVICE_ID_CIRRUS_5430       0x00A0
 258 #define PCI_DEVICE_ID_CIRRUS_5434_4     0x00A4
 259 #define PCI_DEVICE_ID_CIRRUS_5434_8     0x00A8
 260 #define PCI_DEVICE_ID_CIRRUS_6729       0x1100
 261 
 262 #define PCI_VENDOR_ID_BUSLOGIC          0x104B
 263 #define PCI_DEVICE_ID_BUSLOGIC_946C     0x1040
 264 #define PCI_DEVICE_ID_BUSLOGIC_946C_2   0x0140
 265 
 266 #define PCI_VENDOR_ID_N9                0x105D
 267 #define PCI_DEVICE_ID_N9_I128           0x2309
 268 
 269 #define PCI_VENDOR_ID_AI                0x1025
 270 #define PCI_DEVICE_ID_AI_M1435          0x1435
 271 
 272 #define PCI_VENDOR_ID_AL                0x10b9
 273 #define PCI_DEVICE_ID_AL_M1445          0x1445
 274 #define PCI_DEVICE_ID_AL_M1449          0x1449
 275 #define PCI_DEVICE_ID_AL_M1451          0x1451
 276 #define PCI_DEVICE_ID_AL_M4803          0x5215
 277 
 278 #define PCI_VENDOR_ID_TSENG             0x100c
 279 #define PCI_DEVICE_ID_TSENG_W32P_2      0x3202
 280 #define PCI_DEVICE_ID_TSENG_W32P_b      0x3205
 281 #define PCI_DEVICE_ID_TSENG_W32P_c      0x3206
 282 #define PCI_DEVICE_ID_TSENG_W32P_d      0x3207
 283 
 284 #define PCI_VENDOR_ID_CMD               0x1095
 285 #define PCI_DEVICE_ID_CMD_640           0x0640
 286 
 287 #define PCI_VENDOR_ID_VISION            0x1098
 288 #define PCI_DEVICE_ID_VISION_QD8500     0x0001
 289 #define PCI_DEVICE_ID_VISION_QD8580     0x0002
 290 
 291 #define PCI_VENDOR_ID_AMD               0x1022
 292 #define PCI_DEVICE_ID_AMD_LANCE         0x2000
 293 #define PCI_DEVICE_ID_AMD_SCSI          0x2020
 294 
 295 #define PCI_VENDOR_ID_VLSI              0x1004
 296 #define PCI_DEVICE_ID_VLSI_82C593       0x0006
 297 
 298 #define PCI_VENDOR_ID_ADL               0x1005
 299 #define PCI_DEVICE_ID_ADL_2301          0x2301
 300 
 301 #define PCI_VENDOR_ID_SYMPHONY          0x1c1c
 302 #define PCI_DEVICE_ID_SYMPHONY_101      0x0001
 303 
 304 #define PCI_VENDOR_ID_TRIDENT           0x1023
 305 #define PCI_DEVICE_ID_TRIDENT_9420      0x9420
 306 #define PCI_DEVICE_ID_TRIDENT_9440      0x9440
 307 
 308 #define PCI_VENDOR_ID_CONTAQ            0x1080
 309 #define PCI_DEVICE_ID_CONTAQ_82C599     0x0600
 310 
 311 #define PCI_VENDOR_ID_NS                0x100b
 312 #define PCI_DEVICE_ID_NS_87410          0xd001
 313 
 314 #define PCI_VENDOR_ID_VIA               0x1106
 315 #define PCI_DEVICE_ID_VIA_82C505        0x0505
 316 
 317 #define PCI_VENDOR_ID_SI                0x1039
 318 #define PCI_DEVICE_ID_SI_496            0x0496
 319 #define PCI_DEVICE_ID_SI_501            0x0406
 320 #define PCI_DEVICE_ID_SI_503            0x0008
 321 
 322 #define PCI_VENDOR_ID_LEADTEK           0x107d
 323 #define PCI_DEVICE_ID_LEADTEK_805       0x0000
 324 
 325 #define PCI_VENDOR_ID_IMS               0x10e0
 326 #define PCI_DEVICE_ID_IMS_8849          0x8849
 327 
 328 #define PCI_VENDOR_ID_ZEINET            0x1193
 329 #define PCI_DEVICE_ID_ZEINET_1221       0x0001
 330 
 331 #define PCI_VENDOR_ID_EF                0x111a
 332 #define PCI_DEVICE_ID_EF_ATM            0x0000
 333 
 334 #define PCI_VENDOR_ID_HER               0xedd8
 335 #define PCI_DEVICE_ID_HER_STING         0xa091
 336 
 337 #define PCI_VENDOR_ID_ATRONICS          0x907f
 338 #define PCI_DEVICE_ID_ATRONICS_2015     0x2015
 339 
 340 #define PCI_VENDOR_ID_CT                0x102c
 341 #define PCI_DEVICE_ID_CT_65545          0x00d8
 342 
 343 #define PCI_VENDOR_ID_FUTUR             0x1036
 344 #define PCI_DEVICE_ID_FUTUR_18C30       0x0000
 345 
 346 #define PCI_VENDOR_ID_WINBOND           0x10ad
 347 #define PCI_DEVICE_ID_WINBOND_83769     0x0001
 348 
 349 #define PCI_VENDOR_ID_3COM              0x10b7
 350 #define PCI_DEVICE_ID_3COM_3C590        0x5900
 351 #define PCI_DEVICE_ID_3COM_3C595TX      0x5950
 352 #define PCI_DEVICE_ID_3COM_3C595T4      0x5951
 353 #define PCI_DEVICE_ID_3COM_3C595MII     0x5952
 354 
 355 struct pci_vendor_type {
 356         unsigned short vendor_id;
 357         char *vendor_name;
 358 };
 359 
 360 
 361 #define PCI_VENDOR_NUM 39
 362 #define PCI_VENDOR_TYPE { \
 363         {PCI_VENDOR_ID_NCR,             "NCR"}, \
 364         {PCI_VENDOR_ID_ADAPTEC,         "Adaptec"}, \
 365         {PCI_VENDOR_ID_DPT,             "DPT"}, \
 366         {PCI_VENDOR_ID_S3,              "S3 Inc."}, \
 367         {PCI_VENDOR_ID_OPTI,            "OPTI"}, \
 368         {PCI_VENDOR_ID_UMC,             "UMC"}, \
 369         {PCI_VENDOR_ID_DEC,             "DEC"}, \
 370         {PCI_VENDOR_ID_MATROX,          "Matrox"}, \
 371         {PCI_VENDOR_ID_INTEL,           "Intel"}, \
 372         {PCI_VENDOR_ID_SMC,             "SMC"}, \
 373         {PCI_VENDOR_ID_ATI,             "ATI"}, \
 374         {PCI_VENDOR_ID_WEITEK,          "Weitek"}, \
 375         {PCI_VENDOR_ID_CIRRUS,          "Cirrus Logic"}, \
 376         {PCI_VENDOR_ID_BUSLOGIC,        "Bus Logic"}, \
 377         {PCI_VENDOR_ID_N9,              "Number Nine"}, \
 378         {PCI_VENDOR_ID_AI,              "Acer Incorporated"}, \
 379         {PCI_VENDOR_ID_AL,              "Acer Labs"}, \
 380         {PCI_VENDOR_ID_TSENG,           "Tseng'Lab"}, \
 381         {PCI_VENDOR_ID_CMD,             "CMD"}, \
 382         {PCI_VENDOR_ID_VISION,          "Vision"}, \
 383         {PCI_VENDOR_ID_AMD,             "AMD"}, \
 384         {PCI_VENDOR_ID_VLSI,            "VLSI"}, \
 385         {PCI_VENDOR_ID_ADL,             "Advance Logic"}, \
 386         {PCI_VENDOR_ID_SYMPHONY,        "Symphony"}, \
 387         {PCI_VENDOR_ID_TRIDENT,         "Trident"}, \
 388         {PCI_VENDOR_ID_CONTAQ,          "Contaq"}, \
 389         {PCI_VENDOR_ID_NS,              "NS"}, \
 390         {PCI_VENDOR_ID_VIA,             "VIA Technologies"}, \
 391         {PCI_VENDOR_ID_SI,              "Silicon Integrated"}, \
 392         {PCI_VENDOR_ID_LEADTEK,         "Leadtek Research"}, \
 393         {PCI_VENDOR_ID_IMS,             "IMS"}, \
 394         {PCI_VENDOR_ID_ZEINET,          "ZeiNet"}, \
 395         {PCI_VENDOR_ID_EF,              "Efficient Networks"}, \
 396         {PCI_VENDOR_ID_HER,             "Hercules"}, \
 397         {PCI_VENDOR_ID_ATRONICS,        "Atronics"}, \
 398         {PCI_VENDOR_ID_CT,              "Chips & Technologies"}, \
 399         {PCI_VENDOR_ID_FUTUR,           "Future Domain"},\
 400         {PCI_VENDOR_ID_WINBOND,         "Winbond"}, \
 401         {PCI_VENDOR_ID_3COM,            "3Com"} \
 402 }
 403 
 404 
 405 /* Optimisation pointer is a offset of an item into the array           */
 406 /* BRIDGE_MAPPING_TYPE. 0xff indicates that the device is not a PCI     */
 407 /* bridge, or that we don't know for the moment how to configure it.    */
 408 /* I'm trying to do my best so that the kernel stays small.             */
 409 /* Different chipset can have same optimisation structure. i486 and     */
 410 /* pentium chipsets from the same manufacturer usually have the same    */
 411 /* structure                                                            */
 412 
 413 struct pci_device_type {
 414         unsigned char bridge_id;
 415         unsigned short vendor_id;
 416         unsigned short device_id;
 417         char *device_name;
 418 };
 419 
 420 #define PCI_DEVICE_NUM 82
 421 #define PCI_DEVICE_TYPE { \
 422         {0xff,  PCI_VENDOR_ID_NCR,      PCI_DEVICE_ID_NCR_53C810,       "53c810"}, \
 423         {0xff,  PCI_VENDOR_ID_NCR,      PCI_DEVICE_ID_NCR_53C815,       "53c815"}, \
 424         {0xff,  PCI_VENDOR_ID_NCR,      PCI_DEVICE_ID_NCR_53C820,       "53c820"}, \
 425         {0xff,  PCI_VENDOR_ID_NCR,      PCI_DEVICE_ID_NCR_53C825,       "53c825"}, \
 426         {0xff,  PCI_VENDOR_ID_ADAPTEC,  PCI_DEVICE_ID_ADAPTEC_2940,     "2940"}, \
 427         {0xff,  PCI_VENDOR_ID_ADAPTEC,  PCI_DEVICE_ID_ADAPTEC_294x,     "294x"}, \
 428         {0xff,  PCI_VENDOR_ID_DPT,      PCI_DEVICE_ID_DPT,              "SmartCache/Raid"}, \
 429         {0xff,  PCI_VENDOR_ID_S3,       PCI_DEVICE_ID_S3_864_1,         "Vision 864-P"}, \
 430         {0xff,  PCI_VENDOR_ID_S3,       PCI_DEVICE_ID_S3_864_2,         "Vision 864-P"}, \
 431         {0xff,  PCI_VENDOR_ID_S3,       PCI_DEVICE_ID_S3_928,           "Vision 928-P"}, \
 432         {0xff,  PCI_VENDOR_ID_S3,       PCI_DEVICE_ID_S3_964_1,         "Vision 964-P"}, \
 433         {0xff,  PCI_VENDOR_ID_S3,       PCI_DEVICE_ID_S3_964_2,         "Vision 964-P"}, \
 434         {0xff,  PCI_VENDOR_ID_S3,       PCI_DEVICE_ID_S3_811,           "Trio32/Trio64"}, \
 435         {0x02,  PCI_VENDOR_ID_OPTI,     PCI_DEVICE_ID_OPTI_82C822,      "82C822"}, \
 436         {0xff,  PCI_VENDOR_ID_OPTI,     PCI_DEVICE_ID_OPTI_82C621,      "82C621"}, \
 437         {0xff,  PCI_VENDOR_ID_UMC,      PCI_DEVICE_ID_UMC_UM8881F,      "UM8881F"}, \
 438         {0x01,  PCI_VENDOR_ID_UMC,      PCI_DEVICE_ID_UMC_UM8891A,      "UM8891A"}, \
 439         {0xff,  PCI_VENDOR_ID_UMC,      PCI_DEVICE_ID_UMC_UM8886F,      "UM8886F"}, \
 440         {0xff,  PCI_VENDOR_ID_UMC,      PCI_DEVICE_ID_UMC_UM8673F,      "UM8673F"}, \
 441         {0xff,  PCI_VENDOR_ID_DEC,      PCI_DEVICE_ID_DEC_TULIP,        "DC21040"}, \
 442         {0xff,  PCI_VENDOR_ID_DEC,      PCI_DEVICE_ID_DEC_TULIP_FAST,   "DC21040"}, \
 443         {0xff,  PCI_VENDOR_ID_DEC,      PCI_DEVICE_ID_DEC_FDDI,         "DEFPA"}, \
 444         {0xff,  PCI_VENDOR_ID_DEC,      PCI_DEVICE_ID_DEC_BRD,          "DC21050"}, \
 445         {0xff,  PCI_VENDOR_ID_MATROX,   PCI_DEVICE_ID_MATROX_MGA_2,     "Atlas PX2085"}, \
 446         {0xff,  PCI_VENDOR_ID_MATROX,   PCI_DEVICE_ID_MATROX_MGA_IMP,   "MGA Impression"}, \
 447         {0xff,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82378,      "82378IB"}, \
 448         {0x00,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82424,      "82424ZX Saturn"}, \
 449         {0xff,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82375,      "82375EB"}, \
 450         {0x00,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82434,      "82434LX Mercury/Neptune"}, \
 451         {0xff,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82430,      "82430ZX Aries"}, \
 452         {0xff,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82437,      "82437FX Triton"}, \
 453         {0xff,  PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82371,      "82371FB"}, \
 454         {0xff,  PCI_VENDOR_ID_SMC,      PCI_DEVICE_ID_SMC_37C665,       "FDC 37C665"}, \
 455         {0xff,  PCI_VENDOR_ID_ATI,      PCI_DEVICE_ID_ATI_M32,          "Mach 32"}, \
 456         {0xff,  PCI_VENDOR_ID_ATI,      PCI_DEVICE_ID_ATI_M64,          "Mach 64"}, \
 457         {0xff,  PCI_VENDOR_ID_WEITEK,   PCI_DEVICE_ID_WEITEK_P9000,     "P9000"}, \
 458         {0xff,  PCI_VENDOR_ID_WEITEK,   PCI_DEVICE_ID_WEITEK_P9100,     "P9100"}, \
 459         {0xff,  PCI_VENDOR_ID_CIRRUS,   PCI_DEVICE_ID_CIRRUS_5430,      "GD 5430"}, \
 460         {0xff,  PCI_VENDOR_ID_CIRRUS,   PCI_DEVICE_ID_CIRRUS_5434_4,    "GD 5434"}, \
 461         {0xff,  PCI_VENDOR_ID_CIRRUS,   PCI_DEVICE_ID_CIRRUS_5434_8,    "GD 5434"}, \
 462         {0xff,  PCI_VENDOR_ID_CIRRUS,   PCI_DEVICE_ID_CIRRUS_6729,      "CL 6729"}, \
 463         {0xff,  PCI_VENDOR_ID_BUSLOGIC,PCI_DEVICE_ID_BUSLOGIC_946C,     "946C"}, \
 464         {0xff,  PCI_VENDOR_ID_BUSLOGIC,PCI_DEVICE_ID_BUSLOGIC_946C_2,   "946C"}, \
 465         {0xff,  PCI_VENDOR_ID_N9,       PCI_DEVICE_ID_N9_I128,          "Imagine 128"}, \
 466         {0xff,  PCI_VENDOR_ID_AI,       PCI_DEVICE_ID_AI_M1435,         "M1435"}, \
 467         {0xff,  PCI_VENDOR_ID_AL,       PCI_DEVICE_ID_AL_M1445,         "M1445"}, \
 468         {0xff,  PCI_VENDOR_ID_AL,       PCI_DEVICE_ID_AL_M1449,         "M1449"}, \
 469         {0xff,  PCI_VENDOR_ID_AL,       PCI_DEVICE_ID_AL_M1451,         "M1451"}, \
 470         {0xff,  PCI_VENDOR_ID_AL,       PCI_DEVICE_ID_AL_M4803,         "MS4803"}, \
 471         {0xff,  PCI_VENDOR_ID_TSENG,    PCI_DEVICE_ID_TSENG_W32P_2,     "ET4000W32P"}, \
 472         {0xff,  PCI_VENDOR_ID_TSENG,    PCI_DEVICE_ID_TSENG_W32P_b,     "ET4000W32P rev B"}, \
 473         {0xff,  PCI_VENDOR_ID_TSENG,    PCI_DEVICE_ID_TSENG_W32P_c,     "ET4000W32P rev C"}, \
 474         {0xff,  PCI_VENDOR_ID_TSENG,    PCI_DEVICE_ID_TSENG_W32P_d,     "ET4000W32P rev D"}, \
 475         {0xff,  PCI_VENDOR_ID_CMD,      PCI_DEVICE_ID_CMD_640,          "640A"}, \
 476         {0xff,  PCI_VENDOR_ID_VISION,   PCI_DEVICE_ID_VISION_QD8500,    "QD-8500"}, \
 477         {0xff,  PCI_VENDOR_ID_VISION,   PCI_DEVICE_ID_VISION_QD8580,    "QD-8580"}, \
 478         {0xff,  PCI_VENDOR_ID_AMD,      PCI_DEVICE_ID_AMD_LANCE,        "79C970"}, \
 479         {0xff,  PCI_VENDOR_ID_AMD,      PCI_DEVICE_ID_AMD_SCSI,         "53C974"}, \
 480         {0xff,  PCI_VENDOR_ID_VLSI,     PCI_DEVICE_ID_VLSI_82C593,      "82C593-FC1"}, \
 481         {0xff,  PCI_VENDOR_ID_ADL,      PCI_DEVICE_ID_ADL_2301,         "2301"}, \
 482         {0xff,  PCI_VENDOR_ID_SYMPHONY, PCI_DEVICE_ID_SYMPHONY_101,     "82C101"}, \
 483         {0xff,  PCI_VENDOR_ID_TRIDENT,  PCI_DEVICE_ID_TRIDENT_9420,     "TG 9420"}, \
 484         {0xff,  PCI_VENDOR_ID_TRIDENT,  PCI_DEVICE_ID_TRIDENT_9440,     "TG 9440"}, \
 485         {0xff,  PCI_VENDOR_ID_CONTAQ,   PCI_DEVICE_ID_CONTAQ_82C599,    "82C599"}, \
 486         {0xff,  PCI_VENDOR_ID_NS,       PCI_DEVICE_ID_NS_87410,         "87410"}, \
 487         {0xff,  PCI_VENDOR_ID_VIA,      PCI_DEVICE_ID_VIA_82C505,       "VT 82C505"}, \
 488         {0xff,  PCI_VENDOR_ID_SI,       PCI_DEVICE_ID_SI_496,           "85C496"}, \
 489         {0xff,  PCI_VENDOR_ID_SI,       PCI_DEVICE_ID_SI_501,           "85C501"}, \
 490         {0xff,  PCI_VENDOR_ID_SI,       PCI_DEVICE_ID_SI_503,           "85C503"}, \
 491         {0xff,  PCI_VENDOR_ID_LEADTEK,  PCI_DEVICE_ID_LEADTEK_805,      "S3 805"}, \
 492         {0xff,  PCI_VENDOR_ID_IMS,      PCI_DEVICE_ID_IMS_8849,         "8849"}, \
 493         {0xff,  PCI_VENDOR_ID_ZEINET,   PCI_DEVICE_ID_ZEINET_1221,      "1221"}, \
 494         {0xff,  PCI_VENDOR_ID_EF,       PCI_DEVICE_ID_EF_ATM,           "155P-MF1"}, \
 495         {0xff,  PCI_VENDOR_ID_HER,      PCI_DEVICE_ID_HER_STING,        "Stingray"}, \
 496         {0xff,  PCI_VENDOR_ID_ATRONICS, PCI_DEVICE_ID_ATRONICS_2015,    "IDE-2015PL"}, \
 497         {0xff,  PCI_VENDOR_ID_CT,       PCI_DEVICE_ID_CT_65545,         "65545"}, \
 498         {0xff,  PCI_VENDOR_ID_FUTUR,    PCI_DEVICE_ID_FUTUR_18C30,              "TMC-18C30"}, \
 499         {0xff,  PCI_VENDOR_ID_WINBOND,  PCI_DEVICE_ID_WINBOND_83769,            "W83769F"}, \
 500         {0xff,  PCI_VENDOR_ID_3COM,     PCI_DEVICE_ID_3COM_3C590,               "3C590 10bT"}, \
 501         {0xff,  PCI_VENDOR_ID_3COM,     PCI_DEVICE_ID_3COM_3C595TX,             "3C595 100bTX"}, \
 502         {0xff,  PCI_VENDOR_ID_3COM,     PCI_DEVICE_ID_3COM_3C595T4,             "3C595 100bT4"}, \
 503         {0xff,  PCI_VENDOR_ID_3COM,     PCI_DEVICE_ID_3COM_3C595MII,            "3C595 100b-MII"} \
 504 }
 505 
 506 /* An item of this structure has the following meaning  */
 507 /* For each optimisation, the register address, the mask        */
 508 /* and value to write to turn it on.                    */
 509 /* There are 5 optimizations for the moment :           */
 510 /* Cache L2 write back best than write through          */
 511 /* Posted Write for CPU to PCI enable                   */
 512 /* Posted Write for CPU to MEMORY enable                */
 513 /* Posted Write for PCI to MEMORY enable                */
 514 /* PCI Burst enable                                     */
 515 
 516 /* Half of the bios I've meet don't allow you to turn   */
 517 /* that on, and you can gain more than 15% on graphic   */
 518 /* accesses using those optimisations...                */
 519 
 520 struct optimisation_type {
 521         char    *type;
 522         char    *off;
 523         char    *on;
 524 };
 525 
 526 #define OPTIMISATION_NUM 5
 527 #define OPTIMISATION_TYPE { \
 528         {"Cache L2","write trough","write back"}, \
 529         {"CPU-PCI posted write","off","on"}, \
 530         {"CPU-Memory posted write","off","on"}, \
 531         {"PCI-Memory posted write","off","on"}, \
 532         {"PCI burst","off","on"} \
 533 }
 534 
 535 struct bridge_mapping_type {
 536         unsigned char   address;
 537         unsigned char   mask;
 538         unsigned char   value;
 539 };
 540 
 541 /* Intel Neptune/Mercury/Saturn */
 542 /*      If the Internal cache is Write back,    */
 543 /*      the L2 cache must be write through !    */
 544 /*      I've to check out how to control that   */
 545 /*      for the moment, we won't touch the cache*/
 546 /* UMC 8891A Pentium chipset                    */
 547 /*      Why did you think UMC was cheaper ??    */
 548 /* OPTI 82C822                                  */
 549 /*      This is a dummy entry for my tests.     */
 550 /*      I have this chipset and no docs....     */   
 551 
 552 /* I'm gathering docs. If you can help......    */
 553 
 554 #define BRIDGE_MAPPING_NUM 3
 555 #define BRIDGE_MAPPING_TYPE { \
 556         {0x0    ,0x02   ,0x02   }, \
 557         {0x53   ,0x02   ,0x02   }, \
 558         {0x53   ,0x01   ,0x01   }, \
 559         {0x54   ,0x01   ,0x01   }, \
 560         {0x54   ,0x02   ,0x02   }, \
 561 \
 562         {0x50   ,0x10   ,0x00   }, \
 563         {0x51   ,0x40   ,0x40   }, \
 564         {0x0    ,0x0    ,0x0    }, \
 565         {0x0    ,0x0    ,0x0    }, \
 566         {0x0    ,0x0    ,0x0    }, \
 567 \
 568         {0x0    ,0x1    ,0x1    }, \
 569         {0x0    ,0x2    ,0x0    }, \
 570         {0x0    ,0x0    ,0x0    }, \
 571         {0x0    ,0x0    ,0x0    }, \
 572         {0x0    ,0x0    ,0x0    }  \
 573 }
 574 
 575 #include <linux/bios32.h>
 576 
 577 #endif /* ndef PCI_H */

/* [previous][next][first][last][top][bottom][index][help] */