xref: /freebsd/sys/contrib/alpine-hal/al_hal_pcie_regs.h (revision d002f039aeb370370cd2cba63ad55cc4cf16c932)
1f4b37ed0SZbigniew Bodek /*-
2f4b37ed0SZbigniew Bodek ********************************************************************************
3f4b37ed0SZbigniew Bodek Copyright (C) 2015 Annapurna Labs Ltd.
4f4b37ed0SZbigniew Bodek 
5f4b37ed0SZbigniew Bodek This file may be licensed under the terms of the Annapurna Labs Commercial
6f4b37ed0SZbigniew Bodek License Agreement.
7f4b37ed0SZbigniew Bodek 
8f4b37ed0SZbigniew Bodek Alternatively, this file can be distributed under the terms of the GNU General
9f4b37ed0SZbigniew Bodek Public License V2 as published by the Free Software Foundation and can be
10f4b37ed0SZbigniew Bodek found at http://www.gnu.org/licenses/gpl-2.0.html
11f4b37ed0SZbigniew Bodek 
12f4b37ed0SZbigniew Bodek Alternatively, redistribution and use in source and binary forms, with or
13f4b37ed0SZbigniew Bodek without modification, are permitted provided that the following conditions are
14f4b37ed0SZbigniew Bodek met:
15f4b37ed0SZbigniew Bodek 
16f4b37ed0SZbigniew Bodek     *     Redistributions of source code must retain the above copyright notice,
17f4b37ed0SZbigniew Bodek this list of conditions and the following disclaimer.
18f4b37ed0SZbigniew Bodek 
19f4b37ed0SZbigniew Bodek     *     Redistributions in binary form must reproduce the above copyright
20f4b37ed0SZbigniew Bodek notice, this list of conditions and the following disclaimer in
21f4b37ed0SZbigniew Bodek the documentation and/or other materials provided with the
22f4b37ed0SZbigniew Bodek distribution.
23f4b37ed0SZbigniew Bodek 
24f4b37ed0SZbigniew Bodek THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
25f4b37ed0SZbigniew Bodek ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26f4b37ed0SZbigniew Bodek WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27f4b37ed0SZbigniew Bodek DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
28f4b37ed0SZbigniew Bodek ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29f4b37ed0SZbigniew Bodek (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30f4b37ed0SZbigniew Bodek LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
31f4b37ed0SZbigniew Bodek ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32f4b37ed0SZbigniew Bodek (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33f4b37ed0SZbigniew Bodek SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34f4b37ed0SZbigniew Bodek 
35f4b37ed0SZbigniew Bodek *******************************************************************************/
36f4b37ed0SZbigniew Bodek 
37f4b37ed0SZbigniew Bodek #ifndef __AL_HAL_PCIE_REGS_H__
38f4b37ed0SZbigniew Bodek #define __AL_HAL_PCIE_REGS_H__
39f4b37ed0SZbigniew Bodek 
40f4b37ed0SZbigniew Bodek /* Note: Definitions before the includes so axi/wrapper regs sees them */
41f4b37ed0SZbigniew Bodek 
42f4b37ed0SZbigniew Bodek /** Maximum physical functions supported */
43f4b37ed0SZbigniew Bodek #define REV1_2_MAX_NUM_OF_PFS	1
44f4b37ed0SZbigniew Bodek #define REV3_MAX_NUM_OF_PFS	4
45f4b37ed0SZbigniew Bodek #define AL_MAX_NUM_OF_PFS	4 /* the maximum between all Revisions */
46f4b37ed0SZbigniew Bodek 
47f4b37ed0SZbigniew Bodek #include "al_hal_pcie_axi_reg.h"
48f4b37ed0SZbigniew Bodek #ifndef AL_PCIE_EX
49f4b37ed0SZbigniew Bodek #include "al_hal_pcie_w_reg.h"
50f4b37ed0SZbigniew Bodek #else
51f4b37ed0SZbigniew Bodek #include "al_hal_pcie_w_reg_ex.h"
52f4b37ed0SZbigniew Bodek #endif
53f4b37ed0SZbigniew Bodek 
54f4b37ed0SZbigniew Bodek #define AL_PCIE_AXI_REGS_OFFSET			0x0
55f4b37ed0SZbigniew Bodek #define AL_PCIE_REV_1_2_APP_REGS_OFFSET		0x1000
56f4b37ed0SZbigniew Bodek #define AL_PCIE_REV_3_APP_REGS_OFFSET		0x2000
57f4b37ed0SZbigniew Bodek #define AL_PCIE_REV_1_2_CORE_CONF_BASE_OFFSET	0x2000
58f4b37ed0SZbigniew Bodek #define AL_PCIE_REV_3_CORE_CONF_BASE_OFFSET	0x10000
59f4b37ed0SZbigniew Bodek 
60f4b37ed0SZbigniew Bodek /** Maximum number of lanes supported */
61f4b37ed0SZbigniew Bodek #define REV1_2_MAX_NUM_LANES	4
62f4b37ed0SZbigniew Bodek #define REV3_MAX_NUM_LANES	8
63f4b37ed0SZbigniew Bodek #define AL_MAX_NUM_OF_LANES	8 /* the maximum between all Revisions */
64f4b37ed0SZbigniew Bodek 
65*3fc36ee0SWojciech Macek /** Number of outbound atu regions - rev 1/2 */
66*3fc36ee0SWojciech Macek #define AL_PCIE_REV_1_2_ATU_NUM_OUTBOUND_REGIONS 12
67*3fc36ee0SWojciech Macek /** Number of outbound atu regions - rev 3 */
68*3fc36ee0SWojciech Macek #define AL_PCIE_REV_3_ATU_NUM_OUTBOUND_REGIONS 16
69*3fc36ee0SWojciech Macek 
70f4b37ed0SZbigniew Bodek struct al_pcie_core_iatu_regs {
71f4b37ed0SZbigniew Bodek 	uint32_t index;
72f4b37ed0SZbigniew Bodek 	uint32_t cr1;
73f4b37ed0SZbigniew Bodek 	uint32_t cr2;
74f4b37ed0SZbigniew Bodek 	uint32_t lower_base_addr;
75f4b37ed0SZbigniew Bodek 	uint32_t upper_base_addr;
76f4b37ed0SZbigniew Bodek 	uint32_t limit_addr;
77f4b37ed0SZbigniew Bodek 	uint32_t lower_target_addr;
78f4b37ed0SZbigniew Bodek 	uint32_t upper_target_addr;
79f4b37ed0SZbigniew Bodek 	uint32_t cr3;
80f4b37ed0SZbigniew Bodek 	uint32_t rsrvd[(0x270 - 0x224) >> 2];
81f4b37ed0SZbigniew Bodek };
82f4b37ed0SZbigniew Bodek 
83f4b37ed0SZbigniew Bodek struct al_pcie_core_port_regs {
84f4b37ed0SZbigniew Bodek 	uint32_t ack_lat_rply_timer;
85f4b37ed0SZbigniew Bodek 	uint32_t reserved1[(0x10 - 0x4) >> 2];
86f4b37ed0SZbigniew Bodek 	uint32_t port_link_ctrl;
87f4b37ed0SZbigniew Bodek 	uint32_t reserved2[(0x18 - 0x14) >> 2];
88f4b37ed0SZbigniew Bodek 	uint32_t timer_ctrl_max_func_num;
89f4b37ed0SZbigniew Bodek 	uint32_t filter_mask_reg_1;
90f4b37ed0SZbigniew Bodek 	uint32_t reserved3[(0x48 - 0x20) >> 2];
91f4b37ed0SZbigniew Bodek 	uint32_t vc0_posted_rcv_q_ctrl;
92f4b37ed0SZbigniew Bodek 	uint32_t vc0_non_posted_rcv_q_ctrl;
93f4b37ed0SZbigniew Bodek 	uint32_t vc0_comp_rcv_q_ctrl;
94f4b37ed0SZbigniew Bodek 	uint32_t reserved4[(0x10C - 0x54) >> 2];
95f4b37ed0SZbigniew Bodek 	uint32_t gen2_ctrl;
96f4b37ed0SZbigniew Bodek 	uint32_t reserved5[(0x190 - 0x110) >> 2];
97f4b37ed0SZbigniew Bodek 	uint32_t gen3_ctrl;
98f4b37ed0SZbigniew Bodek 	uint32_t gen3_eq_fs_lf;
99f4b37ed0SZbigniew Bodek 	uint32_t gen3_eq_preset_to_coef_map;
100f4b37ed0SZbigniew Bodek 	uint32_t gen3_eq_preset_idx;
101f4b37ed0SZbigniew Bodek 	uint32_t reserved6;
102f4b37ed0SZbigniew Bodek 	uint32_t gen3_eq_status;
103f4b37ed0SZbigniew Bodek 	uint32_t gen3_eq_ctrl;
104f4b37ed0SZbigniew Bodek 	uint32_t reserved7[(0x1B8 - 0x1AC) >> 2];
105f4b37ed0SZbigniew Bodek 	uint32_t pipe_loopback_ctrl;
106f4b37ed0SZbigniew Bodek 	uint32_t rd_only_wr_en;
107f4b37ed0SZbigniew Bodek 	uint32_t reserved8[(0x1D0 - 0x1C0) >> 2];
108f4b37ed0SZbigniew Bodek 	uint32_t axi_slave_err_resp;
109f4b37ed0SZbigniew Bodek 	uint32_t reserved9[(0x200 - 0x1D4) >> 2];
110f4b37ed0SZbigniew Bodek 	struct al_pcie_core_iatu_regs iatu;
111f4b37ed0SZbigniew Bodek 	uint32_t reserved10[(0x448 - 0x270) >> 2];
112f4b37ed0SZbigniew Bodek };
113f4b37ed0SZbigniew Bodek 
114f4b37ed0SZbigniew Bodek struct al_pcie_core_aer_regs {
115f4b37ed0SZbigniew Bodek 	/* 0x0 - PCI Express Extended Capability Header */
116f4b37ed0SZbigniew Bodek 	uint32_t header;
117f4b37ed0SZbigniew Bodek 	/* 0x4 - Uncorrectable Error Status Register */
118f4b37ed0SZbigniew Bodek 	uint32_t uncorr_err_stat;
119f4b37ed0SZbigniew Bodek 	/* 0x8 - Uncorrectable Error Mask Register */
120f4b37ed0SZbigniew Bodek 	uint32_t uncorr_err_mask;
121f4b37ed0SZbigniew Bodek 	/* 0xc - Uncorrectable Error Severity Register */
122f4b37ed0SZbigniew Bodek 	uint32_t uncorr_err_severity;
123f4b37ed0SZbigniew Bodek 	/* 0x10 - Correctable Error Status Register */
124f4b37ed0SZbigniew Bodek 	uint32_t corr_err_stat;
125f4b37ed0SZbigniew Bodek 	/* 0x14 - Correctable Error Mask Register */
126f4b37ed0SZbigniew Bodek 	uint32_t corr_err_mask;
127f4b37ed0SZbigniew Bodek 	/* 0x18 - Advanced Error Capabilities and Control Register */
128f4b37ed0SZbigniew Bodek 	uint32_t cap_and_ctrl;
129f4b37ed0SZbigniew Bodek 	/* 0x1c - Header Log Registers */
130f4b37ed0SZbigniew Bodek 	uint32_t header_log[4];
131f4b37ed0SZbigniew Bodek 	/* 0x2c - Root Error Command Register */
132f4b37ed0SZbigniew Bodek 	uint32_t root_err_cmd;
133f4b37ed0SZbigniew Bodek 	/* 0x30 - Root Error Status Register */
134f4b37ed0SZbigniew Bodek 	uint32_t root_err_stat;
135f4b37ed0SZbigniew Bodek 	/* 0x34 - Error Source Identification Register */
136f4b37ed0SZbigniew Bodek 	uint32_t err_src_id;
137f4b37ed0SZbigniew Bodek };
138f4b37ed0SZbigniew Bodek 
139f4b37ed0SZbigniew Bodek struct al_pcie_core_reg_space_rev_1_2 {
140f4b37ed0SZbigniew Bodek 	uint32_t			config_header[0x40 >> 2];
141f4b37ed0SZbigniew Bodek 	uint32_t			pcie_pm_cap_base;
142f4b37ed0SZbigniew Bodek 	uint32_t			reserved1[(0x70 - 0x44) >> 2];
143f4b37ed0SZbigniew Bodek 	uint32_t			pcie_cap_base;
144f4b37ed0SZbigniew Bodek 	uint32_t			pcie_dev_cap_base;
145f4b37ed0SZbigniew Bodek 	uint32_t			pcie_dev_ctrl_status;
146f4b37ed0SZbigniew Bodek 	uint32_t			pcie_link_cap_base;
147f4b37ed0SZbigniew Bodek 	uint32_t			reserved2[(0xB0 - 0x80) >> 2];
148f4b37ed0SZbigniew Bodek 	uint32_t			msix_cap_base;
149f4b37ed0SZbigniew Bodek 	uint32_t			reserved3[(0x100 - 0xB4) >> 2];
150f4b37ed0SZbigniew Bodek 	struct al_pcie_core_aer_regs	aer;
151f4b37ed0SZbigniew Bodek 	uint32_t			reserved4[(0x150 -
152f4b37ed0SZbigniew Bodek 						   (0x100 +
153f4b37ed0SZbigniew Bodek 						    sizeof(struct al_pcie_core_aer_regs))) >> 2];
154f4b37ed0SZbigniew Bodek 	uint32_t			pcie_sec_ext_cap_base;
155f4b37ed0SZbigniew Bodek 	uint32_t			reserved5[(0x700 - 0x154) >> 2];
156f4b37ed0SZbigniew Bodek 	struct al_pcie_core_port_regs	port_regs;
157f4b37ed0SZbigniew Bodek 	uint32_t			reserved6[(0x1000 -
158f4b37ed0SZbigniew Bodek 						   (0x700 +
159f4b37ed0SZbigniew Bodek 						    sizeof(struct al_pcie_core_port_regs))) >> 2];
160f4b37ed0SZbigniew Bodek };
161f4b37ed0SZbigniew Bodek 
162f4b37ed0SZbigniew Bodek struct al_pcie_core_reg_space_rev_3 {
163f4b37ed0SZbigniew Bodek 	uint32_t			config_header[0x40 >> 2];
164f4b37ed0SZbigniew Bodek 	uint32_t			pcie_pm_cap_base;
165f4b37ed0SZbigniew Bodek 	uint32_t			reserved1[(0x70 - 0x44) >> 2];
166f4b37ed0SZbigniew Bodek 	uint32_t			pcie_cap_base;
167f4b37ed0SZbigniew Bodek 	uint32_t			pcie_dev_cap_base;
168f4b37ed0SZbigniew Bodek 	uint32_t			pcie_dev_ctrl_status;
169f4b37ed0SZbigniew Bodek 	uint32_t			pcie_link_cap_base;
170f4b37ed0SZbigniew Bodek 	uint32_t			reserved2[(0xB0 - 0x80) >> 2];
171f4b37ed0SZbigniew Bodek 	uint32_t			msix_cap_base;
172f4b37ed0SZbigniew Bodek 	uint32_t			reserved3[(0x100 - 0xB4) >> 2];
173f4b37ed0SZbigniew Bodek 	struct al_pcie_core_aer_regs	aer;
174f4b37ed0SZbigniew Bodek 	uint32_t			reserved4[(0x158 -
175f4b37ed0SZbigniew Bodek 						   (0x100 +
176f4b37ed0SZbigniew Bodek 						    sizeof(struct al_pcie_core_aer_regs))) >> 2];
177f4b37ed0SZbigniew Bodek 	/* pcie_sec_cap is only applicable for function 0 */
178f4b37ed0SZbigniew Bodek 	uint32_t			pcie_sec_ext_cap_base;
179f4b37ed0SZbigniew Bodek 	uint32_t			reserved5[(0x178 - 0x15C) >> 2];
180f4b37ed0SZbigniew Bodek 	/* tph capability is only applicable for rev3 */
181f4b37ed0SZbigniew Bodek 	uint32_t			tph_cap_base;
182f4b37ed0SZbigniew Bodek 	uint32_t			reserved6[(0x700 - 0x17C) >> 2];
183f4b37ed0SZbigniew Bodek 	/* port_regs is only applicable for function 0 */
184f4b37ed0SZbigniew Bodek 	struct al_pcie_core_port_regs	port_regs;
185f4b37ed0SZbigniew Bodek 	uint32_t			reserved7[(0x1000 -
186f4b37ed0SZbigniew Bodek 						   (0x700 +
187f4b37ed0SZbigniew Bodek 						    sizeof(struct al_pcie_core_port_regs))) >> 2];
188f4b37ed0SZbigniew Bodek };
189f4b37ed0SZbigniew Bodek 
190f4b37ed0SZbigniew Bodek struct al_pcie_rev3_core_reg_space {
191f4b37ed0SZbigniew Bodek 	struct al_pcie_core_reg_space_rev_3 func[REV3_MAX_NUM_OF_PFS];
192f4b37ed0SZbigniew Bodek };
193f4b37ed0SZbigniew Bodek 
194f4b37ed0SZbigniew Bodek struct al_pcie_core_reg_space {
195f4b37ed0SZbigniew Bodek 	uint32_t			*config_header;
196f4b37ed0SZbigniew Bodek 	uint32_t			*pcie_pm_cap_base;
197f4b37ed0SZbigniew Bodek 	uint32_t			*pcie_cap_base;
198f4b37ed0SZbigniew Bodek 	uint32_t			*pcie_dev_cap_base;
199f4b37ed0SZbigniew Bodek 	uint32_t			*pcie_dev_ctrl_status;
200f4b37ed0SZbigniew Bodek 	uint32_t			*pcie_link_cap_base;
201f4b37ed0SZbigniew Bodek 	uint32_t			*msix_cap_base;
202f4b37ed0SZbigniew Bodek 	struct al_pcie_core_aer_regs	*aer;
203f4b37ed0SZbigniew Bodek 	uint32_t			*pcie_sec_ext_cap_base;
204f4b37ed0SZbigniew Bodek 	uint32_t			*tph_cap_base;
205f4b37ed0SZbigniew Bodek };
206f4b37ed0SZbigniew Bodek 
207f4b37ed0SZbigniew Bodek struct al_pcie_revx_regs {
208f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_axi_regs __iomem	axi;
209f4b37ed0SZbigniew Bodek };
210f4b37ed0SZbigniew Bodek 
211f4b37ed0SZbigniew Bodek struct al_pcie_rev1_regs {
212f4b37ed0SZbigniew Bodek 	struct al_pcie_rev1_axi_regs __iomem	axi;
213f4b37ed0SZbigniew Bodek 	uint32_t reserved1[(AL_PCIE_REV_1_2_APP_REGS_OFFSET -
214f4b37ed0SZbigniew Bodek 				(AL_PCIE_AXI_REGS_OFFSET +
215f4b37ed0SZbigniew Bodek 				sizeof(struct al_pcie_rev1_axi_regs))) >> 2];
216f4b37ed0SZbigniew Bodek 	struct al_pcie_rev1_w_regs __iomem	app;
217f4b37ed0SZbigniew Bodek 	uint32_t reserved2[(AL_PCIE_REV_1_2_CORE_CONF_BASE_OFFSET -
218f4b37ed0SZbigniew Bodek 				(AL_PCIE_REV_1_2_APP_REGS_OFFSET +
219f4b37ed0SZbigniew Bodek 				sizeof(struct al_pcie_rev1_w_regs))) >> 2];
220f4b37ed0SZbigniew Bodek 	struct al_pcie_core_reg_space_rev_1_2	core_space;
221f4b37ed0SZbigniew Bodek };
222f4b37ed0SZbigniew Bodek 
223f4b37ed0SZbigniew Bodek struct al_pcie_rev2_regs {
224f4b37ed0SZbigniew Bodek 	struct al_pcie_rev2_axi_regs __iomem	axi;
225f4b37ed0SZbigniew Bodek 	uint32_t reserved1[(AL_PCIE_REV_1_2_APP_REGS_OFFSET -
226f4b37ed0SZbigniew Bodek 				(AL_PCIE_AXI_REGS_OFFSET +
227f4b37ed0SZbigniew Bodek 				sizeof(struct al_pcie_rev2_axi_regs))) >> 2];
228f4b37ed0SZbigniew Bodek 	struct al_pcie_rev2_w_regs __iomem	app;
229f4b37ed0SZbigniew Bodek 	uint32_t reserved2[(AL_PCIE_REV_1_2_CORE_CONF_BASE_OFFSET -
230f4b37ed0SZbigniew Bodek 				(AL_PCIE_REV_1_2_APP_REGS_OFFSET +
231f4b37ed0SZbigniew Bodek 				sizeof(struct al_pcie_rev2_w_regs))) >> 2];
232f4b37ed0SZbigniew Bodek 	struct al_pcie_core_reg_space_rev_1_2	core_space;
233f4b37ed0SZbigniew Bodek };
234f4b37ed0SZbigniew Bodek 
235f4b37ed0SZbigniew Bodek struct al_pcie_rev3_regs {
236f4b37ed0SZbigniew Bodek 	struct al_pcie_rev3_axi_regs __iomem	axi;
237f4b37ed0SZbigniew Bodek 	uint32_t reserved1[(AL_PCIE_REV_3_APP_REGS_OFFSET -
238f4b37ed0SZbigniew Bodek 				(AL_PCIE_AXI_REGS_OFFSET +
239f4b37ed0SZbigniew Bodek 				sizeof(struct al_pcie_rev3_axi_regs))) >> 2];
240f4b37ed0SZbigniew Bodek 	struct al_pcie_rev3_w_regs __iomem	app;
241f4b37ed0SZbigniew Bodek 	uint32_t reserved2[(AL_PCIE_REV_3_CORE_CONF_BASE_OFFSET -
242f4b37ed0SZbigniew Bodek 				(AL_PCIE_REV_3_APP_REGS_OFFSET +
243f4b37ed0SZbigniew Bodek 				sizeof(struct al_pcie_rev3_w_regs))) >> 2];
244f4b37ed0SZbigniew Bodek 	struct al_pcie_rev3_core_reg_space	core_space;
245f4b37ed0SZbigniew Bodek };
246f4b37ed0SZbigniew Bodek 
247f4b37ed0SZbigniew Bodek struct al_pcie_axi_ctrl {
248f4b37ed0SZbigniew Bodek 	uint32_t *global;
249*3fc36ee0SWojciech Macek 	uint32_t *master_rctl;
250f4b37ed0SZbigniew Bodek 	uint32_t *master_arctl;
251f4b37ed0SZbigniew Bodek 	uint32_t *master_awctl;
252*3fc36ee0SWojciech Macek 	uint32_t *master_ctl;
253f4b37ed0SZbigniew Bodek 	uint32_t *slv_ctl;
254f4b37ed0SZbigniew Bodek };
255f4b37ed0SZbigniew Bodek 
256f4b37ed0SZbigniew Bodek struct al_pcie_axi_ob_ctrl {
257f4b37ed0SZbigniew Bodek 	uint32_t *cfg_target_bus;
258f4b37ed0SZbigniew Bodek 	uint32_t *cfg_control;
259f4b37ed0SZbigniew Bodek 	uint32_t *io_start_l;
260f4b37ed0SZbigniew Bodek 	uint32_t *io_start_h;
261f4b37ed0SZbigniew Bodek 	uint32_t *io_limit_l;
262f4b37ed0SZbigniew Bodek 	uint32_t *io_limit_h;
263*3fc36ee0SWojciech Macek 	uint32_t *io_addr_mask_h; /* Rev 3 only */
264*3fc36ee0SWojciech Macek 	uint32_t *ar_msg_addr_mask_h; /* Rev 3 only */
265*3fc36ee0SWojciech Macek 	uint32_t *aw_msg_addr_mask_h; /* Rev 3 only */
266*3fc36ee0SWojciech Macek 	uint32_t *tgtid_reg_ovrd; /* Rev 2/3 only */
267*3fc36ee0SWojciech Macek 	uint32_t *addr_high_reg_ovrd_value; /* Rev 2/3 only */
268*3fc36ee0SWojciech Macek 	uint32_t *addr_high_reg_ovrd_sel; /* Rev 2/3 only */
269*3fc36ee0SWojciech Macek 	uint32_t *addr_size_replace; /* Rev 2/3 only */
270f4b37ed0SZbigniew Bodek };
271f4b37ed0SZbigniew Bodek 
272f4b37ed0SZbigniew Bodek struct al_pcie_axi_pcie_global {
273f4b37ed0SZbigniew Bodek 	uint32_t *conf;
274f4b37ed0SZbigniew Bodek };
275f4b37ed0SZbigniew Bodek 
276f4b37ed0SZbigniew Bodek struct al_pcie_axi_conf {
277f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane0;
278f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane1;
279f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane2;
280f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane3;
281f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane4;
282f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane5;
283f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane6;
284f4b37ed0SZbigniew Bodek 	uint32_t *zero_lane7;
285f4b37ed0SZbigniew Bodek };
286f4b37ed0SZbigniew Bodek 
287f4b37ed0SZbigniew Bodek struct al_pcie_axi_status {
288f4b37ed0SZbigniew Bodek 	uint32_t *lane[AL_MAX_NUM_OF_LANES];
289f4b37ed0SZbigniew Bodek };
290f4b37ed0SZbigniew Bodek 
291f4b37ed0SZbigniew Bodek struct al_pcie_axi_parity {
292f4b37ed0SZbigniew Bodek 	uint32_t *en_axi;
293f4b37ed0SZbigniew Bodek };
294f4b37ed0SZbigniew Bodek 
295f4b37ed0SZbigniew Bodek struct al_pcie_axi_ordering {
296f4b37ed0SZbigniew Bodek 	uint32_t *pos_cntl;
297f4b37ed0SZbigniew Bodek };
298f4b37ed0SZbigniew Bodek 
299f4b37ed0SZbigniew Bodek struct al_pcie_axi_pre_configuration {
300f4b37ed0SZbigniew Bodek 	uint32_t *pcie_core_setup;
301f4b37ed0SZbigniew Bodek };
302f4b37ed0SZbigniew Bodek 
303f4b37ed0SZbigniew Bodek struct al_pcie_axi_init_fc {
304f4b37ed0SZbigniew Bodek 	uint32_t *cfg;
305f4b37ed0SZbigniew Bodek };
306f4b37ed0SZbigniew Bodek 
307f4b37ed0SZbigniew Bodek struct al_pcie_axi_attr_ovrd {
308f4b37ed0SZbigniew Bodek 	uint32_t *write_msg_ctrl_0;
309f4b37ed0SZbigniew Bodek 	uint32_t *write_msg_ctrl_1;
310f4b37ed0SZbigniew Bodek 	uint32_t *pf_sel;
311f4b37ed0SZbigniew Bodek };
312f4b37ed0SZbigniew Bodek 
313f4b37ed0SZbigniew Bodek struct al_pcie_axi_pf_axi_attr_ovrd {
314f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_0;
315f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_1;
316f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_2;
317f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_3;
318f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_4;
319f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_5;
320f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_6;
321f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_7;
322f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_8;
323f4b37ed0SZbigniew Bodek 	uint32_t *func_ctrl_9;
324f4b37ed0SZbigniew Bodek };
325f4b37ed0SZbigniew Bodek 
326f4b37ed0SZbigniew Bodek struct al_pcie_axi_msg_attr_axuser_table {
327f4b37ed0SZbigniew Bodek 	uint32_t *entry_vec;
328f4b37ed0SZbigniew Bodek };
329f4b37ed0SZbigniew Bodek 
330f4b37ed0SZbigniew Bodek struct al_pcie_axi_regs {
331f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_ctrl ctrl;
332f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_ob_ctrl ob_ctrl;
333f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_pcie_global pcie_global;
334f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_conf conf;
335f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_status status;
336f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_parity parity;
337f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_ordering ordering;
338f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_pre_configuration pre_configuration;
339f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_init_fc init_fc;
340f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_axi_int_grp_a_axi *int_grp_a;
341f4b37ed0SZbigniew Bodek 	/* Rev3 only */
342f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_attr_ovrd axi_attr_ovrd;
343f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_pf_axi_attr_ovrd pf_axi_attr_ovrd[REV3_MAX_NUM_OF_PFS];
344f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_msg_attr_axuser_table msg_attr_axuser_table;
345f4b37ed0SZbigniew Bodek };
346f4b37ed0SZbigniew Bodek 
347f4b37ed0SZbigniew Bodek struct al_pcie_w_global_ctrl {
348f4b37ed0SZbigniew Bodek 	uint32_t *port_init;
349f4b37ed0SZbigniew Bodek 	uint32_t *pm_control;
350f4b37ed0SZbigniew Bodek 	uint32_t *events_gen[REV3_MAX_NUM_OF_PFS];
351f4b37ed0SZbigniew Bodek 	uint32_t *corr_err_sts_int;
352f4b37ed0SZbigniew Bodek 	uint32_t *uncorr_err_sts_int;
353f4b37ed0SZbigniew Bodek 	uint32_t *sris_kp_counter;
354f4b37ed0SZbigniew Bodek };
355f4b37ed0SZbigniew Bodek 
356f4b37ed0SZbigniew Bodek struct al_pcie_w_soc_int {
357*3fc36ee0SWojciech Macek 	uint32_t *status_0;
358*3fc36ee0SWojciech Macek 	uint32_t *status_1;
359*3fc36ee0SWojciech Macek 	uint32_t *status_2;
360*3fc36ee0SWojciech Macek 	uint32_t *status_3; /* Rev 2/3 only */
361f4b37ed0SZbigniew Bodek 	uint32_t *mask_inta_leg_0;
362*3fc36ee0SWojciech Macek 	uint32_t *mask_inta_leg_1;
363*3fc36ee0SWojciech Macek 	uint32_t *mask_inta_leg_2;
364f4b37ed0SZbigniew Bodek 	uint32_t *mask_inta_leg_3; /* Rev 2/3 only */
365f4b37ed0SZbigniew Bodek 	uint32_t *mask_msi_leg_0;
366*3fc36ee0SWojciech Macek 	uint32_t *mask_msi_leg_1;
367*3fc36ee0SWojciech Macek 	uint32_t *mask_msi_leg_2;
368f4b37ed0SZbigniew Bodek 	uint32_t *mask_msi_leg_3; /* Rev 2/3 only */
369f4b37ed0SZbigniew Bodek };
370f4b37ed0SZbigniew Bodek struct al_pcie_w_atu {
371f4b37ed0SZbigniew Bodek 	uint32_t *in_mask_pair;
372f4b37ed0SZbigniew Bodek 	uint32_t *out_mask_pair;
373*3fc36ee0SWojciech Macek 	uint32_t *reg_out_mask; /* Rev 3 only */
374f4b37ed0SZbigniew Bodek };
375f4b37ed0SZbigniew Bodek 
376f4b37ed0SZbigniew Bodek struct al_pcie_w_regs {
377f4b37ed0SZbigniew Bodek 	struct al_pcie_w_global_ctrl		global_ctrl;
378f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_debug		*debug;
379f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_ap_user_send_msg	*ap_user_send_msg;
380f4b37ed0SZbigniew Bodek 	struct al_pcie_w_soc_int		soc_int[REV3_MAX_NUM_OF_PFS];
381f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_cntl_gen		*ctrl_gen;
382f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_parity		*parity;
383f4b37ed0SZbigniew Bodek 	struct al_pcie_w_atu			atu;
384f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_status_per_func	*status_per_func[REV3_MAX_NUM_OF_PFS];
385f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_int_grp		*int_grp_a;
386f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_int_grp		*int_grp_b;
387f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_int_grp		*int_grp_c;
388f4b37ed0SZbigniew Bodek 	struct al_pcie_revx_w_int_grp		*int_grp_d;
389*3fc36ee0SWojciech Macek 	struct al_pcie_rev3_w_cfg_func_ext	*cfg_func_ext;  /* Rev 3 only */
390f4b37ed0SZbigniew Bodek };
391f4b37ed0SZbigniew Bodek 
392f4b37ed0SZbigniew Bodek struct al_pcie_regs {
393f4b37ed0SZbigniew Bodek 	struct al_pcie_axi_regs		axi;
394f4b37ed0SZbigniew Bodek 	struct al_pcie_w_regs		app;
395f4b37ed0SZbigniew Bodek 	struct al_pcie_core_port_regs	*port_regs;
396f4b37ed0SZbigniew Bodek 	struct al_pcie_core_reg_space	core_space[REV3_MAX_NUM_OF_PFS];
397f4b37ed0SZbigniew Bodek };
398f4b37ed0SZbigniew Bodek 
399f4b37ed0SZbigniew Bodek #define PCIE_AXI_MISC_PCIE_GLOBAL_CONF_DEV_TYPE_EP	0
400f4b37ed0SZbigniew Bodek #define PCIE_AXI_MISC_PCIE_GLOBAL_CONF_DEV_TYPE_RC	4
401f4b37ed0SZbigniew Bodek 
402f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN2_CTRL_DIRECT_SPEED_CHANGE		AL_BIT(17)
403f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN2_CTRL_TX_SWING_LOW_SHIFT		18
404f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN2_CTRL_TX_COMPLIANCE_RCV_SHIFT	19
405f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN2_CTRL_DEEMPHASIS_SET_SHIFT	20
406f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN2_CTRL_NUM_OF_LANES_MASK		AL_FIELD_MASK(12, 8)
407f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN2_CTRL_NUM_OF_LANES_SHIFT		8
408f4b37ed0SZbigniew Bodek 
409f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_CTRL_EQ_PHASE_2_3_DISABLE_SHIFT	9
410f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_CTRL_EQ_DISABLE_SHIFT		16
411f4b37ed0SZbigniew Bodek 
412f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_EQ_LF_SHIFT			0
413f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_EQ_LF_MASK			0x3f
414f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_EQ_FS_SHIFT			6
415f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_EQ_FS_MASK			(0x3f << PCIE_PORT_GEN3_EQ_FS_SHIFT)
416f4b37ed0SZbigniew Bodek 
417f4b37ed0SZbigniew Bodek #define PCIE_PORT_LINK_CTRL_LB_EN_SHIFT			2
418f4b37ed0SZbigniew Bodek #define PCIE_PORT_LINK_CTRL_FAST_LINK_EN_SHIFT		7
419f4b37ed0SZbigniew Bodek #define PCIE_PORT_LINK_CTRL_LINK_CAPABLE_MASK		AL_FIELD_MASK(21, 16)
420f4b37ed0SZbigniew Bodek #define PCIE_PORT_LINK_CTRL_LINK_CAPABLE_SHIFT		16
421f4b37ed0SZbigniew Bodek 
422f4b37ed0SZbigniew Bodek #define PCIE_PORT_PIPE_LOOPBACK_CTRL_PIPE_LB_EN_SHIFT	31
423f4b37ed0SZbigniew Bodek 
424f4b37ed0SZbigniew Bodek #define PCIE_PORT_AXI_SLAVE_ERR_RESP_ALL_MAPPING_SHIFT	0
425f4b37ed0SZbigniew Bodek 
426f4b37ed0SZbigniew Bodek /** timer_ctrl_max_func_num register
427f4b37ed0SZbigniew Bodek  * Max physical function number (for example: 0 for 1PF, 3 for 4PFs)
428f4b37ed0SZbigniew Bodek  */
429f4b37ed0SZbigniew Bodek #define PCIE_PORT_GEN3_MAX_FUNC_NUM			AL_FIELD_MASK(7, 0)
430f4b37ed0SZbigniew Bodek 
431f4b37ed0SZbigniew Bodek /* filter_mask_reg_1 register */
432f4b37ed0SZbigniew Bodek /**
433f4b37ed0SZbigniew Bodek  * SKP Interval Value.
434f4b37ed0SZbigniew Bodek  * The number of symbol times to wait between transmitting SKP ordered sets
435f4b37ed0SZbigniew Bodek  */
436f4b37ed0SZbigniew Bodek #define PCIE_FLT_MASK_SKP_INT_VAL_MASK			AL_FIELD_MASK(10, 0)
437f4b37ed0SZbigniew Bodek 
438f4b37ed0SZbigniew Bodek /*
439f4b37ed0SZbigniew Bodek  * 0: Treat Function MisMatched TLPs as UR
440f4b37ed0SZbigniew Bodek  * 1: Treat Function MisMatched TLPs as Supported
441f4b37ed0SZbigniew Bodek  */
442f4b37ed0SZbigniew Bodek #define CX_FLT_MASK_UR_FUNC_MISMATCH			AL_BIT(16)
443f4b37ed0SZbigniew Bodek 
444f4b37ed0SZbigniew Bodek /*
445f4b37ed0SZbigniew Bodek  * 0: Treat CFG type1 TLPs as UR for EP; Supported for RC
446f4b37ed0SZbigniew Bodek  * 1: Treat CFG type1 TLPs as Supported for EP; UR for RC
447f4b37ed0SZbigniew Bodek  */
448f4b37ed0SZbigniew Bodek #define CX_FLT_MASK_CFG_TYPE1_RE_AS_UR			AL_BIT(19)
449f4b37ed0SZbigniew Bodek 
450f4b37ed0SZbigniew Bodek /*
451f4b37ed0SZbigniew Bodek  * 0: Enforce requester id match for received CPL TLPs.
452f4b37ed0SZbigniew Bodek  *    A violation results in cpl_abort, and possibly AER of unexp_cpl_err,
453f4b37ed0SZbigniew Bodek  *    cpl_rcvd_ur, cpl_rcvd_ca
454f4b37ed0SZbigniew Bodek  * 1: Mask requester id match for received CPL TLPs
455f4b37ed0SZbigniew Bodek  */
456f4b37ed0SZbigniew Bodek #define CX_FLT_MASK_CPL_REQID_MATCH			AL_BIT(22)
457f4b37ed0SZbigniew Bodek 
458f4b37ed0SZbigniew Bodek /*
459f4b37ed0SZbigniew Bodek  * 0: Enforce function match for received CPL TLPs.
460f4b37ed0SZbigniew Bodek  *    A violation results in cpl_abort, and possibly AER of unexp_cpl_err,
461f4b37ed0SZbigniew Bodek  *    cpl_rcvd_ur, cpl_rcvd_ca
462f4b37ed0SZbigniew Bodek  * 1: Mask function match for received CPL TLPs
463f4b37ed0SZbigniew Bodek  */
464f4b37ed0SZbigniew Bodek #define CX_FLT_MASK_CPL_FUNC_MATCH			AL_BIT(23)
465f4b37ed0SZbigniew Bodek 
466f4b37ed0SZbigniew Bodek /* vc0_posted_rcv_q_ctrl register */
467f4b37ed0SZbigniew Bodek #define RADM_PQ_HCRD_VC0_MASK				AL_FIELD_MASK(19, 12)
468f4b37ed0SZbigniew Bodek #define RADM_PQ_HCRD_VC0_SHIFT				12
469f4b37ed0SZbigniew Bodek 
470f4b37ed0SZbigniew Bodek /* vc0_non_posted_rcv_q_ctrl register */
471f4b37ed0SZbigniew Bodek #define RADM_NPQ_HCRD_VC0_MASK				AL_FIELD_MASK(19, 12)
472f4b37ed0SZbigniew Bodek #define RADM_NPQ_HCRD_VC0_SHIFT				12
473f4b37ed0SZbigniew Bodek 
474f4b37ed0SZbigniew Bodek /* vc0_comp_rcv_q_ctrl register */
475f4b37ed0SZbigniew Bodek #define RADM_CPLQ_HCRD_VC0_MASK				AL_FIELD_MASK(19, 12)
476f4b37ed0SZbigniew Bodek #define RADM_CPLQ_HCRD_VC0_SHIFT			12
477f4b37ed0SZbigniew Bodek 
478f4b37ed0SZbigniew Bodek /**** iATU, Control Register 1 ****/
479f4b37ed0SZbigniew Bodek 
480f4b37ed0SZbigniew Bodek /**
481f4b37ed0SZbigniew Bodek  * When the Address and BAR matching logic in the core indicate that a MEM-I/O
482f4b37ed0SZbigniew Bodek  * transaction matches a BAR in the function corresponding to this value, then
483f4b37ed0SZbigniew Bodek  * address translation proceeds. This check is only performed if the "Function
484f4b37ed0SZbigniew Bodek  * Number Match Enable" bit of the "iATU Control 2 Register" is set
485f4b37ed0SZbigniew Bodek  */
486f4b37ed0SZbigniew Bodek #define PCIE_IATU_CR1_FUNC_NUM_MASK			AL_FIELD_MASK(24, 20)
487f4b37ed0SZbigniew Bodek #define PCIE_IATU_CR1_FUNC_NUM_SHIFT			20
488f4b37ed0SZbigniew Bodek 
489f4b37ed0SZbigniew Bodek /**** iATU, Control Register 2 ****/
490f4b37ed0SZbigniew Bodek /** For outbound regions, the Function Number Translation Bypass mode enables
491f4b37ed0SZbigniew Bodek  *  taking the function number of the translated TLP from the PCIe core
492f4b37ed0SZbigniew Bodek  *  interface and not from the "Function Number" field of CR1.
493f4b37ed0SZbigniew Bodek  *  For inbound regions, this bit should be asserted when physical function
494f4b37ed0SZbigniew Bodek  *  match mode needs to be enabled
495f4b37ed0SZbigniew Bodek  */
496f4b37ed0SZbigniew Bodek #define PCIE_IATU_CR2_FUNC_NUM_TRANS_BYPASS_FUNC_MATCH_ENABLE_MASK	AL_BIT(19)
497f4b37ed0SZbigniew Bodek #define PCIE_IATU_CR2_FUNC_NUM_TRANS_BYPASS_FUNC_MATCH_ENABLE_SHIFT	19
498f4b37ed0SZbigniew Bodek 
499f4b37ed0SZbigniew Bodek /* pcie_dev_ctrl_status register */
500f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_CORR_ERR_REPORT_EN	AL_BIT(0)
501f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_NON_FTL_ERR_REPORT_EN	AL_BIT(1)
502f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_FTL_ERR_REPORT_EN	AL_BIT(2)
503f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_UNSUP_REQ_REPORT_EN	AL_BIT(3)
504f4b37ed0SZbigniew Bodek 
505f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_MPS_MASK		AL_FIELD_MASK(7, 5)
506f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_MPS_SHIFT		5
507f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_MPS_VAL_256		(1 << PCIE_PORT_DEV_CTRL_STATUS_MPS_SHIFT)
508f4b37ed0SZbigniew Bodek 
509f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_MRRS_MASK		AL_FIELD_MASK(14, 12)
510f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_MRRS_SHIFT		12
511f4b37ed0SZbigniew Bodek #define PCIE_PORT_DEV_CTRL_STATUS_MRRS_VAL_256		(1 << PCIE_PORT_DEV_CTRL_STATUS_MRRS_SHIFT)
512f4b37ed0SZbigniew Bodek 
513f4b37ed0SZbigniew Bodek /******************************************************************************
514f4b37ed0SZbigniew Bodek  * AER registers
515f4b37ed0SZbigniew Bodek  ******************************************************************************/
516f4b37ed0SZbigniew Bodek /* PCI Express Extended Capability ID */
517f4b37ed0SZbigniew Bodek #define PCIE_AER_CAP_ID_MASK			AL_FIELD_MASK(15, 0)
518f4b37ed0SZbigniew Bodek #define PCIE_AER_CAP_ID_SHIFT			0
519f4b37ed0SZbigniew Bodek #define PCIE_AER_CAP_ID_VAL			1
520f4b37ed0SZbigniew Bodek /* Capability Version */
521f4b37ed0SZbigniew Bodek #define PCIE_AER_CAP_VER_MASK			AL_FIELD_MASK(19, 16)
522f4b37ed0SZbigniew Bodek #define PCIE_AER_CAP_VER_SHIFT			16
523f4b37ed0SZbigniew Bodek #define PCIE_AER_CAP_VER_VAL			2
524f4b37ed0SZbigniew Bodek 
525f4b37ed0SZbigniew Bodek /* First Error Pointer */
526f4b37ed0SZbigniew Bodek #define PCIE_AER_CTRL_STAT_FIRST_ERR_PTR_MASK		AL_FIELD_MASK(4, 0)
527f4b37ed0SZbigniew Bodek #define PCIE_AER_CTRL_STAT_FIRST_ERR_PTR_SHIFT		0
528f4b37ed0SZbigniew Bodek /* ECRC Generation Capability */
529f4b37ed0SZbigniew Bodek #define PCIE_AER_CTRL_STAT_ECRC_GEN_SUPPORTED		AL_BIT(5)
530f4b37ed0SZbigniew Bodek /* ECRC Generation Enable */
531f4b37ed0SZbigniew Bodek #define PCIE_AER_CTRL_STAT_ECRC_GEN_EN			AL_BIT(6)
532f4b37ed0SZbigniew Bodek /* ECRC Check Capable */
533f4b37ed0SZbigniew Bodek #define PCIE_AER_CTRL_STAT_ECRC_CHK_SUPPORTED		AL_BIT(7)
534f4b37ed0SZbigniew Bodek /* ECRC Check Enable */
535f4b37ed0SZbigniew Bodek #define PCIE_AER_CTRL_STAT_ECRC_CHK_EN			AL_BIT(8)
536f4b37ed0SZbigniew Bodek 
537f4b37ed0SZbigniew Bodek /* Correctable Error Reporting Enable */
538f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_CMD_CORR_ERR_RPRT_EN		AL_BIT(0)
539f4b37ed0SZbigniew Bodek /* Non-Fatal Error Reporting Enable */
540f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_CMD_NON_FTL_ERR_RPRT_EN	AL_BIT(1)
541f4b37ed0SZbigniew Bodek /* Fatal Error Reporting Enable */
542f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_CMD_FTL_ERR_RPRT_EN		AL_BIT(2)
543f4b37ed0SZbigniew Bodek 
544f4b37ed0SZbigniew Bodek /* ERR_COR Received */
545f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_CORR_ERR			AL_BIT(0)
546f4b37ed0SZbigniew Bodek /* Multiple ERR_COR Received */
547f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_CORR_ERR_MULTI		AL_BIT(1)
548f4b37ed0SZbigniew Bodek /* ERR_FATAL/NONFATAL Received */
549f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_FTL_NON_FTL_ERR		AL_BIT(2)
550f4b37ed0SZbigniew Bodek /* Multiple ERR_FATAL/NONFATAL Received */
551f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_FTL_NON_FTL_ERR_MULTI	AL_BIT(3)
552f4b37ed0SZbigniew Bodek /* First Uncorrectable Fatal */
553f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_FIRST_UNCORR_FTL		AL_BIT(4)
554f4b37ed0SZbigniew Bodek /* Non-Fatal Error Messages Received */
555f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_NON_FTL_RCVD		AL_BIT(5)
556f4b37ed0SZbigniew Bodek /* Fatal Error Messages Received */
557f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_FTL_RCVD			AL_BIT(6)
558f4b37ed0SZbigniew Bodek /* Advanced Error Interrupt Message Number */
559f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_ERR_INT_MSG_NUM_MASK	AL_FIELD_MASK(31, 27)
560f4b37ed0SZbigniew Bodek #define PCIE_AER_ROOT_ERR_STAT_ERR_INT_MSG_NUM_SHIFT	27
561f4b37ed0SZbigniew Bodek 
562f4b37ed0SZbigniew Bodek /* ERR_COR Source Identification */
563f4b37ed0SZbigniew Bodek #define PCIE_AER_SRC_ID_CORR_ERR_MASK			AL_FIELD_MASK(15, 0)
564f4b37ed0SZbigniew Bodek #define PCIE_AER_SRC_ID_CORR_ERR_SHIFT			0
565f4b37ed0SZbigniew Bodek /* ERR_FATAL/NONFATAL Source Identification */
566f4b37ed0SZbigniew Bodek #define PCIE_AER_SRC_ID_CORR_ERR_FTL_NON_FTL_MASK	AL_FIELD_MASK(31, 16)
567f4b37ed0SZbigniew Bodek #define PCIE_AER_SRC_ID_CORR_ERR_FTL_NON_FTL_SHIFT	16
568f4b37ed0SZbigniew Bodek 
569f4b37ed0SZbigniew Bodek /* AER message */
570f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_REQID_MASK				AL_FIELD_MASK(31, 16)
571f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_REQID_SHIFT			16
572f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_TYPE_MASK				AL_FIELD_MASK(15, 8)
573f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_TYPE_SHIFT				8
574f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_RESERVED				AL_FIELD_MASK(7, 1)
575f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_VALID				AL_BIT(0)
576f4b37ed0SZbigniew Bodek /* AER message ack */
577f4b37ed0SZbigniew Bodek #define PCIE_AER_MSG_ACK				AL_BIT(0)
578f4b37ed0SZbigniew Bodek /* AER errors definitions */
579f4b37ed0SZbigniew Bodek #define AL_PCIE_AER_TYPE_CORR				(0x30)
580f4b37ed0SZbigniew Bodek #define AL_PCIE_AER_TYPE_NON_FATAL			(0x31)
581f4b37ed0SZbigniew Bodek #define AL_PCIE_AER_TYPE_FATAL				(0x33)
582f4b37ed0SZbigniew Bodek /* Requester ID Bus */
583f4b37ed0SZbigniew Bodek #define AL_PCIE_REQID_BUS_NUM_SHIFT			(8)
584f4b37ed0SZbigniew Bodek 
585f4b37ed0SZbigniew Bodek /******************************************************************************
586f4b37ed0SZbigniew Bodek  * TPH registers
587f4b37ed0SZbigniew Bodek  ******************************************************************************/
588f4b37ed0SZbigniew Bodek #define PCIE_TPH_NEXT_POINTER				AL_FIELD_MASK(31, 20)
589f4b37ed0SZbigniew Bodek 
590f4b37ed0SZbigniew Bodek /******************************************************************************
591f4b37ed0SZbigniew Bodek  * Config Header registers
592f4b37ed0SZbigniew Bodek  ******************************************************************************/
593f4b37ed0SZbigniew Bodek /**
594f4b37ed0SZbigniew Bodek  * see BIST_HEADER_TYPE_LATENCY_CACHE_LINE_SIZE_REG in core spec
595f4b37ed0SZbigniew Bodek  * Note: valid only for EP mode
596f4b37ed0SZbigniew Bodek  */
597f4b37ed0SZbigniew Bodek #define PCIE_BIST_HEADER_TYPE_BASE		0xc
598f4b37ed0SZbigniew Bodek #define PCIE_BIST_HEADER_TYPE_MULTI_FUNC_MASK	AL_BIT(23)
599f4b37ed0SZbigniew Bodek 
600f4b37ed0SZbigniew Bodek /******************************************************************************
601f4b37ed0SZbigniew Bodek  * SRIS KP counters default values
602f4b37ed0SZbigniew Bodek  ******************************************************************************/
603f4b37ed0SZbigniew Bodek #define PCIE_SRIS_KP_COUNTER_GEN3_DEFAULT_VAL	(0x24)
604f4b37ed0SZbigniew Bodek #define PCIE_SRIS_KP_COUNTER_GEN21_DEFAULT_VAL	(0x4B)
605f4b37ed0SZbigniew Bodek 
606f4b37ed0SZbigniew Bodek #endif
607