Annotation of Examples/DriverKit/AMDPCSCSIDriver/AMDPCSCSIDriver_reloc.tproj/pciconf.h, revision 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.