]> mj.ucw.cz Git - pciutils.git/blobdiff - lib/header.h
Whitespace cleanup of all source files.
[pciutils.git] / lib / header.h
index f1e62c56e50f0282c94d37486971778929de54e7..f3a076ab5406d34c879bf41cddf29348d454374f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     The PCI Library -- PCI Header Structure (based on <linux/pci.h>)
  *
- *     Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *     Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
  *
  *     Can be freely distributed and used under the terms of the GNU GPL.
  */
@@ -31,7 +31,7 @@
 #define  PCI_STATUS_FAST_BACK  0x80    /* Accept fast-back to back */
 #define  PCI_STATUS_PARITY     0x100   /* Detected parity error */
 #define  PCI_STATUS_DEVSEL_MASK        0x600   /* DEVSEL timing */
-#define  PCI_STATUS_DEVSEL_FAST        0x000   
+#define  PCI_STATUS_DEVSEL_FAST        0x000
 #define  PCI_STATUS_DEVSEL_MEDIUM 0x200
 #define  PCI_STATUS_DEVSEL_SLOW 0x400
 #define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */
@@ -60,8 +60,8 @@
 
 /*
  * Base addresses specify locations in memory or I/O space.
- * Decoded size can be determined by writing a value of 
- * 0xffffffff to the register, and reading it back.  Only 
+ * Decoded size can be determined by writing a value of
+ * 0xffffffff to the register, and reading it back.  Only
  * 1 bits are decoded.
  */
 #define PCI_BASE_ADDRESS_0     0x10    /* 32 bits */
@@ -85,7 +85,7 @@
 /* Header type 0 (normal devices) */
 #define PCI_CARDBUS_CIS                0x28
 #define PCI_SUBSYSTEM_VENDOR_ID        0x2c
-#define PCI_SUBSYSTEM_ID       0x2e  
+#define PCI_SUBSYSTEM_ID       0x2e
 #define PCI_ROM_ADDRESS                0x30    /* Bits 31..11 are address, 10..1 reserved */
 #define  PCI_ROM_ADDRESS_ENABLE        0x01
 #define PCI_ROM_ADDRESS_MASK   (~(pciaddr_t)0x7ff)
 #define  PCI_CAP_ID_VNDR       0x09    /* Vendor specific */
 #define  PCI_CAP_ID_DBG                0x0A    /* Debug port */
 #define  PCI_CAP_ID_CCRC       0x0B    /* CompactPCI Central Resource Control */
+#define  PCI_CAP_ID_SSVID      0x0D    /* Bridge subsystem vendor/device ID */
 #define  PCI_CAP_ID_AGP3       0x0E    /* AGP 8x */
 #define  PCI_CAP_ID_EXP                0x10    /* PCI Express */
 #define  PCI_CAP_ID_MSIX       0x11    /* MSI-X */
 /* Message Signalled Interrupts registers */
 
 #define PCI_MSI_FLAGS          2       /* Various flags */
-#define  PCI_MSI_FLAGS_64BIT   0x80    /* 64-bit addresses allowed */
-#define  PCI_MSI_FLAGS_QSIZE   0x70    /* Message queue size configured */
-#define  PCI_MSI_FLAGS_QMASK   0x0e    /* Maximum queue size available */
-#define  PCI_MSI_FLAGS_ENABLE  0x01    /* MSI feature enabled */
+#define  PCI_MSI_FLAGS_MASK_BIT        0x100   /* interrupt masking & reporting supported */
+#define  PCI_MSI_FLAGS_64BIT   0x080   /* 64-bit addresses allowed */
+#define  PCI_MSI_FLAGS_QSIZE   0x070   /* Message queue size configured */
+#define  PCI_MSI_FLAGS_QMASK   0x00e   /* Maximum queue size available */
+#define  PCI_MSI_FLAGS_ENABLE  0x001   /* MSI feature enabled */
 #define PCI_MSI_RFU            3       /* Rest of capability flags */
 #define PCI_MSI_ADDRESS_LO     4       /* Lower 32 bits */
 #define PCI_MSI_ADDRESS_HI     8       /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
 #define PCI_MSI_DATA_32                8       /* 16 bits of data for 32-bit devices */
 #define PCI_MSI_DATA_64                12      /* 16 bits of data for 64-bit devices */
+#define PCI_MSI_MASK_BIT_32    12      /* per-vector masking for 32-bit devices */
+#define PCI_MSI_MASK_BIT_64    16      /* per-vector masking for 64-bit devices */
+#define PCI_MSI_PENDING_32     16      /* per-vector interrupt pending for 32-bit devices */
+#define PCI_MSI_PENDING_64     20      /* per-vector interrupt pending for 64-bit devices */
 
 /* PCI-X */
 #define PCI_PCIX_COMMAND                                                2 /* Command register offset */
 #define PCI_PCIX_COMMAND_DPERE                                     0x0001 /* Data Parity Error Recover Enable */
 #define PCI_PCIX_COMMAND_ERO                                       0x0002 /* Enable Relaxed Ordering */
 #define PCI_PCIX_COMMAND_MAX_MEM_READ_BYTE_COUNT                   0x000c /* Maximum Memory Read Byte Count */
-#define PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS               0x0070  
+#define PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS               0x0070
 #define PCI_PCIX_COMMAND_RESERVED                                   0xf80
 #define PCI_PCIX_STATUS                                                 4 /* Status register offset */
 #define PCI_PCIX_STATUS_FUNCTION                               0x00000007
 #define PCI_PCIX_STATUS_DESIGNED_MAX_OUTSTANDING_SPLIT_TRANS   0x03800000
 #define PCI_PCIX_STATUS_DESIGNED_MAX_CUMULATIVE_READ_SIZE      0x1c000000
 #define PCI_PCIX_STATUS_RCVD_SC_ERR_MESS                       0x20000000 /* Received Split Completion Error Message */
-#define PCI_PCIX_STATUS_RESERVED                               0xc0000000
+#define PCI_PCIX_STATUS_266MHZ                                0x40000000 /* 266 MHz capable */
+#define PCI_PCIX_STATUS_533MHZ                                0x80000000 /* 533 MHz capable */
 #define PCI_PCIX_SIZEOF                4
 
 /* PCI-X Bridges */
 #define PCI_MSIX_PBA           8
 #define  PCI_MSIX_BIR          0x7
 
+/* Subsystem vendor/device ID for PCI bridges */
+#define PCI_SSVID_VENDOR       4
+#define PCI_SSVID_DEVICE       6
+
+/* Advanced Error Reporting */
+#define PCI_ERR_UNCOR_STATUS   4       /* Uncorrectable Error Status */
+#define  PCI_ERR_UNC_TRAIN     0x00000001      /* Training */
+#define  PCI_ERR_UNC_DLP       0x00000010      /* Data Link Protocol */
+#define  PCI_ERR_UNC_POISON_TLP        0x00001000      /* Poisoned TLP */
+#define  PCI_ERR_UNC_FCP       0x00002000      /* Flow Control Protocol */
+#define  PCI_ERR_UNC_COMP_TIME 0x00004000      /* Completion Timeout */
+#define  PCI_ERR_UNC_COMP_ABORT        0x00008000      /* Completer Abort */
+#define  PCI_ERR_UNC_UNX_COMP  0x00010000      /* Unexpected Completion */
+#define  PCI_ERR_UNC_RX_OVER   0x00020000      /* Receiver Overflow */
+#define  PCI_ERR_UNC_MALF_TLP  0x00040000      /* Malformed TLP */
+#define  PCI_ERR_UNC_ECRC      0x00080000      /* ECRC Error Status */
+#define  PCI_ERR_UNC_UNSUP     0x00100000      /* Unsupported Request */
+#define PCI_ERR_UNCOR_MASK     8       /* Uncorrectable Error Mask */
+       /* Same bits as above */
+#define PCI_ERR_UNCOR_SEVER    12      /* Uncorrectable Error Severity */
+       /* Same bits as above */
+#define PCI_ERR_COR_STATUS     16      /* Correctable Error Status */
+#define  PCI_ERR_COR_RCVR      0x00000001      /* Receiver Error Status */
+#define  PCI_ERR_COR_BAD_TLP   0x00000040      /* Bad TLP Status */
+#define  PCI_ERR_COR_BAD_DLLP  0x00000080      /* Bad DLLP Status */
+#define  PCI_ERR_COR_REP_ROLL  0x00000100      /* REPLAY_NUM Rollover */
+#define  PCI_ERR_COR_REP_TIMER 0x00001000      /* Replay Timer Timeout */
+#define PCI_ERR_COR_MASK       20      /* Correctable Error Mask */
+       /* Same bits as above */
+#define PCI_ERR_CAP            24      /* Advanced Error Capabilities */
+#define  PCI_ERR_CAP_FEP(x)    ((x) & 31)      /* First Error Pointer */
+#define  PCI_ERR_CAP_ECRC_GENC 0x00000020      /* ECRC Generation Capable */
+#define  PCI_ERR_CAP_ECRC_GENE 0x00000040      /* ECRC Generation Enable */
+#define  PCI_ERR_CAP_ECRC_CHKC 0x00000080      /* ECRC Check Capable */
+#define  PCI_ERR_CAP_ECRC_CHKE 0x00000100      /* ECRC Check Enable */
+#define PCI_ERR_HEADER_LOG     28      /* Header Log Register (16 bytes) */
+#define PCI_ERR_ROOT_COMMAND   44      /* Root Error Command */
+#define PCI_ERR_ROOT_STATUS    48
+#define PCI_ERR_ROOT_COR_SRC   52
+#define PCI_ERR_ROOT_SRC       54
+
+/* Virtual Channel */
+#define PCI_VC_PORT_REG1       4
+#define PCI_VC_PORT_REG2       8
+#define PCI_VC_PORT_CTRL       12
+#define PCI_VC_PORT_STATUS     14
+#define PCI_VC_RES_CAP         16
+#define PCI_VC_RES_CTRL                20
+#define PCI_VC_RES_STATUS      26
+
+/* Power Budgeting */
+#define PCI_PWR_DSR            4       /* Data Select Register */
+#define PCI_PWR_DATA           8       /* Data Register */
+#define  PCI_PWR_DATA_BASE(x)  ((x) & 0xff)        /* Base Power */
+#define  PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)    /* Data Scale */
+#define  PCI_PWR_DATA_PM_SUB(x)        (((x) >> 10) & 7)   /* PM Sub State */
+#define  PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */
+#define  PCI_PWR_DATA_TYPE(x)  (((x) >> 15) & 7)   /* Type */
+#define  PCI_PWR_DATA_RAIL(x)  (((x) >> 18) & 7)   /* Power Rail */
+#define PCI_PWR_CAP            12      /* Capability */
+#define  PCI_PWR_CAP_BUDGET(x) ((x) & 1)       /* Included in system budget */
+
 /*
  * The PCI interface treats multi-function devices as independent
  * devices.  The slot/function address of each device is encoded
 #define PCI_CLASS_STORAGE_FLOPPY       0x0102
 #define PCI_CLASS_STORAGE_IPI          0x0103
 #define PCI_CLASS_STORAGE_RAID         0x0104
+#define PCI_CLASS_STORAGE_ATA          0x0105
+#define PCI_CLASS_STORAGE_SATA         0x0106
+#define PCI_CLASS_STORAGE_SAS          0x0107
 #define PCI_CLASS_STORAGE_OTHER                0x0180
 
 #define PCI_BASE_CLASS_NETWORK         0x02
 #define PCI_CLASS_NETWORK_TOKEN_RING   0x0201
 #define PCI_CLASS_NETWORK_FDDI         0x0202
 #define PCI_CLASS_NETWORK_ATM          0x0203
+#define PCI_CLASS_NETWORK_ISDN         0x0204
 #define PCI_CLASS_NETWORK_OTHER                0x0280
 
 #define PCI_BASE_CLASS_DISPLAY         0x03
 #define PCI_CLASS_DISPLAY_VGA          0x0300
 #define PCI_CLASS_DISPLAY_XGA          0x0301
+#define PCI_CLASS_DISPLAY_3D           0x0302
 #define PCI_CLASS_DISPLAY_OTHER                0x0380
 
 #define PCI_BASE_CLASS_MULTIMEDIA      0x04
 #define PCI_CLASS_MULTIMEDIA_VIDEO     0x0400
 #define PCI_CLASS_MULTIMEDIA_AUDIO     0x0401
+#define PCI_CLASS_MULTIMEDIA_PHONE     0x0402
+#define PCI_CLASS_MULTIMEDIA_AUDIO_DEV 0x0403
 #define PCI_CLASS_MULTIMEDIA_OTHER     0x0480
 
 #define PCI_BASE_CLASS_MEMORY          0x05
 #define  PCI_CLASS_BRIDGE_PCMCIA       0x0605
 #define  PCI_CLASS_BRIDGE_NUBUS                0x0606
 #define  PCI_CLASS_BRIDGE_CARDBUS      0x0607
+#define  PCI_CLASS_BRIDGE_RACEWAY      0x0608
+#define  PCI_CLASS_BRIDGE_PCI_SEMI     0x0609
+#define  PCI_CLASS_BRIDGE_IB_TO_PCI    0x060a
 #define  PCI_CLASS_BRIDGE_OTHER                0x0680
 
 #define PCI_BASE_CLASS_COMMUNICATION   0x07
 #define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
 #define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
+#define PCI_CLASS_COMMUNICATION_MSERIAL        0x0702
+#define PCI_CLASS_COMMUNICATION_MODEM  0x0703
 #define PCI_CLASS_COMMUNICATION_OTHER  0x0780
 
 #define PCI_BASE_CLASS_SYSTEM          0x08
 #define PCI_CLASS_SYSTEM_DMA           0x0801
 #define PCI_CLASS_SYSTEM_TIMER         0x0802
 #define PCI_CLASS_SYSTEM_RTC           0x0803
+#define PCI_CLASS_SYSTEM_PCI_HOTPLUG   0x0804
 #define PCI_CLASS_SYSTEM_OTHER         0x0880
 
 #define PCI_BASE_CLASS_INPUT           0x09
 #define PCI_CLASS_INPUT_KEYBOARD       0x0900
 #define PCI_CLASS_INPUT_PEN            0x0901
 #define PCI_CLASS_INPUT_MOUSE          0x0902
+#define PCI_CLASS_INPUT_SCANNER                0x0903
+#define PCI_CLASS_INPUT_GAMEPORT       0x0904
 #define PCI_CLASS_INPUT_OTHER          0x0980
 
 #define PCI_BASE_CLASS_DOCKING         0x0a
 #define PCI_CLASS_DOCKING_GENERIC      0x0a00
-#define PCI_CLASS_DOCKING_OTHER                0x0a01
+#define PCI_CLASS_DOCKING_OTHER                0x0a80
 
 #define PCI_BASE_CLASS_PROCESSOR       0x0b
 #define PCI_CLASS_PROCESSOR_386                0x0b00
 #define PCI_CLASS_PROCESSOR_PENTIUM    0x0b02
 #define PCI_CLASS_PROCESSOR_ALPHA      0x0b10
 #define PCI_CLASS_PROCESSOR_POWERPC    0x0b20
+#define PCI_CLASS_PROCESSOR_MIPS       0x0b30
 #define PCI_CLASS_PROCESSOR_CO         0x0b40
 
 #define PCI_BASE_CLASS_SERIAL          0x0c
 #define PCI_CLASS_SERIAL_SSA           0x0c02
 #define PCI_CLASS_SERIAL_USB           0x0c03
 #define PCI_CLASS_SERIAL_FIBER         0x0c04
+#define PCI_CLASS_SERIAL_SMBUS         0x0c05
+#define PCI_CLASS_SERIAL_INFINIBAND    0x0c06
+
+#define PCI_BASE_CLASS_WIRELESS                0x0d
+#define PCI_CLASS_WIRELESS_IRDA                0x0d00
+#define PCI_CLASS_WIRELESS_CONSUMER_IR 0x0d01
+#define PCI_CLASS_WIRELESS_RF          0x0d10
+#define PCI_CLASS_WIRELESS_OTHER       0x0d80
+
+#define PCI_BASE_CLASS_INTELLIGENT     0x0e
+#define PCI_CLASS_INTELLIGENT_I2O      0x0e00
+
+#define PCI_BASE_CLASS_SATELLITE       0x0f
+#define PCI_CLASS_SATELLITE_TV         0x0f00
+#define PCI_CLASS_SATELLITE_AUDIO      0x0f01
+#define PCI_CLASS_SATELLITE_VOICE      0x0f03
+#define PCI_CLASS_SATELLITE_DATA       0x0f04
+
+#define PCI_BASE_CLASS_CRYPT           0x10
+#define PCI_CLASS_CRYPT_NETWORK                0x1000
+#define PCI_CLASS_CRYPT_ENTERTAINMENT  0x1010
+#define PCI_CLASS_CRYPT_OTHER          0x1080
+
+#define PCI_BASE_CLASS_SIGNAL          0x11
+#define PCI_CLASS_SIGNAL_DPIO          0x1100
+#define PCI_CLASS_SIGNAL_PERF_CTR      0x1101
+#define PCI_CLASS_SIGNAL_SYNCHRONIZER  0x1110
+#define PCI_CLASS_SIGNAL_OTHER         0x1180
 
 #define PCI_CLASS_OTHERS               0xff