Annotation of Examples/DriverKit/AMDPCSCSIDriver/AMDPCSCSIDriver_reloc.tproj/pciconf.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * PCI config typedefs.
                      3:  */
                      4:  
                      5: #define PCI_NUM_BASE_ADDRESS   6
                      6: 
                      7: /*
                      8:  * Status word as bitfields.
                      9:  */
                     10: typedef struct {
                     11:        unsigned short  rsvd1:6,
                     12:                        fastBtb:1,              // fast back-to-back
                     13:                        dataParity:1,
                     14:                        devSelTiming:2,
                     15:                        sigTargetAbort:1,
                     16:                        rcvTargetAbort:1,
                     17:                        rcvMasterAbort:1,
                     18:                        sigSystemError:1,
                     19:                        detParityError:1;
                     20: } pciStatusBits;
                     21: 
                     22: /*
                     23:  * For looking at status as either bitfields or a word. 
                     24:  */
                     25: typedef union {
                     26:        pciStatusBits   bits;
                     27:        unsigned short  word;
                     28: } pciConfStatus;
                     29: 
                     30: /*
                     31:  * PCI configuration header struct, "software" view.
                     32:  */
                     33: typedef struct {
                     34:        unsigned short  deviceId;
                     35:        unsigned short  vendorId;
                     36:        pciConfStatus   status;         
                     37:        unsigned short  command;        
                     38:        unsigned        revId:8,
                     39:                        classApi:8,
                     40:                        subclass:8,
                     41:                        classCode:8;
                     42:        unsigned char   bist;
                     43:        unsigned char   headerType;
                     44:        unsigned char   latencyTimer;
                     45:        unsigned char   cacheLineSize;
                     46:        unsigned        baseAddress[PCI_NUM_BASE_ADDRESS];
                     47:        unsigned        baseAddressExp0;
                     48:        unsigned        baseAddressExp1;
                     49:        unsigned        expansionRomBase;
                     50:        unsigned        rsvd1;
                     51:        unsigned        rsvd2;
                     52:        unsigned char   maxLat;
                     53:        unsigned char   minGnt;
                     54:        unsigned char   intrPin;
                     55:        unsigned char   intrLine;
                     56: } pciConfHeader;
                     57: 
                     58: /*
                     59:  * Individual registers indices, the "hardware" view.
                     60:  */
                     61: #define PCI_DEV_AND_VENDOR_ID          0
                     62: #define PCI_DEV_ID(reg)                        ((reg & 0xffff0000) >> 16)
                     63: #define PCI_VENDOR_ID(reg)              (reg & 0x0000ffff)
                     64: 
                     65: #define PCI_STATUS_AND_COMMAND         1
                     66: #define PCI_STATUS(reg)                        ((reg & 0xffff0000) >> 16)
                     67: #define PCI_COMMAND(reg)                (reg & 0x0000ffff)
                     68: 
                     69: #define PCI_CLASS_AND_REV              2
                     70: #define PCI_CLASS_CODE(reg)            ((reg & 0xff000000) >> 24)
                     71: #define PCI_SUBCLASS(reg)              ((reg & 0x00ff0000) >> 16)
                     72: #define PCI_CLASS_API(reg)             ((reg & 0x0000ff00) >> 8)
                     73: #define PCI_REV_ID(reg)                         (reg & 0x000000ff)
                     74: 
                     75: #define        PCI_BIST_HDR_LAT_LS             3
                     76: #define PCI_BIST(reg)                  ((reg & 0xff000000) >> 24)
                     77: #define PCI_HDR_TYPE(reg)              ((reg & 0x00ff0000) >> 16)
                     78: #define PCI_LATENCY(reg)               ((reg & 0x0000ff00) >> 8)
                     79: #define PCI_CACHE_LINE_SIZE(reg)        (reg & 0x000000ff)
                     80: 
                     81: #define PCI_BASE_ADDRESS_0             4
                     82: #define PCI_BASE_ADDRESS_1             5
                     83: #define PCI_BASE_ADDRESS_2             6
                     84: #define PCI_BASE_ADDRESS_3             7
                     85: #define PCI_BASE_ADDRESS_4             8
                     86: #define PCI_BASE_ADDRESS_5             9
                     87: #define PCI_BASE_ADDRESS_EXP0          0xa
                     88: #define PCI_BASE_ADDRESS_EXP1          0xb
                     89: #define PCI_ROM_BASE_ADDRESS           0xc
                     90: #define PCI_RSVD1                      0xd
                     91: #define PCI_RSVD2                      0xe
                     92: 
                     93: #define PCI_BUS_AND_INTR               0xf
                     94: #define PCI_MAX_LAT(reg)               ((reg & 0xff000000) >> 24)
                     95: #define PCI_MAX_GNT(reg)               ((reg & 0x00ff0000) >> 16)
                     96: #define PCI_INTR_PIN(reg)              ((reg & 0x0000ff00) >> 8)
                     97: #define PCI_INTR_LINE(reg)              (reg & 0x000000ff)
                     98: 
                     99: #define PCI_BUS_AND_INTR_REG(lat, gnt, pin, line)      \
                    100:        ((lat << 24) | (gnt << 16) | (pin << 8) | line)
                    101: 
                    102: /*
                    103:  * Command register bits. 
                    104:  */
                    105: #define PCI_COMMAND_IO_ENABLE          0x0001
                    106: #define PCI_COMMAND_MEM_ENABLE         0x0002
                    107: #define PCI_COMMAND_MASTER_ENABLE      0x0004
                    108: #define PCI_COMMAND_SPECIAL            0x0008
                    109: #define PCI_COMMAND_MWI                        0x0010
                    110: #define PCI_COMMAND_PALETTE_SNOOP      0x0020
                    111: #define PCI_COMMAND_PARITY_ERROR       0x0040
                    112: #define PCI_COMMAND_WAIT_ENABLE                0x0080
                    113: #define PCI_COMMAND_SYSTEM_ERR         0x0100
                    114: #define PCI_COMMAND_FAST_BTB           0x0200
                    115: 
                    116: /*
                    117:  * headerType bits.
                    118:  */
                    119: #define HEADER_TYPE_MULTI_FCN  0x80    /* 1 --> multifunction */
                    120: 
                    121: /*
                    122:  * bist (built in self test) bits.
                    123:  */
                    124: #define PCI_BIST_CAPABLE       0x80
                    125: #define PCI_BIST_START         0x40
                    126: #define PCI_BIST_CODE_MASK     0x0f
                    127: /*
                    128:  * Limits.
                    129:  */
                    130: /* #define PCI_NUM_BUSSES              256 */
                    131: #define PCI_NUM_BUSSES         1       /* for now... */
                    132: #define PCI_NUM_DEVICES_1      32      /* per bus, method 1 */
                    133: #define PCI_NUM_DEVICES_2      16      /* per bus, method 2 */
                    134: #define PCI_NUM_FUNCTIONS      8       /* per target */
                    135: 
                    136: /*
                    137:  * Vendor ID meaning "no device here".
                    138:  */
                    139: #define VENDOR_ID_NONE 0xffff
                    140: 
                    141: /*
                    142:  * Class codes.
                    143:  */
                    144: #define PCI_CLASS_OLD          0
                    145: #define PCI_CLASS_MASS_STORAGE 1
                    146: #define PCI_CLASS_NETWORK      2
                    147: #define PCI_CLASS_DISPLAY      3
                    148: #define PCI_CLASS_MULTIMEDIA   4
                    149: #define PCI_CLASS_MEMORY       5
                    150: #define PCI_CLASS_BRIDGE       6
                    151: #define PCI_CLASS_OTHER                0xff
                    152: 
                    153: /*
                    154:  * Subclass codes.
                    155:  */
                    156:  
                    157: #define PCI_SUBCLASS0_NON_VGA  0x00
                    158: #define PCI_SUBCLASS0_VGA      0x01
                    159: 
                    160: #define PCI_SUBCLASS1_SCSI     0x00
                    161: #define PCI_SUBCLASS1_IDE      0x01
                    162: #define PCI_SUBCLASS1_FLOPPY   0x02
                    163: #define PCI_SUBCLASS1_IPI      0x03
                    164: #define PCI_SUBCLASS1_OTHER    0x80
                    165: 
                    166: #define PCI_SUBCLASS2_ENET     0x00
                    167: #define PCI_SUBCLASS2_TR       0x01
                    168: #define PCI_SUBCLASS2_FDDI     0x02
                    169: #define PCI_SUBCLASS2_OTHER    0x80
                    170: 
                    171: #define PCI_SUBCLASS3_VGA      0x00
                    172: #define PCI_SUBCLASS3_XGA      0x01
                    173: #define PCI_SUBCLASS3_OTHER    0x80
                    174: 
                    175: #define PCI_SUBCLASS4_VIDEO    0x00
                    176: #define PCI_SUBCLASS4_AUDIO    0x01
                    177: #define PCI_SUBCLASS4_OTHER    0x02
                    178: 
                    179: #define PCI_SUBCLASS5_RAM      0x00
                    180: #define PCI_SUBCLASS5_FLASH    0x01
                    181: #define PCI_SUBCLASS5_OTHER    0x80
                    182: 
                    183: #define PCI_SUBCLASS6_HOST_PCI 0x00
                    184: #define PCI_SUBCLASS6_PCI_ISA  0x01
                    185: #define PCI_SUBCLASS6_PCI_EISA 0x02
                    186: #define PCI_SUBCLASS6_PCI_MICRO        0x03
                    187: #define PCI_SUBCLASS6_PCI_PCI  0x04
                    188: #define PCI_SUBCLASS6_PCI_MCIA 0x05
                    189: #define PCI_SUBCLASS6_OTHER    0x80
                    190: 
                    191: /* 
                    192:  * Constants for parsing base address registers.
                    193:  */
                    194: #define PCI_BASE_IO_BIT                0x01
                    195: #define PCI_BASE_PREFETCHABLE  0x08
                    196: #define PCI_BASE_MEM_TYPE      0x06
                    197: #define PCI_BASE_IO(value)     (value & 0xfffffffc)
                    198: #define PCI_BASE_MEMORY(value) (value & 0xfffffff0)
                    199: #define PCI_MEM_TYPE_ANY_32    0x00
                    200: #define PCI_MEM_TYPE_LOW_1MEG  0x02
                    201: #define PCI_MEM_TYPE_ANY_64    0x04
                    202: 
                    203: /*
                    204:  * The actual ports we read and write to get all of the above using 
                    205:  * Configuration mechanism 1.
                    206:  */
                    207: #define PCI_CONF_ADDRS_PORT    0xcf8
                    208: #define PCI_CONF_DATA_PORT     0xcfc
                    209: 
                    210: /*
                    211:  * Ports and constants used for Configuration mechanism 2.
                    212:  *
                    213:  * FIXME - what is the width of PCI_FORWARD_PORT?
                    214:  */
                    215: #define PCI_CSE_PORT           0xcf8   /* Configuration Space Enable */
                    216:                                        /*    (8-bit) */
                    217: #define PCI_FORWARD_PORT       0xcfa   /* basically, the bus number */
                    218: #define PCI_CONFIG_BASE                0xc000  /* base of mapped device register */
                    219:                                        /*    space */
                    220: 
                    221: /*
                    222:  * Fields in PCI_CSE_PORT
                    223:  */
                    224: #define PCI_CSE_SPECIAL                0x01
                    225: #define PCI_CSE_KEY_MAP                0xf0
                    226: #define PCI_CSE_KEY_NORMAL     0x00
                    227: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.