root / hw / pcie_regs.h @ 1a1ea6f0
History | View | Annotate | Download (7.2 kB)
1 | 08f3dcf1 | Isaku Yamahata | /*
|
---|---|---|---|
2 | 08f3dcf1 | Isaku Yamahata | * constants for pcie configurations space from pci express spec.
|
3 | 08f3dcf1 | Isaku Yamahata | *
|
4 | 08f3dcf1 | Isaku Yamahata | * TODO:
|
5 | 08f3dcf1 | Isaku Yamahata | * Those constants and macros should go to Linux pci_regs.h
|
6 | 08f3dcf1 | Isaku Yamahata | * Once they're merged, they will go away.
|
7 | 08f3dcf1 | Isaku Yamahata | */
|
8 | 08f3dcf1 | Isaku Yamahata | #ifndef QEMU_PCIE_REGS_H
|
9 | 08f3dcf1 | Isaku Yamahata | #define QEMU_PCIE_REGS_H
|
10 | 08f3dcf1 | Isaku Yamahata | |
11 | 08f3dcf1 | Isaku Yamahata | |
12 | 08f3dcf1 | Isaku Yamahata | /* express capability */
|
13 | 08f3dcf1 | Isaku Yamahata | |
14 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_VER2_SIZEOF 0x3c /* express capability of ver. 2 */ |
15 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXT_CAP_VER_SHIFT 16 |
16 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXT_CAP_NEXT_SHIFT 20 |
17 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXT_CAP_NEXT_MASK (0xffc << PCI_EXT_CAP_NEXT_SHIFT) |
18 | 08f3dcf1 | Isaku Yamahata | |
19 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXT_CAP(id, ver, next) \
|
20 | 08f3dcf1 | Isaku Yamahata | ((id) | \ |
21 | 08f3dcf1 | Isaku Yamahata | ((ver) << PCI_EXT_CAP_VER_SHIFT) | \ |
22 | 08f3dcf1 | Isaku Yamahata | ((next) << PCI_EXT_CAP_NEXT_SHIFT)) |
23 | 08f3dcf1 | Isaku Yamahata | |
24 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXT_CAP_ALIGN 4 |
25 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXT_CAP_ALIGNUP(x) \
|
26 | 08f3dcf1 | Isaku Yamahata | (((x) + PCI_EXT_CAP_ALIGN - 1) & ~(PCI_EXT_CAP_ALIGN - 1)) |
27 | 08f3dcf1 | Isaku Yamahata | |
28 | 08f3dcf1 | Isaku Yamahata | /* PCI_EXP_FLAGS */
|
29 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_FLAGS_VER2 2 /* for now, supports only ver. 2 */ |
30 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_FLAGS_IRQ_SHIFT (ffs(PCI_EXP_FLAGS_IRQ) - 1) |
31 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_FLAGS_TYPE_SHIFT (ffs(PCI_EXP_FLAGS_TYPE) - 1) |
32 | 08f3dcf1 | Isaku Yamahata | |
33 | 08f3dcf1 | Isaku Yamahata | |
34 | 08f3dcf1 | Isaku Yamahata | /* PCI_EXP_LINK{CAP, STA} */
|
35 | 08f3dcf1 | Isaku Yamahata | /* link speed */
|
36 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_LNK_LS_25 1 |
37 | 08f3dcf1 | Isaku Yamahata | |
38 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_LNK_MLW_SHIFT (ffs(PCI_EXP_LNKCAP_MLW) - 1) |
39 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_LNK_MLW_1 (1 << PCI_EXP_LNK_MLW_SHIFT) |
40 | 08f3dcf1 | Isaku Yamahata | |
41 | 08f3dcf1 | Isaku Yamahata | /* PCI_EXP_LINKCAP */
|
42 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_LNKCAP_ASPMS_SHIFT (ffs(PCI_EXP_LNKCAP_ASPMS) - 1) |
43 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_LNKCAP_ASPMS_0S (1 << PCI_EXP_LNKCAP_ASPMS_SHIFT) |
44 | 08f3dcf1 | Isaku Yamahata | |
45 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_LNKCAP_PN_SHIFT (ffs(PCI_EXP_LNKCAP_PN) - 1) |
46 | 08f3dcf1 | Isaku Yamahata | |
47 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCAP_PSN_SHIFT (ffs(PCI_EXP_SLTCAP_PSN) - 1) |
48 | 08f3dcf1 | Isaku Yamahata | |
49 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_IND_RESERVED 0x0 |
50 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_IND_ON 0x1 |
51 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_IND_BLINK 0x2 |
52 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_IND_OFF 0x3 |
53 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_AIC_SHIFT (ffs(PCI_EXP_SLTCTL_AIC) - 1) |
54 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_AIC_OFF \
|
55 | 08f3dcf1 | Isaku Yamahata | (PCI_EXP_SLTCTL_IND_OFF << PCI_EXP_SLTCTL_AIC_SHIFT) |
56 | 08f3dcf1 | Isaku Yamahata | |
57 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_PIC_SHIFT (ffs(PCI_EXP_SLTCTL_PIC) - 1) |
58 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_PIC_OFF \
|
59 | 08f3dcf1 | Isaku Yamahata | (PCI_EXP_SLTCTL_IND_OFF << PCI_EXP_SLTCTL_PIC_SHIFT) |
60 | 08f3dcf1 | Isaku Yamahata | |
61 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_SLTCTL_SUPPORTED \
|
62 | 08f3dcf1 | Isaku Yamahata | (PCI_EXP_SLTCTL_ABPE | \ |
63 | 08f3dcf1 | Isaku Yamahata | PCI_EXP_SLTCTL_PDCE | \ |
64 | 08f3dcf1 | Isaku Yamahata | PCI_EXP_SLTCTL_CCIE | \ |
65 | 08f3dcf1 | Isaku Yamahata | PCI_EXP_SLTCTL_HPIE | \ |
66 | 08f3dcf1 | Isaku Yamahata | PCI_EXP_SLTCTL_AIC | \ |
67 | 08f3dcf1 | Isaku Yamahata | PCI_EXP_SLTCTL_PCC | \ |
68 | 08f3dcf1 | Isaku Yamahata | PCI_EXP_SLTCTL_EIC) |
69 | 08f3dcf1 | Isaku Yamahata | |
70 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_DEVCAP2_EFF 0x100000 |
71 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_DEVCAP2_EETLPP 0x200000 |
72 | 08f3dcf1 | Isaku Yamahata | |
73 | 08f3dcf1 | Isaku Yamahata | #define PCI_EXP_DEVCTL2_EETLPPB 0x80 |
74 | 08f3dcf1 | Isaku Yamahata | |
75 | 08f3dcf1 | Isaku Yamahata | /* ARI */
|
76 | 08f3dcf1 | Isaku Yamahata | #define PCI_ARI_VER 1 |
77 | 08f3dcf1 | Isaku Yamahata | #define PCI_ARI_SIZEOF 8 |
78 | 08f3dcf1 | Isaku Yamahata | |
79 | 08f3dcf1 | Isaku Yamahata | /* AER */
|
80 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_VER 2 |
81 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_SIZEOF 0x48 |
82 | 08f3dcf1 | Isaku Yamahata | |
83 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_SDN 0x00000020 /* surprise down */ |
84 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_ACSV 0x00200000 /* ACS Violation */ |
85 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_INTN 0x00400000 /* Internal Error */ |
86 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_MCBTLP 0x00800000 /* MC Blcoked TLP */ |
87 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_ATOP_EBLOCKED 0x01000000 /* atomic op egress blocked */ |
88 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_TLP_PRF_BLOCKED 0x02000000 /* TLP Prefix Blocked */ |
89 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_COR_ADV_NONFATAL 0x00002000 /* Advisory Non-Fatal */ |
90 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_COR_INTERNAL 0x00004000 /* Corrected Internal */ |
91 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_COR_HL_OVERFLOW 0x00008000 /* Header Long Overflow */ |
92 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_CAP_FEP_MASK 0x0000001f |
93 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_CAP_MHRC 0x00000200 |
94 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_CAP_MHRE 0x00000400 |
95 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_CAP_TLP 0x00000800 |
96 | 08f3dcf1 | Isaku Yamahata | |
97 | 1a1ea6f0 | Isaku Yamahata | #define PCI_ERR_HEADER_LOG_SIZE 16 |
98 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_TLP_PREFIX_LOG 0x38 |
99 | 1a1ea6f0 | Isaku Yamahata | #define PCI_ERR_TLP_PREFIX_LOG_SIZE 16 |
100 | 08f3dcf1 | Isaku Yamahata | |
101 | 08f3dcf1 | Isaku Yamahata | #define PCI_SEC_STATUS_RCV_SYSTEM_ERROR 0x4000 |
102 | 08f3dcf1 | Isaku Yamahata | |
103 | 08f3dcf1 | Isaku Yamahata | /* aer root error command/status */
|
104 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_ROOT_CMD_EN_MASK (PCI_ERR_ROOT_CMD_COR_EN | \
|
105 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_CMD_NONFATAL_EN | \ |
106 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_CMD_FATAL_EN) |
107 | 08f3dcf1 | Isaku Yamahata | |
108 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_ROOT_IRQ_MAX 32 |
109 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_ROOT_IRQ 0xf8000000 |
110 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_ROOT_IRQ_SHIFT (ffs(PCI_ERR_ROOT_IRQ) - 1) |
111 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_ROOT_STATUS_REPORT_MASK (PCI_ERR_ROOT_COR_RCV | \
|
112 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_MULTI_COR_RCV | \ |
113 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_UNCOR_RCV | \ |
114 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_MULTI_UNCOR_RCV | \ |
115 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_FIRST_FATAL | \ |
116 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_NONFATAL_RCV | \ |
117 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_ROOT_FATAL_RCV) |
118 | 08f3dcf1 | Isaku Yamahata | |
119 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_SUPPORTED (PCI_ERR_UNC_DLP | \
|
120 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_SDN | \ |
121 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_POISON_TLP | \ |
122 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_FCP | \ |
123 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_COMP_TIME | \ |
124 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_COMP_ABORT | \ |
125 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_UNX_COMP | \ |
126 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_RX_OVER | \ |
127 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_MALF_TLP | \ |
128 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_ECRC | \ |
129 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_UNSUP | \ |
130 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_ACSV | \ |
131 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_INTN | \ |
132 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_MCBTLP | \ |
133 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_ATOP_EBLOCKED | \ |
134 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_TLP_PRF_BLOCKED) |
135 | 08f3dcf1 | Isaku Yamahata | |
136 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_UNC_SEVERITY_DEFAULT (PCI_ERR_UNC_DLP | \
|
137 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_SDN | \ |
138 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_FCP | \ |
139 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_RX_OVER | \ |
140 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_MALF_TLP | \ |
141 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_UNC_INTN) |
142 | 08f3dcf1 | Isaku Yamahata | |
143 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_COR_SUPPORTED (PCI_ERR_COR_RCVR | \
|
144 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_BAD_TLP | \ |
145 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_BAD_DLLP | \ |
146 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_REP_ROLL | \ |
147 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_REP_TIMER | \ |
148 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_ADV_NONFATAL | \ |
149 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_INTERNAL | \ |
150 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_HL_OVERFLOW) |
151 | 08f3dcf1 | Isaku Yamahata | |
152 | 08f3dcf1 | Isaku Yamahata | #define PCI_ERR_COR_MASK_DEFAULT (PCI_ERR_COR_ADV_NONFATAL | \
|
153 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_INTERNAL | \ |
154 | 08f3dcf1 | Isaku Yamahata | PCI_ERR_COR_HL_OVERFLOW) |
155 | 08f3dcf1 | Isaku Yamahata | |
156 | 08f3dcf1 | Isaku Yamahata | #endif /* QEMU_PCIE_REGS_H */ |