Annotation of cf/pcireg.h, revision 1.1.1.1

1.1       root        1: /*     $NetBSD: pcireg.h,v 1.19 1998/12/21 20:31:54 drochner Exp $     */
                      2: 
                      3: /*
                      4:  * Copyright (c) 1995, 1996 Christopher G. Demetriou.  All rights reserved.
                      5:  * Copyright (c) 1994, 1996 Charles M. Hannum.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *     This product includes software developed by Charles M. Hannum.
                     18:  * 4. The name of the author may not be used to endorse or promote products
                     19:  *    derived from this software without specific prior written permission.
                     20:  *
                     21:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     22:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     23:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     24:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     25:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     26:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     27:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     28:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     30:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     31:  */
                     32: 
                     33: #ifndef _DEV_PCI_PCIREG_H_
                     34: #define        _DEV_PCI_PCIREG_H_
                     35: 
                     36: /*
                     37:  * Standardized PCI configuration information
                     38:  *
                     39:  * XXX This is not complete.
                     40:  */
                     41: 
                     42: /*
                     43:  * Device identification register; contains a vendor ID and a device ID.
                     44:  */
                     45: #define        PCI_ID_REG                      0x00
                     46: 
                     47: typedef u_int16_t pci_vendor_id_t;
                     48: typedef u_int16_t pci_product_id_t;
                     49: 
                     50: #define        PCI_VENDOR_SHIFT                        0
                     51: #define        PCI_VENDOR_MASK                         0xffff
                     52: #define        PCI_VENDOR(id) \
                     53:            (((id) >> PCI_VENDOR_SHIFT) & PCI_VENDOR_MASK)
                     54: 
                     55: #define        PCI_PRODUCT_SHIFT                       16
                     56: #define        PCI_PRODUCT_MASK                        0xffff
                     57: #define        PCI_PRODUCT(id) \
                     58:            (((id) >> PCI_PRODUCT_SHIFT) & PCI_PRODUCT_MASK)
                     59: 
                     60: /*
                     61:  * Command and status register.
                     62:  */
                     63: #define        PCI_COMMAND_STATUS_REG                  0x04
                     64: 
                     65: #define        PCI_COMMAND_IO_ENABLE                   0x00000001
                     66: #define        PCI_COMMAND_MEM_ENABLE                  0x00000002
                     67: #define        PCI_COMMAND_MASTER_ENABLE               0x00000004
                     68: #define        PCI_COMMAND_SPECIAL_ENABLE              0x00000008
                     69: #define        PCI_COMMAND_INVALIDATE_ENABLE           0x00000010
                     70: #define        PCI_COMMAND_PALETTE_ENABLE              0x00000020
                     71: #define        PCI_COMMAND_PARITY_ENABLE               0x00000040
                     72: #define        PCI_COMMAND_STEPPING_ENABLE             0x00000080
                     73: #define        PCI_COMMAND_SERR_ENABLE                 0x00000100
                     74: #define        PCI_COMMAND_BACKTOBACK_ENABLE           0x00000200
                     75: 
                     76: #define        PCI_STATUS_CAPLIST_SUPPORT              0x00100000
                     77: #define        PCI_STATUS_66MHZ_SUPPORT                0x00200000
                     78: #define        PCI_STATUS_UDF_SUPPORT                  0x00400000
                     79: #define        PCI_STATUS_BACKTOBACK_SUPPORT           0x00800000
                     80: #define        PCI_STATUS_PARITY_ERROR                 0x01000000
                     81: #define        PCI_STATUS_DEVSEL_FAST                  0x00000000
                     82: #define        PCI_STATUS_DEVSEL_MEDIUM                0x02000000
                     83: #define        PCI_STATUS_DEVSEL_SLOW                  0x04000000
                     84: #define        PCI_STATUS_DEVSEL_MASK                  0x06000000
                     85: #define        PCI_STATUS_TARGET_TARGET_ABORT          0x08000000
                     86: #define        PCI_STATUS_MASTER_TARGET_ABORT          0x10000000
                     87: #define        PCI_STATUS_MASTER_ABORT                 0x20000000
                     88: #define        PCI_STATUS_SPECIAL_ERROR                0x40000000
                     89: #define        PCI_STATUS_PARITY_DETECT                0x80000000
                     90: 
                     91: /*
                     92:  * PCI Class and Revision Register; defines type and revision of device.
                     93:  */
                     94: #define        PCI_CLASS_REG                   0x08
                     95: 
                     96: typedef u_int8_t pci_class_t;
                     97: typedef u_int8_t pci_subclass_t;
                     98: typedef u_int8_t pci_interface_t;
                     99: typedef u_int8_t pci_revision_t;
                    100: 
                    101: #define        PCI_CLASS_SHIFT                         24
                    102: #define        PCI_CLASS_MASK                          0xff
                    103: #define        PCI_CLASS(cr) \
                    104:            (((cr) >> PCI_CLASS_SHIFT) & PCI_CLASS_MASK)
                    105: 
                    106: #define        PCI_SUBCLASS_SHIFT                      16
                    107: #define        PCI_SUBCLASS_MASK                       0xff
                    108: #define        PCI_SUBCLASS(cr) \
                    109:            (((cr) >> PCI_SUBCLASS_SHIFT) & PCI_SUBCLASS_MASK)
                    110: 
                    111: #define        PCI_INTERFACE_SHIFT                     8
                    112: #define        PCI_INTERFACE_MASK                      0xff
                    113: #define        PCI_INTERFACE(cr) \
                    114:            (((cr) >> PCI_INTERFACE_SHIFT) & PCI_INTERFACE_MASK)
                    115: 
                    116: #define        PCI_REVISION_SHIFT                      0
                    117: #define        PCI_REVISION_MASK                       0xff
                    118: #define        PCI_REVISION(cr) \
                    119:            (((cr) >> PCI_REVISION_SHIFT) & PCI_REVISION_MASK)
                    120: 
                    121: /* base classes */
                    122: #define        PCI_CLASS_PREHISTORIC                   0x00
                    123: #define        PCI_CLASS_MASS_STORAGE                  0x01
                    124: #define        PCI_CLASS_NETWORK                       0x02
                    125: #define        PCI_CLASS_DISPLAY                       0x03
                    126: #define        PCI_CLASS_MULTIMEDIA                    0x04
                    127: #define        PCI_CLASS_MEMORY                        0x05
                    128: #define        PCI_CLASS_BRIDGE                        0x06
                    129: #define        PCI_CLASS_COMMUNICATIONS                0x07
                    130: #define        PCI_CLASS_SYSTEM                        0x08
                    131: #define        PCI_CLASS_INPUT                         0x09
                    132: #define        PCI_CLASS_DOCK                          0x0a
                    133: #define        PCI_CLASS_PROCESSOR                     0x0b
                    134: #define        PCI_CLASS_SERIALBUS                     0x0c
                    135: #define        PCI_CLASS_UNDEFINED                     0xff
                    136: 
                    137: /* 0x00 prehistoric subclasses */
                    138: #define        PCI_SUBCLASS_PREHISTORIC_MISC           0x00
                    139: #define        PCI_SUBCLASS_PREHISTORIC_VGA            0x01
                    140: 
                    141: /* 0x01 mass storage subclasses */
                    142: #define        PCI_SUBCLASS_MASS_STORAGE_SCSI          0x00
                    143: #define        PCI_SUBCLASS_MASS_STORAGE_IDE           0x01
                    144: #define        PCI_SUBCLASS_MASS_STORAGE_FLOPPY        0x02
                    145: #define        PCI_SUBCLASS_MASS_STORAGE_IPI           0x03
                    146: #define        PCI_SUBCLASS_MASS_STORAGE_RAID          0x04
                    147: #define        PCI_SUBCLASS_MASS_STORAGE_MISC          0x80
                    148: 
                    149: /* 0x02 network subclasses */
                    150: #define        PCI_SUBCLASS_NETWORK_ETHERNET           0x00
                    151: #define        PCI_SUBCLASS_NETWORK_TOKENRING          0x01
                    152: #define        PCI_SUBCLASS_NETWORK_FDDI               0x02
                    153: #define        PCI_SUBCLASS_NETWORK_ATM                0x03
                    154: #define        PCI_SUBCLASS_NETWORK_MISC               0x80
                    155: 
                    156: /* 0x03 display subclasses */
                    157: #define        PCI_SUBCLASS_DISPLAY_VGA                0x00
                    158: #define        PCI_SUBCLASS_DISPLAY_XGA                0x01
                    159: #define        PCI_SUBCLASS_DISPLAY_MISC               0x80
                    160: 
                    161: /* 0x04 multimedia subclasses */
                    162: #define        PCI_SUBCLASS_MULTIMEDIA_VIDEO           0x00
                    163: #define        PCI_SUBCLASS_MULTIMEDIA_AUDIO           0x01
                    164: #define        PCI_SUBCLASS_MULTIMEDIA_MISC            0x80
                    165: 
                    166: /* 0x05 memory subclasses */
                    167: #define        PCI_SUBCLASS_MEMORY_RAM                 0x00
                    168: #define        PCI_SUBCLASS_MEMORY_FLASH               0x01
                    169: #define        PCI_SUBCLASS_MEMORY_MISC                0x80
                    170: 
                    171: /* 0x06 bridge subclasses */
                    172: #define        PCI_SUBCLASS_BRIDGE_HOST                0x00
                    173: #define        PCI_SUBCLASS_BRIDGE_ISA                 0x01
                    174: #define        PCI_SUBCLASS_BRIDGE_EISA                0x02
                    175: #define        PCI_SUBCLASS_BRIDGE_MC                  0x03
                    176: #define        PCI_SUBCLASS_BRIDGE_PCI                 0x04
                    177: #define        PCI_SUBCLASS_BRIDGE_PCMCIA              0x05
                    178: #define        PCI_SUBCLASS_BRIDGE_NUBUS               0x06
                    179: #define        PCI_SUBCLASS_BRIDGE_CARDBUS             0x07
                    180: #define        PCI_SUBCLASS_BRIDGE_MISC                0x80
                    181: 
                    182: /* 0x07 communications subclasses */
                    183: #define        PCI_SUBCLASS_COMMUNICATIONS_SERIAL      0x00
                    184: #define        PCI_SUBCLASS_COMMUNICATIONS_PARALLEL    0x01
                    185: #define        PCI_SUBCLASS_COMMUNICATIONS_MISC        0x80
                    186: 
                    187: /* 0x08 system subclasses */
                    188: #define        PCI_SUBCLASS_SYSTEM_PIC                 0x00
                    189: #define        PCI_SUBCLASS_SYSTEM_DMA                 0x01
                    190: #define        PCI_SUBCLASS_SYSTEM_TIMER               0x02
                    191: #define        PCI_SUBCLASS_SYSTEM_RTC                 0x03
                    192: #define        PCI_SUBCLASS_SYSTEM_MISC                0x80
                    193: 
                    194: /* 0x09 input subclasses */
                    195: #define        PCI_SUBCLASS_INPUT_KEYBOARD             0x00
                    196: #define        PCI_SUBCLASS_INPUT_DIGITIZER            0x01
                    197: #define        PCI_SUBCLASS_INPUT_MOUSE                0x02
                    198: #define        PCI_SUBCLASS_INPUT_MISC                 0x80
                    199: 
                    200: /* 0x0a dock subclasses */
                    201: #define        PCI_SUBCLASS_DOCK_GENERIC               0x00
                    202: #define        PCI_SUBCLASS_DOCK_MISC                  0x80
                    203: 
                    204: /* 0x0b processor subclasses */
                    205: #define        PCI_SUBCLASS_PROCESSOR_386              0x00
                    206: #define        PCI_SUBCLASS_PROCESSOR_486              0x01
                    207: #define        PCI_SUBCLASS_PROCESSOR_PENTIUM          0x02
                    208: #define        PCI_SUBCLASS_PROCESSOR_ALPHA            0x10
                    209: #define        PCI_SUBCLASS_PROCESSOR_POWERPC          0x20
                    210: #define        PCI_SUBCLASS_PROCESSOR_COPROC           0x40
                    211: 
                    212: /* 0x0c serial bus subclasses */
                    213: #define        PCI_SUBCLASS_SERIALBUS_FIREWIRE         0x00
                    214: #define        PCI_SUBCLASS_SERIALBUS_ACCESS           0x01
                    215: #define        PCI_SUBCLASS_SERIALBUS_SSA              0x02
                    216: #define        PCI_SUBCLASS_SERIALBUS_USB              0x03
                    217: #define        PCI_SUBCLASS_SERIALBUS_FIBER            0x04
                    218: 
                    219: /*
                    220:  * PCI BIST/Header Type/Latency Timer/Cache Line Size Register.
                    221:  */
                    222: #define        PCI_BHLC_REG                    0x0c
                    223: 
                    224: #define        PCI_BIST_SHIFT                          24
                    225: #define        PCI_BIST_MASK                           0xff
                    226: #define        PCI_BIST(bhlcr) \
                    227:            (((bhlcr) >> PCI_BIST_SHIFT) & PCI_BIST_MASK)
                    228: 
                    229: #define        PCI_HDRTYPE_SHIFT                       16
                    230: #define        PCI_HDRTYPE_MASK                        0xff
                    231: #define        PCI_HDRTYPE(bhlcr) \
                    232:            (((bhlcr) >> PCI_HDRTYPE_SHIFT) & PCI_HDRTYPE_MASK)
                    233: 
                    234: #define        PCI_HDRTYPE_TYPE(bhlcr) \
                    235:            (PCI_HDRTYPE(bhlcr) & 0x7f)
                    236: #define        PCI_HDRTYPE_MULTIFN(bhlcr) \
                    237:            ((PCI_HDRTYPE(bhlcr) & 0x80) != 0)
                    238: 
                    239: #define        PCI_LATTIMER_SHIFT                      8
                    240: #define        PCI_LATTIMER_MASK                       0xff
                    241: #define        PCI_LATTIMER(bhlcr) \
                    242:            (((bhlcr) >> PCI_LATTIMER_SHIFT) & PCI_LATTIMER_MASK)
                    243: 
                    244: #define        PCI_CACHELINE_SHIFT                     0
                    245: #define        PCI_CACHELINE_MASK                      0xff
                    246: #define        PCI_CACHELINE(bhlcr) \
                    247:            (((bhlcr) >> PCI_CACHELINE_SHIFT) & PCI_CACHELINE_MASK)
                    248: 
                    249: /*
                    250:  * Mapping registers
                    251:  */
                    252: #define        PCI_MAPREG_START                0x10
                    253: #define        PCI_MAPREG_END                  0x28
                    254: 
                    255: #define        PCI_MAPREG_TYPE(mr)                                             \
                    256:            ((mr) & PCI_MAPREG_TYPE_MASK)
                    257: #define        PCI_MAPREG_TYPE_MASK                    0x00000001
                    258: 
                    259: #define        PCI_MAPREG_TYPE_MEM                     0x00000000
                    260: #define        PCI_MAPREG_TYPE_IO                      0x00000001
                    261: 
                    262: #define        PCI_MAPREG_MEM_TYPE(mr)                                         \
                    263:            ((mr) & PCI_MAPREG_MEM_TYPE_MASK)
                    264: #define        PCI_MAPREG_MEM_TYPE_MASK                0x00000006
                    265: 
                    266: #define        PCI_MAPREG_MEM_TYPE_32BIT               0x00000000
                    267: #define        PCI_MAPREG_MEM_TYPE_32BIT_1M            0x00000002
                    268: #define        PCI_MAPREG_MEM_TYPE_64BIT               0x00000004
                    269: 
                    270: #define        PCI_MAPREG_MEM_CACHEABLE(mr)                                    \
                    271:            (((mr) & PCI_MAPREG_MEM_CACHEABLE_MASK) != 0)
                    272: #define        PCI_MAPREG_MEM_CACHEABLE_MASK           0x00000008
                    273: 
                    274: #define        PCI_MAPREG_MEM_ADDR(mr)                                         \
                    275:            ((mr) & PCI_MAPREG_MEM_ADDR_MASK)
                    276: #define        PCI_MAPREG_MEM_SIZE(mr)                                         \
                    277:            (PCI_MAPREG_MEM_ADDR(mr) & -PCI_MAPREG_MEM_ADDR(mr))
                    278: #define        PCI_MAPREG_MEM_ADDR_MASK                0xfffffff0
                    279: 
                    280: #define        PCI_MAPREG_IO_ADDR(mr)                                          \
                    281:            ((mr) & PCI_MAPREG_IO_ADDR_MASK)
                    282: #define        PCI_MAPREG_IO_SIZE(mr)                                          \
                    283:            (PCI_MAPREG_IO_ADDR(mr) & -PCI_MAPREG_IO_ADDR(mr))
                    284: #define        PCI_MAPREG_IO_ADDR_MASK                 0xfffffffc
                    285: 
                    286: /*
                    287:  * Cardbus CIS pointer (PCI rev. 2.1)
                    288:  */
                    289: #define PCI_CARDBUS_CIS_REG 0x28
                    290: 
                    291: /*
                    292:  * Subsystem identification register; contains a vendor ID and a device ID.
                    293:  * Types/macros for PCI_ID_REG apply.
                    294:  * (PCI rev. 2.1)
                    295:  */
                    296: #define PCI_SUBSYS_ID_REG 0x2c
                    297: 
                    298: /*
                    299:  * capabilities link list (PCI rev. 2.2)
                    300:  */
                    301: #define PCI_CAPLISTPTR_REG             0x34
                    302: #define PCI_CAPLIST_PTR(cpr) ((cpr) & 0xff)
                    303: #define PCI_CAPLIST_NEXT(cr) (((cr) >> 8) & 0xff)
                    304: #define PCI_CAPLIST_CAP(cr) ((cr) & 0xff)
                    305: #define PCI_CAP_PWRMGMT        1
                    306: #define PCI_CAP_AGP    2
                    307: #define PCI_CAP_VPD    3
                    308: #define PCI_CAP_SLOTID 4
                    309: #define PCI_CAP_MBI    5
                    310: #define PCI_CAP_HOTSWAP        6
                    311: 
                    312: /*
                    313:  * Interrupt Configuration Register; contains interrupt pin and line.
                    314:  */
                    315: #define        PCI_INTERRUPT_REG               0x3c
                    316: 
                    317: typedef u_int8_t pci_intr_pin_t;
                    318: typedef u_int8_t pci_intr_line_t;
                    319: 
                    320: #define        PCI_INTERRUPT_PIN_SHIFT                 8
                    321: #define        PCI_INTERRUPT_PIN_MASK                  0xff
                    322: #define        PCI_INTERRUPT_PIN(icr) \
                    323:            (((icr) >> PCI_INTERRUPT_PIN_SHIFT) & PCI_INTERRUPT_PIN_MASK)
                    324: 
                    325: #define        PCI_INTERRUPT_LINE_SHIFT                0
                    326: #define        PCI_INTERRUPT_LINE_MASK                 0xff
                    327: #define        PCI_INTERRUPT_LINE(icr) \
                    328:            (((icr) >> PCI_INTERRUPT_LINE_SHIFT) & PCI_INTERRUPT_LINE_MASK)
                    329: 
                    330: #define        PCI_INTERRUPT_PIN_NONE                  0x00
                    331: #define        PCI_INTERRUPT_PIN_A                     0x01
                    332: #define        PCI_INTERRUPT_PIN_B                     0x02
                    333: #define        PCI_INTERRUPT_PIN_C                     0x03
                    334: #define        PCI_INTERRUPT_PIN_D                     0x04
                    335: 
                    336: #endif /* _DEV_PCI_PCIREG_H_ */

unix.superglobalmegacorp.com

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