1 /*******************************************************************************
2  * Copyright 2019-2020 Microchip FPGA Embedded Systems Solutions.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * PolarFire and PolarFire SoC PCIe subsystem Core Registers data structures.
7  *
8  */
9 #ifndef PF_PCIESS_REGS_H_
10 #define PF_PCIESS_REGS_H_
11 
12 #include <stdint.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 /*------------------------------------------------------------------------------
19   PCS LANE Registers.
20  */
21 typedef struct
22 {
23     volatile    uint32_t    SOFT_RESET;
24     volatile    uint32_t    LFWF_R0;
25     volatile    uint32_t    LOVR_R0;
26     volatile    uint32_t    LPIP_R0;
27     volatile    uint32_t    L64_R0;
28     volatile    uint32_t    L64_R1;
29     volatile    uint32_t    L64_R2;
30     volatile    uint32_t    L64_R3;
31     volatile    uint32_t    L64_R4;
32     volatile    uint32_t    L64_R5;
33     volatile    uint32_t    L64_R6;
34     volatile    uint32_t    L64_R7;
35     volatile    uint32_t    L64_R8;
36     volatile    uint32_t    L64_R9;
37     volatile    uint32_t    L64_R10;
38     volatile    uint32_t    RESERVED0;
39     volatile    uint32_t    L8_R0;
40     volatile    uint32_t    RESERVED1[3];
41     volatile    uint32_t    LNTV_R0;
42     volatile    uint32_t    RESERVED2;
43     volatile    uint32_t    LCLK_R0;
44     volatile    uint32_t    LCLK_R1;
45     volatile    uint32_t    RESERVED3[2];
46     volatile    uint32_t    LRST_R0;
47     volatile    uint32_t    LRST_OPT;
48     volatile    uint32_t    RESERVED4[2];
49     volatile    uint32_t    OOB_R0;
50     volatile    uint32_t    OOB_R1;
51     volatile    uint32_t    OOB_R2;
52     volatile    uint32_t    OOB_R3;
53     volatile    uint32_t    PMA_CTRL_R0;
54     volatile    uint32_t    PMA_CTRL_R1;
55     volatile    uint32_t    PMA_CTRL_R2;
56     volatile    uint32_t    MSTR_CTRL;
57 
58  } PCS_LANE_TypeDef;
59 
60 /*------------------------------------------------------------------------------
61   PCS Common Registers.
62  */
63  typedef struct
64 {
65     volatile    uint32_t    SOFT_RESET;
66     volatile    uint32_t    GSSCLK_CTRL;
67     volatile    uint32_t    QRST_R0;
68     volatile    uint32_t    QDBG_R0;
69 
70 } PCS_CMN_TypeDef;
71 
72 /*------------------------------------------------------------------------------
73   PMA Lane Registers.
74  */
75  typedef struct
76 {
77     volatile    uint32_t    SOFT_RESET;
78     volatile    uint32_t    DES_CDR_CTRL_1;
79     volatile    uint32_t    DES_CDR_CTRL_2;
80     volatile    uint32_t    DES_CDR_CTRL_3;
81     volatile    uint32_t    DES_DFEEM_CTRL_1;
82     volatile    uint32_t    DES_DFEEM_CTRL_2;
83     volatile    uint32_t    DES_DFEEM_CTRL_3;
84     volatile    uint32_t    RESERVED0;
85     volatile    uint32_t    DES_DFE_CTRL_1;
86     volatile    uint32_t    DES_DFE_CTRL_2;
87     volatile    uint32_t    DES_EM_CTRL_1;
88     volatile    uint32_t    DES_EM_CTRL_2;
89     volatile    uint32_t    DES_IN_TERM;
90     volatile    uint32_t    DES_PKDET;
91     volatile    uint32_t    DES_RTL_EM;
92     volatile    uint32_t    DES_RTL_LOCK_CTR;
93     volatile    uint32_t    DES_RXPLL_DIV;
94     volatile    uint32_t    DES_TEST_BUS;
95     volatile    uint32_t    DES_CLK_CTRL;
96     volatile    uint32_t    DES_RSTPD;
97     volatile    uint32_t    DES_RTL_ERR_CHK;
98     volatile    uint32_t    DES_PCIE1_2_RXPLL_DIV;
99     volatile    uint32_t    DES_SATA1_2_RXPLL_DIV;
100     volatile    uint32_t    DES_SATA3_RXPLL_DIV;
101     volatile    uint32_t    RESERVED1[4];
102     volatile    uint32_t    SER_CTRL;
103     volatile    uint32_t    SER_CLK_CTRL;
104     volatile    uint32_t    SER_RSTPD;
105     volatile    uint32_t    SER_DRV_BYP;
106     volatile    uint32_t    SER_RXDET_CTRL;
107     volatile    uint32_t    SER_RXDET_OUT;
108     volatile    uint32_t    SER_STATIC_LSB;
109     volatile    uint32_t    SER_STATIC_MSB;
110     volatile    uint32_t    SER_TERM_CTRL;
111     volatile    uint32_t    SER_TEST_BUS;
112     volatile    uint32_t    SER_DRV_DATA_CTRL;
113     volatile    uint32_t    SER_DRV_CTRL;
114     volatile    uint32_t    SER_DRV_CTRL_SEL;
115     volatile    uint32_t    SER_DRV_CTRL_M0;
116     volatile    uint32_t    SER_DRV_CTRL_M1;
117     volatile    uint32_t    SER_DRV_CTRL_M2;
118     volatile    uint32_t    SER_DRV_CTRL_M3;
119     volatile    uint32_t    SER_DRV_CTRL_M4;
120     volatile    uint32_t    SER_DRV_CTRL_M5;
121     volatile    uint32_t    RESERVED2;
122     volatile    uint32_t    SERDES_RTL_CTRL;
123     volatile    uint32_t    RESERVED3[3];
124     volatile    uint32_t    DES_DFE_CAL_CTRL_0;
125     volatile    uint32_t    DES_DFE_CAL_CTRL_1;
126     volatile    uint32_t    DES_DFE_CAL_CTRL_2;
127     volatile    uint32_t    DES_DFE_CAL_CMD;
128     volatile    uint32_t    DES_DFE_CAL_BYPASS;
129     volatile    uint32_t    DES_DFE_CAL_EYE_DATA;
130     volatile    uint32_t    DES_DFE_CDRH0_MON;
131     volatile    uint32_t    DES_DFE_COEFF_MON_0;
132     volatile    uint32_t    DES_DFE_COEFF_MON_1;
133     volatile    uint32_t    DES_DFE_CAL_OS_MON;
134     volatile    uint32_t    DES_DFE_CAL_ST_0;
135     volatile    uint32_t    DES_DFE_CAL_ST_1;
136     volatile    uint32_t    DES_DFE_CAL_FLAG;
137 
138 } PMA_LANE_TypeDef;
139 
140 /*------------------------------------------------------------------------------
141   TXPLL_SSC (PMA Common) Registers.
142  */
143  typedef struct
144 {
145     volatile    uint32_t    SOFT_RESET;
146     volatile    uint32_t    TXPLL_CLKBUF;
147     volatile    uint32_t    TXPLL_CTRL;
148     volatile    uint32_t    TXPLL_CLK_SEL;
149     volatile    uint32_t    TXPLL_DIV_1;
150     volatile    uint32_t    TXPLL_DIV_2;
151     volatile    uint32_t    TXPLL_JA_1;
152     volatile    uint32_t    TXPLL_JA_2;
153     volatile    uint32_t    TXPLL_JA_3;
154     volatile    uint32_t    TXPLL_JA_4;
155     volatile    uint32_t    TXPLL_JA_5;
156     volatile    uint32_t    TXPLL_JA_6;
157     volatile    uint32_t    TXPLL_JA_7;
158     volatile    uint32_t    TXPLL_JA_8;
159     volatile    uint32_t    TXPLL_JA_9;
160     volatile    uint32_t    TXPLL_JA_10;
161     volatile    uint32_t    TXPLL_JA_RST;
162     volatile    uint32_t    SERDES_SSMOD;
163     volatile    uint32_t    RESERVED[2];
164     volatile    uint32_t    SERDES_RTERM;
165     volatile    uint32_t    SERDES_RTT;
166 
167 } TXPLL_SSC_TypeDef;
168 
169 /*------------------------------------------------------------------------------
170   TXPLL (QAUD - extpll) Registers.
171  */
172 typedef struct
173 {
174     volatile    uint32_t    SOFT_RESET;
175     volatile    uint32_t    EXTPLL_CLKBUF;
176     volatile    uint32_t    EXTPLL_CTRL;
177     volatile    uint32_t    EXTPLL_CLK_SEL;
178     volatile    uint32_t    EXTPLL_DIV_1;
179     volatile    uint32_t    EXTPLL_DIV_2;
180     volatile    uint32_t    EXTPLL_JA_1;
181     volatile    uint32_t    EXTPLL_JA_2;
182     volatile    uint32_t    EXTPLL_JA_3;
183     volatile    uint32_t    EXTPLL_JA_4;
184     volatile    uint32_t    EXTPLL_JA_5;
185     volatile    uint32_t    EXTPLL_JA_6;
186     volatile    uint32_t    EXTPLL_JA_7;
187     volatile    uint32_t    EXTPLL_JA_8;
188     volatile    uint32_t    EXTPLL_JA_9;
189     volatile    uint32_t    EXTPLL_JA_10;
190     volatile    uint32_t    EXTPLL_JA_RST;
191 
192 } TXPLL_TypeDef;
193 
194 /*------------------------------------------------------------------------------
195   PCIESS main Registers.
196  */
197 typedef struct
198 {
199     volatile    uint32_t    SOFT_RESET;
200     volatile    uint32_t    OVRLY;
201     volatile    uint32_t    MAJOR;
202     volatile    uint32_t    INT_PIPE_CLK_CTRL;
203     volatile    uint32_t    EXT_PIPE_CLK_CTRL;
204     volatile    uint32_t    CLK_CTRL;
205     volatile    uint32_t    QMUX_R0;
206     volatile    uint32_t    RESERVED0[57];
207     volatile    uint32_t    DLL_CTRL0;
208     volatile    uint32_t    DLL_CTRL1;
209     volatile    uint32_t    DLL_STAT0;
210     volatile    uint32_t    DLL_STAT1;
211     volatile    uint32_t    DLL_STAT2;
212     volatile    uint32_t    TEST_DLL;
213     volatile    uint32_t    RESERVED1[29];
214     volatile    uint32_t    SPARE;
215 
216 } PCIESS_MAIN_TypeDef;
217 
218 /*------------------------------------------------------------------------------
219   PCIE Control Registers.
220  */
221 typedef struct
222 {
223     volatile    uint32_t    SOFT_RESET;
224     volatile    uint32_t    DEV_CONTROL;
225     volatile    uint32_t    CLOCK_CONTROL;
226     volatile    uint32_t    RESERVED0;
227     volatile    uint32_t    SOFT_RESET_DEBUG_INFO;
228     volatile    uint32_t    SOFT_RESET_CTLR;
229     volatile    uint32_t    RESERVED1[2];
230     volatile    uint32_t    SEC_ERROR_EVENT_CNT;
231     volatile    uint32_t    DED_ERROR_EVENT_CNT;
232     volatile    uint32_t    SEC_ERROR_INT;
233     volatile    uint32_t    SEC_ERROR_INT_MASK;
234     volatile    uint32_t    DED_ERROR_INT;
235     volatile    uint32_t    DED_ERROR_INT_MASK;
236     volatile    uint32_t    ECC_CONTROL;
237     volatile    uint32_t    ECC_ERR_LOC;
238     volatile    uint32_t    RAM_MARGIN_1;
239     volatile    uint32_t    RAM_MARGIN_2;
240     volatile    uint32_t    RAM_POWER_CONTROL;
241     volatile    uint32_t    RESERVED2;
242     volatile    uint32_t    DEBUG_SEL;
243     volatile    uint32_t    RESERVED3[2];
244     volatile    uint32_t    LTSSM_STATE;
245     volatile    uint32_t    PHY_COMMON_INTERFACE;
246     volatile    uint32_t    PL_TX_LANEIF_0;
247     volatile    uint32_t    PL_RX_LANEIF_0;
248     volatile    uint32_t    PL_WAKECLKREQ;
249     volatile    uint32_t    RESERVED4[4];
250     volatile    uint32_t    PCICONF_PCI_IDS_OVERRIDE;
251     volatile    uint32_t    PCICONF_PCI_IDS_31_0;
252     volatile    uint32_t    PCICONF_PCI_IDS_63_32;
253     volatile    uint32_t    PCICONF_PCI_IDS_95_64;
254     volatile    uint32_t    RESERVED5[4];
255     volatile    uint32_t    PCIE_PEX_DEV_LINK_SPC2;
256     volatile    uint32_t    PCIE_PEX_SPC;
257     volatile    uint32_t    RESERVED6[22];
258     volatile    uint32_t    PCIE_AXI_MASTER_ATR_CFG0;
259     volatile    uint32_t    PCIE_AXI_MASTER_ATR_CFG1;
260     volatile    uint32_t    PCIE_AXI_MASTER_ATR_CFG2;
261     volatile    uint32_t    RESERVED7[5];
262     volatile    uint32_t    AXI_SLAVE_PCIE_ATR_CFG0;
263     volatile    uint32_t    AXI_SLAVE_PCIE_ATR_CFG1;
264     volatile    uint32_t    AXI_SLAVE_PCIE_ATR_CFG2;
265     volatile    uint32_t    RESERVED8[5];
266     volatile    uint32_t    PCIE_BAR_01;
267     volatile    uint32_t    PCIE_BAR_23;
268     volatile    uint32_t    PCIE_BAR_45;
269     volatile    uint32_t    PCIE_EVENT_INT;
270     volatile    uint32_t    RESERVED9[12];
271     volatile    uint32_t    PCIE_BAR_WIN;
272     volatile    uint32_t    RESERVED10[703];
273     volatile    uint32_t    TEST_BUS_IN_31_0;
274     volatile    uint32_t    TEST_BUS_IN_63_32;
275 
276 } PCIE_CTRL_TypeDef;
277 
278 /*------------------------------------------------------------------------------
279   PCIE Bridge Control Registers.
280  */
281 typedef struct
282 {
283     volatile    uint32_t    BRIDGE_VER;
284     volatile    uint32_t    BRIDGE_BUS;
285     volatile    uint32_t    BRIDGE_IMPL_IF;
286     volatile    uint32_t    RESERVED;
287     volatile    uint32_t    PCIE_IF_CONF;
288     volatile    uint32_t    PCIE_BASIC_CONF;
289     volatile    uint32_t    PCIE_BASIC_STATUS;
290     volatile    uint32_t    RESERVED0[2];
291     volatile    uint32_t    AXI_SLVL_CONF;
292     volatile    uint32_t    RESERVED1[2];
293     volatile    uint32_t    AXI_MST0_CONF;
294     volatile    uint32_t    AXI_SLV0_CONF;
295     volatile    uint32_t    RESERVED2[18];
296     volatile    uint32_t    GEN_SETTINGS;
297     volatile    uint32_t    PCIE_CFGCTRL;
298     volatile    uint32_t    PCIE_PIPE_DW0;
299     volatile    uint32_t    PCIE_PIPE_DW1;
300     volatile    uint32_t    PCIE_VC_CRED_DW0;
301     volatile    uint32_t    PCIE_VC_CRED_DW1;
302     volatile    uint32_t    PCIE_PCI_IDS_DW0;
303     volatile    uint32_t    PCIE_PCI_IDS_DW1;
304     volatile    uint32_t    PCIE_PCI_IDS_DW2;
305     volatile    uint32_t    PCIE_PCI_LPM;
306     volatile    uint32_t    PCIE_PCI_IRQ_DW0;
307     volatile    uint32_t    PCIE_PCI_IRQ_DW1;
308     volatile    uint32_t    PCIE_PCI_IRQ_DW2;
309     volatile    uint32_t    PCIE_PCI_IOV_DW0;
310     volatile    uint32_t    PCIE_PCI_IOV_DW1;
311     volatile    uint32_t    RESERVED3;
312     volatile    uint32_t    PCIE_PEX_DEV;
313     volatile    uint32_t    PCIE_PEX_DEV2;
314     volatile    uint32_t    PCIE_PEX_LINK;
315     volatile    uint32_t    PCIE_PEX_SLOT;
316     volatile    uint32_t    PCIE_PEX_ROOT_VC;
317     volatile    uint32_t    PCIE_PEX_SPC;
318     volatile    uint32_t    PCIE_PEX_SPC2;
319     volatile    uint32_t    PCIE_PEX_NFTS;
320     volatile    uint32_t    PCIE_PEX_L1SS;
321     volatile    uint32_t    PCIE_BAR_01_DW0;
322     volatile    uint32_t    PCIE_BAR_01_DW1;
323     volatile    uint32_t    PCIE_BAR_23_DW0;
324     volatile    uint32_t    PCIE_BAR_23_DW1;
325     volatile    uint32_t    PCIE_BAR_45_DW0;
326     volatile    uint32_t    PCIE_BAR_45_DW1;
327     volatile    uint32_t    PCIE_BAR_WIN;
328     volatile    uint32_t    PCIE_EQ_PRESET_DW0;
329     volatile    uint32_t    PCIE_EQ_PRESET_DW1;
330     volatile    uint32_t    PCIE_EQ_PRESET_DW2;
331     volatile    uint32_t    PCIE_EQ_PRESET_DW3;
332     volatile    uint32_t    PCIE_EQ_PRESET_DW4;
333     volatile    uint32_t    PCIE_EQ_PRESET_DW5;
334     volatile    uint32_t    PCIE_EQ_PRESET_DW6;
335     volatile    uint32_t    PCIE_EQ_PRESET_DW7;
336     volatile    uint32_t    PCIE_SRIOV_DW0;
337     volatile    uint32_t    PCIE_SRIOV_DW1;
338     volatile    uint32_t    PCIE_SRIOV_DW2;
339     volatile    uint32_t    PCIE_SRIOV_DW3;
340     volatile    uint32_t    PCIE_SRIOV_DW4;
341     volatile    uint32_t    PCIE_SRIOV_DW5;
342     volatile    uint32_t    PCIE_SRIOV_DW6;
343     volatile    uint32_t    PCIE_SRIOV_DW7;
344     volatile    uint32_t    PCIE_CFGNUM;
345     volatile    uint32_t    RESERVED4[12];
346     volatile    uint32_t    PM_CONF_DW0;
347     volatile    uint32_t    PM_CONF_DW1;
348     volatile    uint32_t    PM_CONF_DW2;
349     volatile    uint32_t    IMASK_LOCAL;
350     volatile    uint32_t    ISTATUS_LOCAL;
351     volatile    uint32_t    IMASK_HOST;
352     volatile    uint32_t    ISTATUS_HOST;
353     volatile    uint32_t    IMSI_ADDR;
354     volatile    uint32_t    ISTATUS_MSI;
355     volatile    uint32_t    ICMD_PM;
356     volatile    uint32_t    ISTATUS_PM;
357     volatile    uint32_t    ATS_PRI_REPORT;
358     volatile    uint32_t    LTR_VALUES;
359     volatile    uint32_t    RESERVED5[2];
360     volatile    uint32_t    ISTATUS_DMA0;
361     volatile    uint32_t    ISTATUS_DMA1;
362     volatile    uint32_t    RESERVED6[8];
363     volatile    uint32_t    ISTATUS_P_ADT_WIN0;
364     volatile    uint32_t    ISTATUS_P_ADT_WIN1;
365     volatile    uint32_t    ISTATUS_A_ADT_SLV0;
366     volatile    uint32_t    ISTATUS_A_ADT_SLV1;
367     volatile    uint32_t    ISTATUS_A_ADT_SLV2;
368     volatile    uint32_t    ISTATUS_A_ADT_SLV3;
369     volatile    uint32_t    RESERVED7[4];
370     volatile    uint32_t    ROUTING_RULES_R_DW0;
371     volatile    uint32_t    ROUTING_RULES_R_DW1;
372     volatile    uint32_t    ROUTING_RULES_R_DW2;
373     volatile    uint32_t    ROUTING_RULES_R_DW3;
374     volatile    uint32_t    ROUTING_RULES_R_DW4;
375     volatile    uint32_t    ROUTING_RULES_R_DW5;
376     volatile    uint32_t    ROUTING_RULES_R_DW6;
377     volatile    uint32_t    ROUTING_RULES_R_DW7;
378     volatile    uint32_t    ROUTING_RULES_R_DW8;
379     volatile    uint32_t    ROUTING_RULES_R_DW9;
380     volatile    uint32_t    ROUTING_RULES_R_DW10;
381     volatile    uint32_t    ROUTING_RULES_R_DW11;
382     volatile    uint32_t    ROUTING_RULES_R_DW12;
383     volatile    uint32_t    ROUTING_RULES_R_DW13;
384     volatile    uint32_t    ROUTING_RULES_R_DW14;
385     volatile    uint32_t    ROUTING_RULES_R_DW15;
386     volatile    uint32_t    ROUTING_RULES_W_DW0;
387     volatile    uint32_t    ROUTING_RULES_W_DW1;
388     volatile    uint32_t    ROUTING_RULES_W_DW2;
389     volatile    uint32_t    ROUTING_RULES_W_DW3;
390     volatile    uint32_t    ROUTING_RULES_W_DW4;
391     volatile    uint32_t    ROUTING_RULES_W_DW5;
392     volatile    uint32_t    ROUTING_RULES_W_DW6;
393     volatile    uint32_t    ROUTING_RULES_W_DW7;
394     volatile    uint32_t    ROUTING_RULES_W_DW8;
395     volatile    uint32_t    ROUTING_RULES_W_DW9;
396     volatile    uint32_t    ROUTING_RULES_W_DW10;
397     volatile    uint32_t    ROUTING_RULES_W_DW11;
398     volatile    uint32_t    ROUTING_RULES_W_DW12;
399     volatile    uint32_t    ROUTING_RULES_W_DW13;
400     volatile    uint32_t    ROUTING_RULES_W_DW14;
401     volatile    uint32_t    ROUTING_RULES_W_DW15;
402     volatile    uint32_t    ARBITRATION_RULES_DW0;
403     volatile    uint32_t    ARBITRATION_RULES_DW1;
404     volatile    uint32_t    ARBITRATION_RULES_DW2;
405     volatile    uint32_t    ARBITRATION_RULES_DW3;
406     volatile    uint32_t    ARBITRATION_RULES_DW4;
407     volatile    uint32_t    ARBITRATION_RULES_DW5;
408     volatile    uint32_t    ARBITRATION_RULES_DW6;
409     volatile    uint32_t    ARBITRATION_RULES_DW7;
410     volatile    uint32_t    ARBITRATION_RULES_DW8;
411     volatile    uint32_t    ARBITRATION_RULES_DW9;
412     volatile    uint32_t    ARBITRATION_RULES_DW10;
413     volatile    uint32_t    ARBITRATION_RULES_DW11;
414     volatile    uint32_t    ARBITRATION_RULES_DW12;
415     volatile    uint32_t    ARBITRATION_RULES_DW13;
416     volatile    uint32_t    ARBITRATION_RULES_DW14;
417     volatile    uint32_t    ARBITRATION_RULES_DW15;
418     volatile    uint32_t    PRIORITY_RULES_DW0;
419     volatile    uint32_t    PRIORITY_RULES_DW1;
420     volatile    uint32_t    PRIORITY_RULES_DW2;
421     volatile    uint32_t    PRIORITY_RULES_DW3;
422     volatile    uint32_t    PRIORITY_RULES_DW4;
423     volatile    uint32_t    PRIORITY_RULES_DW5;
424     volatile    uint32_t    PRIORITY_RULES_DW6;
425     volatile    uint32_t    PRIORITY_RULES_DW7;
426     volatile    uint32_t    PRIORITY_RULES_DW8;
427     volatile    uint32_t    PRIORITY_RULES_DW9;
428     volatile    uint32_t    PRIORITY_RULES_DW10;
429     volatile    uint32_t    PRIORITY_RULES_DW11;
430     volatile    uint32_t    PRIORITY_RULES_DW12;
431     volatile    uint32_t    PRIORITY_RULES_DW13;
432     volatile    uint32_t    PRIORITY_RULES_DW14;
433     volatile    uint32_t    PRIORITY_RULES_DW15;
434     volatile    uint32_t    RESERVED8[48];
435     volatile    uint32_t    P2A_TC_QOS_CONV;
436     volatile    uint32_t    P2A_ATTR_CACHE_CONV;
437     volatile    uint32_t    P2A_NC_BASE_ADDR_DW0;
438     volatile    uint32_t    P2A_NC_BASE_ADDR_DW1;
439     volatile    uint32_t    RESERVED9[12];
440     volatile    uint32_t    DMA0_SRC_PARAM;
441     volatile    uint32_t    DMA0_DESTPARAM;
442     volatile    uint32_t    DMA0_SRCADDR_LDW;
443     volatile    uint32_t    DMA0_SRCADDR_UDW;
444     volatile    uint32_t    DMA0_DESTADDR_LDW;
445     volatile    uint32_t    DMA0_DESTADDR_UDW;
446     volatile    uint32_t    DMA0_LENGTH;
447     volatile    uint32_t    DMA0_CONTROL;
448     volatile    uint32_t    DMA0_STATUS;
449     volatile    uint32_t    DMA0_PRC_LENGTH;
450     volatile    uint32_t    DMA0_SHARE_ACCESS;
451     volatile    uint32_t    RESERVED10[5];
452     volatile    uint32_t    DMA1_SRC_PARAM;
453     volatile    uint32_t    DMA1_DESTPARAM;
454     volatile    uint32_t    DMA1_SRCADDR_LDW;
455     volatile    uint32_t    DMA1_SRCADDR_UDW;
456     volatile    uint32_t    DMA1_DESTADDR_LDW;
457     volatile    uint32_t    DMA1_DESTADDR_UDW;
458     volatile    uint32_t    DMA1_LENGTH;
459     volatile    uint32_t    DMA1_CONTROL;
460     volatile    uint32_t    DMA1_STATUS;
461     volatile    uint32_t    DMA1_PRC_LENGTH;
462     volatile    uint32_t    DMA1_SHARE_ACCESS;
463     volatile    uint32_t    RESERVED11[101];
464     volatile    uint32_t    ATR0_PCIE_WIN0_SRCADDR_PARAM;
465     volatile    uint32_t    ATR0_PCIE_WIN0_SRC_ADDR;
466     volatile    uint32_t    ATR0_PCIE_WIN0_TRSL_ADDR_LSB;
467     volatile    uint32_t    ATR0_PCIE_WIN0_TRSL_ADDR_UDW;
468     volatile    uint32_t    ATR0_PCIE_WIN0_TRSL_PARAM;
469     volatile    uint32_t    RESERVED12;
470     volatile    uint32_t    ATR0_PCIE_WIN0_TRSL_MASK_DW0;
471     volatile    uint32_t    ATR0_PCIE_WIN0_TRSL_MASK_DW1;
472     volatile    uint32_t    ATR1_PCIE_WIN0_SRCADDR_PARAM;
473     volatile    uint32_t    ATR1_PCIE_WIN0_SRC_ADDR;
474     volatile    uint32_t    ATR1_PCIE_WIN0_TRSL_ADDR_LSB;
475     volatile    uint32_t    ATR1_PCIE_WIN0_TRSL_ADDR_UDW;
476     volatile    uint32_t    ATR1_PCIE_WIN0_TRSL_PARAM;
477     volatile    uint32_t    RESERVED13;
478     volatile    uint32_t    ATR1_PCIE_WIN0_TRSL_MASK_DW0;
479     volatile    uint32_t    ATR1_PCIE_WIN0_TRSL_MASK_DW1;
480     volatile    uint32_t    ATR2_PCIE_WIN0_SRCADDR_PARAM;
481     volatile    uint32_t    ATR2_PCIE_WIN0_SRC_ADDR;
482     volatile    uint32_t    ATR2_PCIE_WIN0_TRSL_ADDR_LSB;
483     volatile    uint32_t    ATR2_PCIE_WIN0_TRSL_ADDR_UDW;
484     volatile    uint32_t    ATR2_PCIE_WIN0_TRSL_PARAM;
485     volatile    uint32_t    RESERVED14;
486     volatile    uint32_t    ATR2_PCIE_WIN0_TRSL_MASK_DW0;
487     volatile    uint32_t    ATR2_PCIE_WIN0_TRSL_MASK_DW1;
488     volatile    uint32_t    ATR3_PCIE_WIN0_SRCADDR_PARAM;
489     volatile    uint32_t    ATR3_PCIE_WIN0_SRC_ADDR;
490     volatile    uint32_t    ATR3_PCIE_WIN0_TRSL_ADDR_LSB;
491     volatile    uint32_t    ATR3_PCIE_WIN0_TRSL_ADDR_UDW;
492     volatile    uint32_t    ATR3_PCIE_WIN0_TRSL_PARAM;
493     volatile    uint32_t    RESERVED15;
494     volatile    uint32_t    ATR3_PCIE_WIN0_TRSL_MASK_DW0;
495     volatile    uint32_t    ATR3_PCIE_WIN0_TRSL_MASK_DW1;
496     volatile    uint32_t    ATR4_PCIE_WIN0_SRCADDR_PARAM;
497     volatile    uint32_t    ATR4_PCIE_WIN0_SRC_ADDR;
498     volatile    uint32_t    ATR4_PCIE_WIN0_TRSL_ADDR_LSB;
499     volatile    uint32_t    ATR4_PCIE_WIN0_TRSL_ADDR_UDW;
500     volatile    uint32_t    ATR4_PCIE_WIN0_TRSL_PARAM;
501     volatile    uint32_t    RESERVED16;
502     volatile    uint32_t    ATR4_PCIE_WIN0_TRSL_MASK_DW0;
503     volatile    uint32_t    ATR4_PCIE_WIN0_TRSL_MASK_DW1;
504     volatile    uint32_t    ATR5_PCIE_WIN0_SRCADDR_PARAM;
505     volatile    uint32_t    ATR5_PCIE_WIN0_SRC_ADDR;
506     volatile    uint32_t    ATR5_PCIE_WIN0_TRSL_ADDR_LSB;
507     volatile    uint32_t    ATR5_PCIE_WIN0_TRSL_ADDR_UDW;
508     volatile    uint32_t    ATR5_PCIE_WIN0_TRSL_PARAM;
509     volatile    uint32_t    RESERVED17;
510     volatile    uint32_t    ATR5_PCIE_WIN0_TRSL_MASK_DW0;
511     volatile    uint32_t    ATR5_PCIE_WIN0_TRSL_MASK_DW1;
512     volatile    uint32_t    ATR6_PCIE_WIN0_SRCADDR_PARAM;
513     volatile    uint32_t    ATR6_PCIE_WIN0_SRC_ADDR;
514     volatile    uint32_t    ATR6_PCIE_WIN0_TRSL_ADDR_LSB;
515     volatile    uint32_t    ATR6_PCIE_WIN0_TRSL_ADDR_UDW;
516     volatile    uint32_t    ATR6_PCIE_WIN0_TRSL_PARAM;
517     volatile    uint32_t    RESERVED18;
518     volatile    uint32_t    ATR6_PCIE_WIN0_TRSL_MASK_DW0;
519     volatile    uint32_t    ATR6_PCIE_WIN0_TRSL_MASK_DW1;
520     volatile    uint32_t    ATR7_PCIE_WIN0_SRCADDR_PARAM;
521     volatile    uint32_t    ATR7_PCIE_WIN0_SRC_ADDR;
522     volatile    uint32_t    ATR7_PCIE_WIN0_TRSL_ADDR_LSB;
523     volatile    uint32_t    ATR7_PCIE_WIN0_TRSL_ADDR_UDW;
524     volatile    uint32_t    ATR7_PCIE_WIN0_TRSL_PARAM;
525     volatile    uint32_t    RESERVED19;
526     volatile    uint32_t    ATR7_PCIE_WIN0_TRSL_MASK_DW0;
527     volatile    uint32_t    ATR7_PCIE_WIN0_TRSL_MASK_DW1;
528 
529     volatile    uint32_t    ATR0_PCIE_WIN1_SRCADDR_PARAM;
530     volatile    uint32_t    ATR0_PCIE_WIN1_SRC_ADDR;
531     volatile    uint32_t    ATR0_PCIE_WIN1_TRSL_ADDR_LSB;
532     volatile    uint32_t    ATR0_PCIE_WIN1_TRSL_ADDR_UDW;
533     volatile    uint32_t    ATR0_PCIE_WIN1_TRSL_PARAM;
534     volatile    uint32_t    RESERVED20;
535     volatile    uint32_t    ATR0_PCIE_WIN1_TRSL_MASK_DW0;
536     volatile    uint32_t    ATR0_PCIE_WIN1_TRSL_MASK_DW1;
537     volatile    uint32_t    ATR1_PCIE_WIN1_SRCADDR_PARAM;
538     volatile    uint32_t    ATR1_PCIE_WIN1_SRC_ADDR;
539     volatile    uint32_t    ATR1_PCIE_WIN1_TRSL_ADDR_LSB;
540     volatile    uint32_t    ATR1_PCIE_WIN1_TRSL_ADDR_UDW;
541     volatile    uint32_t    ATR1_PCIE_WIN1_TRSL_PARAM;
542     volatile    uint32_t    RESERVED21;
543     volatile    uint32_t    ATR1_PCIE_WIN1_TRSL_MASK_DW0;
544     volatile    uint32_t    ATR1_PCIE_WIN1_TRSL_MASK_DW1;
545     volatile    uint32_t    ATR2_PCIE_WIN1_SRCADDR_PARAM;
546     volatile    uint32_t    ATR2_PCIE_WIN1_SRC_ADDR;
547     volatile    uint32_t    ATR2_PCIE_WIN1_TRSL_ADDR_LSB;
548     volatile    uint32_t    ATR2_PCIE_WIN1_TRSL_ADDR_UDW;
549     volatile    uint32_t    ATR2_PCIE_WIN1_TRSL_PARAM;
550     volatile    uint32_t    RESERVED22;
551     volatile    uint32_t    ATR2_PCIE_WIN1_TRSL_MASK_DW0;
552     volatile    uint32_t    ATR2_PCIE_WIN1_TRSL_MASK_DW1;
553     volatile    uint32_t    ATR3_PCIE_WIN1_SRCADDR_PARAM;
554     volatile    uint32_t    ATR3_PCIE_WIN1_SRC_ADDR;
555     volatile    uint32_t    ATR3_PCIE_WIN1_TRSL_ADDR_LSB;
556     volatile    uint32_t    ATR3_PCIE_WIN1_TRSL_ADDR_UDW;
557     volatile    uint32_t    ATR3_PCIE_WIN1_TRSL_PARAM;
558     volatile    uint32_t    RESERVED23;
559     volatile    uint32_t    ATR3_PCIE_WIN1_TRSL_MASK_DW0;
560     volatile    uint32_t    ATR3_PCIE_WIN1_TRSL_MASK_DW1;
561     volatile    uint32_t    ATR4_PCIE_WIN1_SRCADDR_PARAM;
562     volatile    uint32_t    ATR4_PCIE_WIN1_SRC_ADDR;
563     volatile    uint32_t    ATR4_PCIE_WIN1_TRSL_ADDR_LSB;
564     volatile    uint32_t    ATR4_PCIE_WIN1_TRSL_ADDR_UDW;
565     volatile    uint32_t    ATR4_PCIE_WIN1_TRSL_PARAM;
566     volatile    uint32_t    RESERVED24;
567     volatile    uint32_t    ATR4_PCIE_WIN1_TRSL_MASK_DW0;
568     volatile    uint32_t    ATR4_PCIE_WIN1_TRSL_MASK_DW1;
569     volatile    uint32_t    ATR5_PCIE_WIN1_SRCADDR_PARAM;
570     volatile    uint32_t    ATR5_PCIE_WIN1_SRC_ADDR;
571     volatile    uint32_t    ATR5_PCIE_WIN1_TRSL_ADDR_LSB;
572     volatile    uint32_t    ATR5_PCIE_WIN1_TRSL_ADDR_UDW;
573     volatile    uint32_t    ATR5_PCIE_WIN1_TRSL_PARAM;
574     volatile    uint32_t    RESERVED25;
575     volatile    uint32_t    ATR5_PCIE_WIN1_TRSL_MASK_DW0;
576     volatile    uint32_t    ATR5_PCIE_WIN1_TRSL_MASK_DW1;
577     volatile    uint32_t    ATR6_PCIE_WIN1_SRCADDR_PARAM;
578     volatile    uint32_t    ATR6_PCIE_WIN1_SRC_ADDR;
579     volatile    uint32_t    ATR6_PCIE_WIN1_TRSL_ADDR_LSB;
580     volatile    uint32_t    ATR6_PCIE_WIN1_TRSL_ADDR_UDW;
581     volatile    uint32_t    ATR6_PCIE_WIN1_TRSL_PARAM;
582     volatile    uint32_t    RESERVED26;
583     volatile    uint32_t    ATR6_PCIE_WIN1_TRSL_MASK_DW0;
584     volatile    uint32_t    ATR6_PCIE_WIN1_TRSL_MASK_DW1;
585     volatile    uint32_t    ATR7_PCIE_WIN1_SRCADDR_PARAM;
586     volatile    uint32_t    ATR7_PCIE_WIN1_SRC_ADDR;
587     volatile    uint32_t    ATR7_PCIE_WIN1_TRSL_ADDR_LSB;
588     volatile    uint32_t    ATR7_PCIE_WIN1_TRSL_ADDR_UDW;
589     volatile    uint32_t    ATR7_PCIE_WIN1_TRSL_PARAM;
590     volatile    uint32_t    RESERVED27;
591     volatile    uint32_t    ATR7_PCIE_WIN1_TRSL_MASK_DW0;
592     volatile    uint32_t    ATR7_PCIE_WIN1_TRSL_MASK_DW1;
593 
594     volatile    uint32_t    ATR0_AXI4_SLV0_SRCADDR_PARAM;
595     volatile    uint32_t    ATR0_AXI4_SLV0_SRC_ADDR;
596     volatile    uint32_t    ATR0_AXI4_SLV0_TRSL_ADDR_LSB;
597     volatile    uint32_t    ATR0_AXI4_SLV0_TRSL_ADDR_UDW;
598     volatile    uint32_t    ATR0_AXI4_SLV0_TRSL_PARAM;
599     volatile    uint32_t    RESERVED28;
600     volatile    uint32_t    ATR0_AXI4_SLV0_TRSL_MASK_DW0;
601     volatile    uint32_t    ATR0_AXI4_SLV0_TRSL_MASK_DW1;
602     volatile    uint32_t    ATR1_AXI4_SLV0_SRCADDR_PARAM;
603     volatile    uint32_t    ATR1_AXI4_SLV0_SRC_ADDR;
604     volatile    uint32_t    ATR1_AXI4_SLV0_TRSL_ADDR_LSB;
605     volatile    uint32_t    ATR1_AXI4_SLV0_TRSL_ADDR_UDW;
606     volatile    uint32_t    ATR1_AXI4_SLV0_TRSL_PARAM;
607     volatile    uint32_t    RESERVED29;
608     volatile    uint32_t    ATR1_AXI4_SLV0_TRSL_MASK_DW0;
609     volatile    uint32_t    ATR1_AXI4_SLV0_TRSL_MASK_DW1;
610     volatile    uint32_t    ATR2_AXI4_SLV0_SRCADDR_PARAM;
611     volatile    uint32_t    ATR2_AXI4_SLV0_SRC_ADDR;
612     volatile    uint32_t    ATR2_AXI4_SLV0_TRSL_ADDR_LSB;
613     volatile    uint32_t    ATR2_AXI4_SLV0_TRSL_ADDR_UDW;
614     volatile    uint32_t    ATR2_AXI4_SLV0_TRSL_PARAM;
615     volatile    uint32_t    RESERVED30;
616     volatile    uint32_t    ATR2_AXI4_SLV0_TRSL_MASK_DW0;
617     volatile    uint32_t    ATR2_AXI4_SLV0_TRSL_MASK_DW1;
618     volatile    uint32_t    ATR3_AXI4_SLV0_SRCADDR_PARAM;
619     volatile    uint32_t    ATR3_AXI4_SLV0_SRC_ADDR;
620     volatile    uint32_t    ATR3_AXI4_SLV0_TRSL_ADDR_LSB;
621     volatile    uint32_t    ATR3_AXI4_SLV0_TRSL_ADDR_UDW;
622     volatile    uint32_t    ATR3_AXI4_SLV0_TRSL_PARAM;
623     volatile    uint32_t    RESERVED31;
624     volatile    uint32_t    ATR3_AXI4_SLV0_TRSL_MASK_DW0;
625     volatile    uint32_t    ATR3_AXI4_SLV0_TRSL_MASK_DW1;
626     volatile    uint32_t    ATR4_AXI4_SLV0_SRCADDR_PARAM;
627     volatile    uint32_t    ATR4_AXI4_SLV0_SRC_ADDR;
628     volatile    uint32_t    ATR4_AXI4_SLV0_TRSL_ADDR_LSB;
629     volatile    uint32_t    ATR4_AXI4_SLV0_TRSL_ADDR_UDW;
630     volatile    uint32_t    ATR4_AXI4_SLV0_TRSL_PARAM;
631     volatile    uint32_t    RESERVED32;
632     volatile    uint32_t    ATR4_AXI4_SLV0_TRSL_MASK_DW0;
633     volatile    uint32_t    ATR4_AXI4_SLV0_TRSL_MASK_DW1;
634     volatile    uint32_t    ATR5_AXI4_SLV0_SRCADDR_PARAM;
635     volatile    uint32_t    ATR5_AXI4_SLV0_SRC_ADDR;
636     volatile    uint32_t    ATR5_AXI4_SLV0_TRSL_ADDR_LSB;
637     volatile    uint32_t    ATR5_AXI4_SLV0_TRSL_ADDR_UDW;
638     volatile    uint32_t    ATR5_AXI4_SLV0_TRSL_PARAM;
639     volatile    uint32_t    RESERVED33;
640     volatile    uint32_t    ATR5_AXI4_SLV0_TRSL_MASK_DW0;
641     volatile    uint32_t    ATR5_AXI4_SLV0_TRSL_MASK_DW1;
642     volatile    uint32_t    ATR6_AXI4_SLV0_SRCADDR_PARAM;
643     volatile    uint32_t    ATR6_AXI4_SLV0_SRC_ADDR;
644     volatile    uint32_t    ATR6_AXI4_SLV0_TRSL_ADDR_LSB;
645     volatile    uint32_t    ATR6_AXI4_SLV0_TRSL_ADDR_UDW;
646     volatile    uint32_t    ATR6_AXI4_SLV0_TRSL_PARAM;
647     volatile    uint32_t    RESERVED34;
648     volatile    uint32_t    ATR6_AXI4_SLV0_TRSL_MASK_DW0;
649     volatile    uint32_t    ATR6_AXI4_SLV0_TRSL_MASK_DW1;
650     volatile    uint32_t    ATR7_AXI4_SLV0_SRCADDR_PARAM;
651     volatile    uint32_t    ATR7_AXI4_SLV0_SRC_ADDR;
652     volatile    uint32_t    ATR7_AXI4_SLV0_TRSL_ADDR_LSB;
653     volatile    uint32_t    ATR7_AXI4_SLV0_TRSL_ADDR_UDW;
654     volatile    uint32_t    ATR7_AXI4_SLV0_TRSL_PARAM;
655     volatile    uint32_t    RESERVED35;
656     volatile    uint32_t    ATR7_AXI4_SLV0_TRSL_MASK_DW0;
657     volatile    uint32_t    ATR7_AXI4_SLV0_TRSL_MASK_DW1;
658 
659 } PCIE_BRIDGE_TypeDef;
660 
661 /*------------------------------------------------------------------------------
662   PCIE Configuration Type 0 Space Registers.
663  */
664 typedef struct
665 {
666 /*======================= Information registers ======================*/
667     /**
668       Information register: vendor_id & device_id
669       bits [15:0]   vendor_id
670       bits [31:16]  device_id
671      */
672     /* 0x000 */
673     volatile    uint32_t    VID_DEVID;
674 
675     /**
676       PCI Express Control & Status Register: cfg_prmscr
677      */
678     /* 0x004 */
679     volatile    uint32_t    CFG_PRMSCR;
680 
681     /**
682       Information register: class_code
683      */
684     /* 0x008 */
685     volatile    uint32_t    CLASS_CODE;
686 
687      /**
688       BIST, Header, master latency timer, cache : BIST_HEADER
689      */
690          /* 0x00C */
691     volatile    uint32_t    BIST_HEADER;
692 
693     /**
694       Bridge Configuration Register: bar0
695      */
696     /* 0x010 */
697     volatile    uint32_t    BAR0;
698 
699     /**
700       Bridge Configuration Register: bar1
701      */
702     /* 0x014 */
703     volatile    uint32_t    BAR1;
704 
705     /**
706       Bridge Configuration Register: bar2
707      */
708     /* 0x018 */
709     volatile    uint32_t    BAR2;
710 
711     /**
712       Bridge Configuration Register: bar3
713      */
714     /* 0x01C */
715     volatile    uint32_t    BAR3;
716 
717     /**
718       Bridge Configuration Register: bar4
719      */
720     /* 0x020 */
721     volatile    uint32_t    BAR4;
722 
723     /**
724       Bridge Configuration Register: bar5
725      */
726     /* 0x024 */
727     volatile    uint32_t    BAR5;
728 
729 
730     volatile    uint32_t    RESERVED1;
731 
732     /**
733       Information register: subsystem_id
734      */
735     /* 0x02C */
736     volatile    uint32_t    SUBSYSTEM_ID;
737 
738     /**
739       Expansion ROM Base Address Register: expansion_rom
740      */
741     /* 0x030 */
742     volatile    uint32_t    EXPAN_ROM;
743 
744     /**
745       Capability pointer register: capab_pointer
746      */
747     /* 0x034 */
748     volatile    uint32_t    CAPAB_POINTER;
749 
750     /**
751       Expansion ROM Base Address register: expansion_rom_base
752      */
753     /* 0x038 */
754     volatile    uint32_t    EXPAN_ROM_BASE;
755 
756     /**
757       Interrupt Line and Pin register: int_line_pin
758      */
759     /* 0x03C */
760     volatile    uint32_t    INT_LINE_PIN;
761 
762     /* 0x40 to 0x7C */
763     volatile    uint32_t     RESERVED2[16];
764 
765     /* PCIe Capability structure register */
766 
767      /**
768       PCIe Capability list register: CAPAB_LIST
769      */
770     /* 0x080 */
771     volatile    uint32_t  CAPAB_LIST;
772 
773      /**
774       Device Capabilities register: device_capab
775      */
776     /* 0x084 */
777     volatile    uint32_t  DEVICE_CAPAB;
778 
779      /**
780       Device Control and status register: device_ctrl_stat
781      */
782     /* 0x088 */
783     volatile    uint32_t  DEVICE_CTRL_STAT;
784 
785      /**
786       Link Capabilities register: link_capab
787      */
788     /* 0x08C */
789     volatile    uint32_t  LINK_CAPAB;
790 
791      /**
792       Link Control and status register: link_ctrl_stat
793      */
794     /* 0x090 */
795     volatile    uint32_t  LINK_CTRL_STAT;
796 
797      /**
798       Slot capabilities register: slot_capab
799      */
800     /* 0x094 */
801     volatile    uint32_t  SLOT_CAPAB;
802 
803      /**
804       Slot Control and status register: slot_ctrl_stat
805      */
806     /* 0x098 */
807     volatile    uint32_t  SLOT_CTRL_STAT;
808 
809      /**
810       Root control register: root_ctrl
811      */
812     /* 0x09C */
813     volatile    uint32_t  ROOT_CTRL;
814 
815      /**
816       Root status register: root_stat
817      */
818     /* 0x0A0 */
819     volatile    uint32_t  ROOT_STAT;
820 
821      /**
822       Device 2 Capabilities register: device2_capab
823      */
824     /* 0x0A4 */
825     volatile    uint32_t  DEVICE2_CAPAB;
826 
827      /**
828       Device 2 Control and status register: device2_ctrl_stat
829      */
830     /* 0x0A8 */
831     volatile    uint32_t  DEVICE2_CTRL_STAT;
832 
833      /**
834       Link Capabilities 2 register: link2_capab
835      */
836     /* 0x0AC */
837     volatile    uint32_t  LINK2_CAPAB;
838 
839      /**
840       Link Control and status 2register: link2_ctrl_stat
841      */
842     /* 0x0B0 */
843     volatile    uint32_t  LINK2_CTRL_STAT;
844 
845      /**
846       Slot 2 capabilities register: slot2_capab
847      */
848     /* 0x0B4 */
849     volatile    uint32_t  SLOT2_CAPAB;
850 
851      /**
852       Slot 2 Control and status register: slot2_ctrl_stat
853      */
854     /* 0x0B8 */
855     volatile    uint32_t  SLOT2_CTRL_STAT;
856 
857     /* 0xBC to 0xCC */
858     volatile    uint32_t     RESERVED3[5];
859 
860     /* MSI-X Capability (optional)*/
861 
862     /**
863       MSI-X capability and control register: msi_x_capab_ctrl
864      */
865     /* 0x0D0 */
866     volatile    uint32_t  MSI_X_CAPAB_CTRL;
867 
868     /**
869       MSI-X table register: msi_x_table
870      */
871     /* 0x0D4 */
872     volatile    uint32_t  MSI_X_TABLE;
873 
874     /**
875       MSI-X PBA register: msi_x_pba
876      */
877     /* 0x0D8 */
878     volatile    uint32_t  MSI_X_PBA;
879 
880     /* 0xDC */
881     volatile    uint32_t     RESERVED4;
882 
883     /**
884       MSI capability id and message control register: msi_capab_ctrl
885      */
886     /* 0x0E0 */
887     volatile    uint32_t  MSI_CAPAB_CTRL;
888 
889     /**
890       MSI message lower address register: msi_lower address
891      */
892     /* 0x0E4 */
893     volatile    uint32_t  MSI_LOWER_ADDRESS;
894 
895     /**
896       MSI message upper address register: msi_upper address
897      */
898     /* 0x0E8 */
899     volatile    uint32_t  MSI_UPPER_ADDRESS;
900 
901     /* 0xEC */
902     volatile    uint32_t     RESERVED5;
903 
904     /**
905       MSI message data register: msi_data
906      */
907     /* 0x0F0 */
908     volatile    uint32_t  MSI_DATA;
909     /* 0xF4 */
910     volatile    uint32_t     RESERVED6;
911 
912     /* Power Management Capability Structure */
913     /**
914        Power Management Capability register: power_mngm_capab
915      */
916     /* 0x0F8 */
917     volatile    uint32_t  POWER_MNGM_CAPAB;
918 
919     /**
920        Power Management control and status register: power_ctrl_stat
921      */
922     /* 0x0FC */
923     volatile    uint32_t  POWER_CTRL_STAT;
924 
925 } PCIE_END_CONF_TypeDef;
926 
927 /*------------------------------------------------------------------------------
928   PCIE Configuration Type 1 Space Registers.
929  */
930 typedef struct
931 {
932 /*======================= Information registers ======================*/
933     /**
934       Information register: vendor_id & device_id
935       bits [15:0]   vendor_id
936       bits [31:16]  device_id
937      */
938     /* 0x000 */
939     volatile    uint32_t    VID_DEVID;
940 
941     /**
942       PCI Express Control & Status Register: cfg_prmscr
943      */
944     /* 0x004 */
945     volatile    uint32_t    CFG_PRMSCR;
946 
947     /**
948       Information register: class_code
949      */
950     /* 0x008 */
951     volatile    uint32_t    CLASS_CODE;
952 
953      /**
954       BIST, Header, master latency timer, cache : BIST_HEADER
955      */
956          /* 0x00C */
957     volatile    uint32_t    BIST_HEADER;
958 
959     /**
960       Bridge Configuration Register: bar0
961      */
962     /* 0x010 */
963     volatile    uint32_t    BAR0;
964 
965     /**
966       Bridge Configuration Register: bar1
967      */
968     /* 0x014 */
969     volatile    uint32_t    BAR1;
970 
971     /**
972       Secondary Latency timer, Subordinate bus number,
973       Secondary bus Number, primary bus number Register: prim_sec_bus_num
974      */
975     /* 0x018 */
976     volatile    uint32_t    PRIM_SEC_BUS_NUM;
977 
978     /**
979       Secondary status, I/O limit, I/O base Register: io_limit_base
980      */
981     /* 0x01C */
982     volatile    uint32_t    IO_LIMIT_BASE;
983 
984     /**
985       memory limit, memory base Register: mem_limit_base
986      */
987     /* 0x020 */
988     volatile    uint32_t    MEM_LIMIT_BASE;
989 
990     /**
991       prefetchable memory limit, memory base Register: pref_mem_limit_base
992      */
993     /* 0x024 */
994     volatile    uint32_t    PREF_MEM_LIMIT_BASE;
995 
996     /**
997       prefetchable base upper Register: pref_base_upper
998      */
999     /* 0x028 */
1000     volatile    uint32_t    PREF_BASE_UPPER;
1001 
1002     /**
1003       prefetchable limit upper Register: pref_limit_upper
1004      */
1005     /* 0x02C */
1006     volatile    uint32_t    PREF_LIMIT_UPPER;
1007 
1008     /**
1009       i/o base, limit upper Register: io_limit_base_upper
1010      */
1011     /* 0x030 */
1012     volatile    uint32_t    IO_LIMIT_BASE_UPPER;
1013 
1014     /**
1015       Capability pointer register: capab_pointer
1016      */
1017     /* 0x034 */
1018     volatile    uint32_t    CAPAB_POINTER;
1019 
1020     /**
1021       Expansion ROM Base Address register: expansion_rom_base
1022      */
1023     /* 0x038 */
1024     volatile    uint32_t    EXPAN_ROM_BASE;
1025 
1026     /**
1027       Interrupt Line and Pin register: int_line_pin
1028      */
1029     /* 0x03C */
1030     volatile    uint32_t    INT_LINE_PIN;
1031 
1032     /* 0x40 to 0x7C */
1033     volatile    uint32_t     RESERVED2[16];
1034 
1035     /* PCIe Capability structure register */
1036 
1037      /**
1038       PCIe Capability list register: CAPAB_LIST
1039      */
1040     /* 0x080 */
1041     volatile    uint32_t  CAPAB_LIST;
1042 
1043      /**
1044       Device Capabilities register: device_capab
1045      */
1046     /* 0x084 */
1047     volatile    uint32_t  DEVICE_CAPAB;
1048 
1049      /**
1050       Device Control and status register: device_ctrl_stat
1051      */
1052     /* 0x088 */
1053     volatile    uint32_t  DEVICE_CTRL_STAT;
1054 
1055      /**
1056       Link Capabilities register: link_capab
1057      */
1058     /* 0x08C */
1059     volatile    uint32_t  LINK_CAPAB;
1060 
1061      /**
1062       Link Control and status register: link_ctrl_stat
1063      */
1064     /* 0x090 */
1065     volatile    uint32_t  LINK_CTRL_STAT;
1066 
1067      /**
1068       Slot capabilities register: slot_capab
1069      */
1070     /* 0x094 */
1071     volatile    uint32_t  SLOT_CAPAB;
1072 
1073      /**
1074       Slot Control and status register: slot_ctrl_stat
1075      */
1076     /* 0x098 */
1077     volatile    uint32_t  SLOT_CTRL_STAT;
1078 
1079      /**
1080       Root control register: root_ctrl
1081      */
1082     /* 0x09C */
1083     volatile    uint32_t  ROOT_CTRL;
1084 
1085      /**
1086       Root status register: root_stat
1087      */
1088     /* 0x0A0 */
1089     volatile    uint32_t  ROOT_STAT;
1090 
1091      /**
1092       Device 2 Capabilities register: device2_capab
1093      */
1094     /* 0x0A4 */
1095     volatile    uint32_t  DEVICE2_CAPAB;
1096 
1097      /**
1098       Device 2 Control and status register: device2_ctrl_stat
1099      */
1100     /* 0x0A8 */
1101     volatile    uint32_t  DEVICE2_CTRL_STAT;
1102 
1103      /**
1104       Link Capabilities 2 register: link2_capab
1105      */
1106     /* 0x0AC */
1107     volatile    uint32_t  LINK2_CAPAB;
1108 
1109      /**
1110       Link Control and status 2register: link2_ctrl_stat
1111      */
1112     /* 0x0B0 */
1113     volatile    uint32_t  LINK2_CTRL_STAT;
1114 
1115      /**
1116       Slot 2 capabilities register: slot2_capab
1117      */
1118     /* 0x0B4 */
1119     volatile    uint32_t  SLOT2_CAPAB;
1120 
1121      /**
1122       Slot 2 Control and status register: slot2_ctrl_stat
1123      */
1124     /* 0x0B8 */
1125     volatile    uint32_t  SLOT2_CTRL_STAT;
1126 
1127     /* 0xBC to 0xCC */
1128     volatile    uint32_t     RESERVED3[5];
1129 
1130     /* MSI-X Capability (optional)*/
1131 
1132     /**
1133       MSI-X capability and control register: msi_x_capab_ctrl
1134      */
1135     /* 0x0D0 */
1136     volatile    uint32_t  MSI_X_CAPAB_CTRL;
1137 
1138     /**
1139       MSI-X table register: msi_x_table
1140      */
1141     /* 0x0D4 */
1142     volatile    uint32_t  MSI_X_TABLE;
1143 
1144     /**
1145       MSI-X PBA register: msi_x_pba
1146      */
1147     /* 0x0D8 */
1148     volatile    uint32_t  MSI_X_PBA;
1149 
1150     /* 0xDC */
1151     volatile    uint32_t     RESERVED4;
1152 
1153     /**
1154       MSI capability id and message control register: msi_capab_ctrl
1155      */
1156     /* 0x0E0 */
1157     volatile    uint32_t  MSI_CAPAB_CTRL;
1158 
1159     /**
1160       MSI message lower address register: msi_lower address
1161      */
1162     /* 0x0E4 */
1163     volatile    uint32_t  MSI_LOWER_ADDRESS;
1164 
1165     /**
1166       MSI message upper address register: msi_upper address
1167      */
1168     /* 0x0E8 */
1169     volatile    uint32_t  MSI_UPPER_ADDRESS;
1170 
1171     /* 0xEC */
1172     volatile    uint32_t     RESERVED5;
1173 
1174     /**
1175       MSI message data register: msi_data
1176      */
1177     /* 0x0F0 */
1178     volatile    uint32_t  MSI_DATA;
1179     /* 0xF4 */
1180     volatile    uint32_t     RESERVED6;
1181 
1182     /* Power Management Capability Structure */
1183     /**
1184        Power Management Capability register: power_mngm_capab
1185      */
1186     /* 0x0F8 */
1187     volatile    uint32_t  POWER_MNGM_CAPAB;
1188 
1189     /**
1190        Power Management control and status register: power_ctrl_stat
1191      */
1192     /* 0x0FC */
1193     volatile    uint32_t  POWER_CTRL_STAT;
1194 
1195 } PCIE_ROOT_CONF_TypeDef;
1196 
1197 /*------------------------------------------------------------------------------
1198  PCIESS sub system registers
1199 
1200 typedef struct
1201 {
1202     PCS_LANE_TypeDef        pcs_lane[4];
1203     PCS_CMN_TypeDef         pcs_cmn;
1204     PMA_LANE_TypeDef        pma_lane[4];
1205     TXPLL_SSC_TypeDef       txpll_ssc;
1206     TXPLL_TypeDef           txpll[2];
1207     PCIESS_MAIN_TypeDef     pciess_main;
1208     PCIE_BRIDGE_TypeDef     pcie_bridge[2];
1209     PCIE_END_CONF_TypeDef   pcie_end_config_space;
1210     PCIE_ROOT_CONF_TypeDef  pcie_root_config_space;
1211     PCIE_CTRL_TypeDef       pcie_ctrl[2];
1212 
1213 } PCIESS_TypeDef;
1214 */
1215 
1216 /*----------------------------------------------------------------------------*/
1217 #define PCS_LANE           PCS_LANE_TypeDef
1218 #define PCS_CMN            PCS_CMN_TypeDef
1219 #define PMA_LANE           PMA_LANE_TypeDef
1220 #define TXPLL_SSC          TXPLL_SSC_TypeDef
1221 #define TXPLL              TXPLL_TypeDef
1222 #define PCIESS_MAIN        PCIESS_MAIN_TypeDef
1223 #define PCIE_BRIDGE        PCIE_BRIDGE_TypeDef
1224 #define PCIE_END_CONF      PCIE_END_CONF_TypeDef
1225 #define PCIE_ROOT_CONF     PCIE_ROOT_CONF_TypeDef
1226 #define PCIE_CTRL          PCIE_CTRL_TypeDef
1227 
1228 /*----------------------------------------------------------------------------*/
1229 /*------------------------------------------------------------------------------
1230   PCIE Configuration Type 0 Space Registers offset definitions.
1231  */
1232 #define DEVICE_VID_DEVID            0x000u
1233 #define DEVICE_CFG_PRMSCR           0x004u
1234 #define DEVICE_CLASS_CODE           0x008u
1235 #define DEVICE_BIST_HEADER          0x00Cu
1236 #define DEVICE_BAR0                 0x010u
1237 #define DEVICE_BAR1                 0x014u
1238 #define DEVICE_BAR2                 0x018u
1239 #define DEVICE_BAR3                 0x01Cu
1240 #define DEVICE_BAR4                 0x020u
1241 #define DEVICE_BAR5                 0x024u
1242 #define DEVICE_SUBSYSTEM_ID         0x02Cu
1243 #define DEVICE_EXPAN_ROM            0x030u
1244 #define DEVICE_CAPAB_POINTER        0x034u
1245 #define DEVICE_EXPAN_ROM_BASE       0x038u
1246 #define DEVICE_INT_LINE_PIN         0x03Cu
1247 #define DEVICE_CAPAB_LIST           0x080u
1248 #define DEVICE_DEVICE_CAPAB         0x084u
1249 #define DEVICE_DEVICE_CTRL_STAT     0x088u
1250 #define DEVICE_LINK_CAPAB           0x08Cu
1251 #define DEVICE_LINK_CTRL_STAT       0x090u
1252 #define DEVICE_SLOT_CAPAB           0x094u
1253 #define DEVICE_SLOT_CTRL_STAT       0x098u
1254 #define DEVICE_ROOT_CTRL            0x09Cu
1255 #define DEVICE_ROOT_STAT            0x0A0u
1256 #define DEVICE_DEVICE2_CAPAB        0x0A4u
1257 #define DEVICE_DEVICE2_CTRL_STAT    0x0A8u
1258 #define DEVICE_LINK2_CAPAB          0x0ACu
1259 #define DEVICE_LINK2_CTRL_STAT      0x0B0u
1260 #define DEVICE_SLOT2_CAPAB          0x0B4u
1261 #define DEVICE_SLOT2_CTRL_STAT      0x0B8u
1262 #define DEVICE_MSI_X_CAPAB_CTRL     0x0D0u
1263 #define DEVICE_MSI_X_TABLE          0x0D4u
1264 #define DEVICE_MSI_X_PBA            0x0D8u
1265 #define DEVICE_MSI_CAPAB_CTRL       0x0E0u
1266 #define DEVICE_MSI_LOWER_ADDRESS    0x0E4u
1267 #define DEVICE_MSI_UPPER_ADDRESS    0x0E8u
1268 #define DEVICE_MSI_DATA             0x0F0u
1269 #define DEVICE_POWER_MNGM_CAPAB     0x0F8u
1270 #define DEVICE_POWER_CTRL_STAT      0x0FCu
1271 
1272 /*------------------------------------------------------------------------------
1273 The table below shows the base address and available address space for each of
1274 the leaf instances in the pciess system.
1275 
1276 Instance Name                       Base Address    Range
1277 
1278 pcs_lane_0                          0x004 1000      4 KBytes
1279 pcs_lane_1                          0x004 2000      4 KBytes
1280 pcs_lane_2                          0x004 4000      4 KBytes
1281 pcs_lane_3                          0x004 8000      4 KBytes
1282 pcs_cmn                             0x005 0000      4 KBytes
1283 pma_lane_0                          0x104 1000      4 KBytes
1284 pma_lane_1                          0x104 2000      4 KBytes
1285 pma_lane_2                          0x104 4000      4 KBytes
1286 pma_lane_3                          0x104 8000      4 KBytes
1287 txpll_ssc(pma_cmn)                  0x105 0000      4 KBytes
1288 tx(quad)_pll_0                      0x204 4000      4 KBytes
1289 tx(quad)_pll_1                      0x204 8000      4 KBytes
1290 pciess_main                         0x205 0000      4 KBytes
1291 
1292 pcie_top_0__g5_xpressrich3_bridge   0x300 4000      8 KBytes
1293 pcie_top_0__pcie_ctrl               0x300 6000      4 KBytes
1294 pcie_top_1__g5_xpressrich3_bridge   0x300 8000      8 KBytes
1295 pcie_top_1__pcie_ctrl               0x300 A000      4 KBytes
1296 ------------------------------------------------------------------------------*/
1297 
1298 #define PCIESS_PCS_LANE0_PHY_ADDR_OFFSET            0x00041000u
1299 #define PCIESS_PCS_LANE1_PHY_ADDR_OFFSET            0x00042000u
1300 #define PCIESS_PCS_LANE2_PHY_ADDR_OFFSET            0x00044000u
1301 #define PCIESS_PCS_LANE3_PHY_ADDR_OFFSET            0x00048000u
1302 
1303 #define PCIESS_PCS_CMN_PHY_ADDR_OFFSET              0x00050000u
1304 
1305 #define PCIESS_PMA_LANE0_PHY_ADDR_OFFSET            0x01041000u
1306 #define PCIESS_PMA_LANE1_PHY_ADDR_OFFSET            0x01042000u
1307 #define PCIESS_PMA_LANE2_PHY_ADDR_OFFSET            0x01044000u
1308 #define PCIESS_PMA_LANE3_PHY_ADDR_OFFSET            0x01048000u
1309 
1310 #define PCIESS_TXPLL_SSC_PHY_ADDR_OFFSET            0x01050000u
1311 
1312 #define PCIESS_TXPLL0_PHY_ADDR_OFFSET                0x02044000u
1313 #define PCIESS_TXPLL1_PHY_ADDR_OFFSET                0x02048000u
1314 
1315 #define PCIESS_MAIN_PHY_ADDR_OFFSET                 0x02050000u
1316 
1317 #define PCIE0_BRIDGE_PHY_ADDR_OFFSET                0x03004000u
1318 #define PCIE0_CRTL_PHY_ADDR_OFFSET                  0x03006000u
1319 
1320 #define PCIE1_BRIDGE_PHY_ADDR_OFFSET                0x03008000u
1321 #define PCIE1_CRTL_PHY_ADDR_OFFSET                  0x0300A000u
1322 
1323 #ifdef __cplusplus
1324 }
1325 #endif
1326 
1327 #endif /* PF_PCIESS_REGS_H_ */
1328