Annotation of cf/pcireg.h, revision 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.