1/* SPDX-License-Identifier: GPL-2.0 */
2/* Marvell Octeon EP (EndPoint) Ethernet Driver
3 *
4 * Copyright (C) 2020 Marvell.
5 *
6 */
7
8#ifndef _OCTEP_REGS_CNXK_PF_H_
9#define _OCTEP_REGS_CNXK_PF_H_
10
11/* ############################ RST ######################### */
12#define CNXK_RST_BOOT 0x000087E006001600ULL
13#define CNXK_RST_CHIP_DOMAIN_W1S 0x000087E006001810ULL
14#define CNXK_RST_CORE_DOMAIN_W1S 0x000087E006001820ULL
15#define CNXK_RST_CORE_DOMAIN_W1C 0x000087E006001828ULL
16
17#define CNXK_CONFIG_XPANSION_BAR 0x38
18#define CNXK_CONFIG_PCIE_CAP 0x70
19#define CNXK_CONFIG_PCIE_DEVCAP 0x74
20#define CNXK_CONFIG_PCIE_DEVCTL 0x78
21#define CNXK_CONFIG_PCIE_LINKCAP 0x7C
22#define CNXK_CONFIG_PCIE_LINKCTL 0x80
23#define CNXK_CONFIG_PCIE_SLOTCAP 0x84
24#define CNXK_CONFIG_PCIE_SLOTCTL 0x88
25
26#define CNXK_PCIE_SRIOV_FDL 0x188 /* 0x98 */
27#define CNXK_PCIE_SRIOV_FDL_BIT_POS 0x10
28#define CNXK_PCIE_SRIOV_FDL_MASK 0xFF
29
30#define CNXK_CONFIG_PCIE_FLTMSK 0x720
31
32/* ################# Offsets of RING, EPF, MAC ######################### */
33#define CNXK_RING_OFFSET (0x1ULL << 17)
34#define CNXK_EPF_OFFSET (0x1ULL << 25)
35#define CNXK_MAC_OFFSET (0x1ULL << 4)
36#define CNXK_BIT_ARRAY_OFFSET (0x1ULL << 4)
37#define CNXK_EPVF_RING_OFFSET (0x1ULL << 4)
38
39/* ################# Scratch Registers ######################### */
40#define CNXK_SDP_EPF_SCRATCH 0x209E0
41
42/* ################# Window Registers ######################### */
43#define CNXK_SDP_WIN_WR_ADDR64 0x20000
44#define CNXK_SDP_WIN_RD_ADDR64 0x20010
45#define CNXK_SDP_WIN_WR_DATA64 0x20020
46#define CNXK_SDP_WIN_WR_MASK_REG 0x20030
47#define CNXK_SDP_WIN_RD_DATA64 0x20040
48
49#define CNXK_SDP_MAC_NUMBER 0x2C100
50
51/* ################# Global Previliged registers ######################### */
52#define CNXK_SDP_EPF_RINFO 0x209F0
53
54#define CNXK_SDP_EPF_RINFO_SRN(val) ((val) & 0x7F)
55#define CNXK_SDP_EPF_RINFO_RPVF(val) (((val) >> 32) & 0xF)
56#define CNXK_SDP_EPF_RINFO_NVFS(val) (((val) >> 48) & 0x7F)
57
58/* SDP Function select */
59#define CNXK_SDP_FUNC_SEL_EPF_BIT_POS 7
60#define CNXK_SDP_FUNC_SEL_FUNC_BIT_POS 0
61
62/* ##### RING IN (Into device from PCI: Tx Ring) REGISTERS #### */
63#define CNXK_SDP_R_IN_CONTROL_START 0x10000
64#define CNXK_SDP_R_IN_ENABLE_START 0x10010
65#define CNXK_SDP_R_IN_INSTR_BADDR_START 0x10020
66#define CNXK_SDP_R_IN_INSTR_RSIZE_START 0x10030
67#define CNXK_SDP_R_IN_INSTR_DBELL_START 0x10040
68#define CNXK_SDP_R_IN_CNTS_START 0x10050
69#define CNXK_SDP_R_IN_INT_LEVELS_START 0x10060
70#define CNXK_SDP_R_IN_PKT_CNT_START 0x10080
71#define CNXK_SDP_R_IN_BYTE_CNT_START 0x10090
72
73#define CNXK_SDP_R_IN_CONTROL(ring) \
74 (CNXK_SDP_R_IN_CONTROL_START + ((ring) * CNXK_RING_OFFSET))
75
76#define CNXK_SDP_R_IN_ENABLE(ring) \
77 (CNXK_SDP_R_IN_ENABLE_START + ((ring) * CNXK_RING_OFFSET))
78
79#define CNXK_SDP_R_IN_INSTR_BADDR(ring) \
80 (CNXK_SDP_R_IN_INSTR_BADDR_START + ((ring) * CNXK_RING_OFFSET))
81
82#define CNXK_SDP_R_IN_INSTR_RSIZE(ring) \
83 (CNXK_SDP_R_IN_INSTR_RSIZE_START + ((ring) * CNXK_RING_OFFSET))
84
85#define CNXK_SDP_R_IN_INSTR_DBELL(ring) \
86 (CNXK_SDP_R_IN_INSTR_DBELL_START + ((ring) * CNXK_RING_OFFSET))
87
88#define CNXK_SDP_R_IN_CNTS(ring) \
89 (CNXK_SDP_R_IN_CNTS_START + ((ring) * CNXK_RING_OFFSET))
90
91#define CNXK_SDP_R_IN_INT_LEVELS(ring) \
92 (CNXK_SDP_R_IN_INT_LEVELS_START + ((ring) * CNXK_RING_OFFSET))
93
94#define CNXK_SDP_R_IN_PKT_CNT(ring) \
95 (CNXK_SDP_R_IN_PKT_CNT_START + ((ring) * CNXK_RING_OFFSET))
96
97#define CNXK_SDP_R_IN_BYTE_CNT(ring) \
98 (CNXK_SDP_R_IN_BYTE_CNT_START + ((ring) * CNXK_RING_OFFSET))
99
100/* Rings per Virtual Function */
101#define CNXK_R_IN_CTL_RPVF_MASK (0xF)
102#define CNXK_R_IN_CTL_RPVF_POS (48)
103
104/* Number of instructions to be read in one MAC read request.
105 * setting to Max value(4)
106 */
107#define CNXK_R_IN_CTL_IDLE (0x1ULL << 28)
108#define CNXK_R_IN_CTL_RDSIZE (0x3ULL << 25)
109#define CNXK_R_IN_CTL_IS_64B (0x1ULL << 24)
110#define CNXK_R_IN_CTL_D_NSR (0x1ULL << 8)
111#define CNXK_R_IN_CTL_D_ESR (0x1ULL << 6)
112#define CNXK_R_IN_CTL_D_ROR (0x1ULL << 5)
113#define CNXK_R_IN_CTL_NSR (0x1ULL << 3)
114#define CNXK_R_IN_CTL_ESR (0x1ULL << 1)
115#define CNXK_R_IN_CTL_ROR (0x1ULL << 0)
116
117#define CNXK_R_IN_CTL_MASK (CNXK_R_IN_CTL_RDSIZE | CNXK_R_IN_CTL_IS_64B)
118
119/* ##### RING OUT (out from device to PCI host: Rx Ring) REGISTERS #### */
120#define CNXK_SDP_R_OUT_CNTS_START 0x10100
121#define CNXK_SDP_R_OUT_INT_LEVELS_START 0x10110
122#define CNXK_SDP_R_OUT_SLIST_BADDR_START 0x10120
123#define CNXK_SDP_R_OUT_SLIST_RSIZE_START 0x10130
124#define CNXK_SDP_R_OUT_SLIST_DBELL_START 0x10140
125#define CNXK_SDP_R_OUT_CONTROL_START 0x10150
126#define CNXK_SDP_R_OUT_WMARK_START 0x10160
127#define CNXK_SDP_R_OUT_ENABLE_START 0x10170
128#define CNXK_SDP_R_OUT_PKT_CNT_START 0x10180
129#define CNXK_SDP_R_OUT_BYTE_CNT_START 0x10190
130
131#define CNXK_SDP_R_OUT_CONTROL(ring) \
132 (CNXK_SDP_R_OUT_CONTROL_START + ((ring) * CNXK_RING_OFFSET))
133
134#define CNXK_SDP_R_OUT_ENABLE(ring) \
135 (CNXK_SDP_R_OUT_ENABLE_START + ((ring) * CNXK_RING_OFFSET))
136
137#define CNXK_SDP_R_OUT_SLIST_BADDR(ring) \
138 (CNXK_SDP_R_OUT_SLIST_BADDR_START + ((ring) * CNXK_RING_OFFSET))
139
140#define CNXK_SDP_R_OUT_SLIST_RSIZE(ring) \
141 (CNXK_SDP_R_OUT_SLIST_RSIZE_START + ((ring) * CNXK_RING_OFFSET))
142
143#define CNXK_SDP_R_OUT_SLIST_DBELL(ring) \
144 (CNXK_SDP_R_OUT_SLIST_DBELL_START + ((ring) * CNXK_RING_OFFSET))
145
146#define CNXK_SDP_R_OUT_WMARK(ring) \
147 (CNXK_SDP_R_OUT_WMARK_START + ((ring) * CNXK_RING_OFFSET))
148
149#define CNXK_SDP_R_OUT_CNTS(ring) \
150 (CNXK_SDP_R_OUT_CNTS_START + ((ring) * CNXK_RING_OFFSET))
151
152#define CNXK_SDP_R_OUT_INT_LEVELS(ring) \
153 (CNXK_SDP_R_OUT_INT_LEVELS_START + ((ring) * CNXK_RING_OFFSET))
154
155#define CNXK_SDP_R_OUT_PKT_CNT(ring) \
156 (CNXK_SDP_R_OUT_PKT_CNT_START + ((ring) * CNXK_RING_OFFSET))
157
158#define CNXK_SDP_R_OUT_BYTE_CNT(ring) \
159 (CNXK_SDP_R_OUT_BYTE_CNT_START + ((ring) * CNXK_RING_OFFSET))
160
161/*------------------ R_OUT Masks ----------------*/
162#define CNXK_R_OUT_INT_LEVELS_BMODE BIT_ULL(63)
163#define CNXK_R_OUT_INT_LEVELS_TIMET (32)
164
165#define CNXK_R_OUT_CTL_IDLE BIT_ULL(40)
166#define CNXK_R_OUT_CTL_ES_I BIT_ULL(34)
167#define CNXK_R_OUT_CTL_NSR_I BIT_ULL(33)
168#define CNXK_R_OUT_CTL_ROR_I BIT_ULL(32)
169#define CNXK_R_OUT_CTL_ES_D BIT_ULL(30)
170#define CNXK_R_OUT_CTL_NSR_D BIT_ULL(29)
171#define CNXK_R_OUT_CTL_ROR_D BIT_ULL(28)
172#define CNXK_R_OUT_CTL_ES_P BIT_ULL(26)
173#define CNXK_R_OUT_CTL_NSR_P BIT_ULL(25)
174#define CNXK_R_OUT_CTL_ROR_P BIT_ULL(24)
175#define CNXK_R_OUT_CTL_IMODE BIT_ULL(23)
176
177/* ############### Interrupt Moderation Registers ############### */
178#define CNXK_SDP_R_IN_INT_MDRT_CTL0_START 0x10280
179#define CNXK_SDP_R_IN_INT_MDRT_CTL1_START 0x102A0
180#define CNXK_SDP_R_IN_INT_MDRT_DBG_START 0x102C0
181
182#define CNXK_SDP_R_OUT_INT_MDRT_CTL0_START 0x10380
183#define CNXK_SDP_R_OUT_INT_MDRT_CTL1_START 0x103A0
184#define CNXK_SDP_R_OUT_INT_MDRT_DBG_START 0x103C0
185
186#define CNXK_SDP_R_MBOX_ISM_START 0x10500
187#define CNXK_SDP_R_OUT_CNTS_ISM_START 0x10510
188#define CNXK_SDP_R_IN_CNTS_ISM_START 0x10520
189
190#define CNXK_SDP_R_IN_INT_MDRT_CTL0(ring) \
191 (CNXK_SDP_R_IN_INT_MDRT_CTL0_START + ((ring) * CNXK_RING_OFFSET))
192
193#define CNXK_SDP_R_IN_INT_MDRT_CTL1(ring) \
194 (CNXK_SDP_R_IN_INT_MDRT_CTL1_START + ((ring) * CNXK_RING_OFFSET))
195
196#define CNXK_SDP_R_IN_INT_MDRT_DBG(ring) \
197 (CNXK_SDP_R_IN_INT_MDRT_DBG_START + ((ring) * CNXK_RING_OFFSET))
198
199#define CNXK_SDP_R_OUT_INT_MDRT_CTL0(ring) \
200 (CNXK_SDP_R_OUT_INT_MDRT_CTL0_START + ((ring) * CNXK_RING_OFFSET))
201
202#define CNXK_SDP_R_OUT_INT_MDRT_CTL1(ring) \
203 (CNXK_SDP_R_OUT_INT_MDRT_CTL1_START + ((ring) * CNXK_RING_OFFSET))
204
205#define CNXK_SDP_R_OUT_INT_MDRT_DBG(ring) \
206 (CNXK_SDP_R_OUT_INT_MDRT_DBG_START + ((ring) * CNXK_RING_OFFSET))
207
208#define CNXK_SDP_R_MBOX_ISM(ring) \
209 (CNXK_SDP_R_MBOX_ISM_START + ((ring) * CNXK_RING_OFFSET))
210
211#define CNXK_SDP_R_OUT_CNTS_ISM(ring) \
212 (CNXK_SDP_R_OUT_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
213
214#define CNXK_SDP_R_IN_CNTS_ISM(ring) \
215 (CNXK_SDP_R_IN_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
216
217/* ##################### Mail Box Registers ########################## */
218/* INT register for VF. when a MBOX write from PF happed to a VF,
219 * corresponding bit will be set in this register as well as in
220 * PF_VF_INT register.
221 *
222 * This is a RO register, the int can be cleared by writing 1 to PF_VF_INT
223 */
224/* Basically first 3 are from PF to VF. The last one is data from VF to PF */
225#define CNXK_SDP_R_MBOX_PF_VF_DATA_START 0x10210
226#define CNXK_SDP_R_MBOX_PF_VF_INT_START 0x10220
227#define CNXK_SDP_R_MBOX_VF_PF_DATA_START 0x10230
228
229#define CNXK_SDP_MBOX_VF_PF_DATA_START 0x24000
230#define CNXK_SDP_MBOX_PF_VF_DATA_START 0x22000
231
232#define CNXK_SDP_R_MBOX_PF_VF_DATA(ring) \
233 (CNXK_SDP_R_MBOX_PF_VF_DATA_START + ((ring) * CNXK_RING_OFFSET))
234
235#define CNXK_SDP_R_MBOX_PF_VF_INT(ring) \
236 (CNXK_SDP_R_MBOX_PF_VF_INT_START + ((ring) * CNXK_RING_OFFSET))
237
238#define CNXK_SDP_R_MBOX_VF_PF_DATA(ring) \
239 (CNXK_SDP_R_MBOX_VF_PF_DATA_START + ((ring) * CNXK_RING_OFFSET))
240
241#define CNXK_SDP_MBOX_VF_PF_DATA(ring) \
242 (CNXK_SDP_MBOX_VF_PF_DATA_START + ((ring) * CNXK_EPVF_RING_OFFSET))
243
244#define CNXK_SDP_MBOX_PF_VF_DATA(ring) \
245 (CNXK_SDP_MBOX_PF_VF_DATA_START + ((ring) * CNXK_EPVF_RING_OFFSET))
246
247/* ##################### Interrupt Registers ########################## */
248#define CNXK_SDP_R_ERR_TYPE_START 0x10400
249
250#define CNXK_SDP_R_ERR_TYPE(ring) \
251 (CNXK_SDP_R_ERR_TYPE_START + ((ring) * CNXK_RING_OFFSET))
252
253#define CNXK_SDP_R_MBOX_ISM_START 0x10500
254#define CNXK_SDP_R_OUT_CNTS_ISM_START 0x10510
255#define CNXK_SDP_R_IN_CNTS_ISM_START 0x10520
256
257#define CNXK_SDP_R_MBOX_ISM(ring) \
258 (CNXK_SDP_R_MBOX_ISM_START + ((ring) * CNXK_RING_OFFSET))
259
260#define CNXK_SDP_R_OUT_CNTS_ISM(ring) \
261 (CNXK_SDP_R_OUT_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
262
263#define CNXK_SDP_R_IN_CNTS_ISM(ring) \
264 (CNXK_SDP_R_IN_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
265
266#define CNXK_SDP_EPF_MBOX_RINT_START 0x20100
267#define CNXK_SDP_EPF_MBOX_RINT_W1S_START 0x20120
268#define CNXK_SDP_EPF_MBOX_RINT_ENA_W1C_START 0x20140
269#define CNXK_SDP_EPF_MBOX_RINT_ENA_W1S_START 0x20160
270
271#define CNXK_SDP_EPF_VFIRE_RINT_START 0x20180
272#define CNXK_SDP_EPF_VFIRE_RINT_W1S_START 0x201A0
273#define CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C_START 0x201C0
274#define CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S_START 0x201E0
275
276#define CNXK_SDP_EPF_IRERR_RINT 0x20200
277#define CNXK_SDP_EPF_IRERR_RINT_W1S 0x20210
278#define CNXK_SDP_EPF_IRERR_RINT_ENA_W1C 0x20220
279#define CNXK_SDP_EPF_IRERR_RINT_ENA_W1S 0x20230
280
281#define CNXK_SDP_EPF_VFORE_RINT_START 0x20240
282#define CNXK_SDP_EPF_VFORE_RINT_W1S_START 0x20260
283#define CNXK_SDP_EPF_VFORE_RINT_ENA_W1C_START 0x20280
284#define CNXK_SDP_EPF_VFORE_RINT_ENA_W1S_START 0x202A0
285
286#define CNXK_SDP_EPF_ORERR_RINT 0x20320
287#define CNXK_SDP_EPF_ORERR_RINT_W1S 0x20330
288#define CNXK_SDP_EPF_ORERR_RINT_ENA_W1C 0x20340
289#define CNXK_SDP_EPF_ORERR_RINT_ENA_W1S 0x20350
290
291#define CNXK_SDP_EPF_OEI_RINT 0x20400
292#define CNXK_SDP_EPF_OEI_RINT_W1S 0x20500
293#define CNXK_SDP_EPF_OEI_RINT_ENA_W1C 0x20600
294#define CNXK_SDP_EPF_OEI_RINT_ENA_W1S 0x20700
295
296#define CNXK_SDP_EPF_DMA_RINT 0x20800
297#define CNXK_SDP_EPF_DMA_RINT_W1S 0x20810
298#define CNXK_SDP_EPF_DMA_RINT_ENA_W1C 0x20820
299#define CNXK_SDP_EPF_DMA_RINT_ENA_W1S 0x20830
300
301#define CNXK_SDP_EPF_DMA_INT_LEVEL_START 0x20840
302#define CNXK_SDP_EPF_DMA_CNT_START 0x20860
303#define CNXK_SDP_EPF_DMA_TIM_START 0x20880
304
305#define CNXK_SDP_EPF_MISC_RINT 0x208A0
306#define CNXK_SDP_EPF_MISC_RINT_W1S 0x208B0
307#define CNXK_SDP_EPF_MISC_RINT_ENA_W1C 0x208C0
308#define CNXK_SDP_EPF_MISC_RINT_ENA_W1S 0x208D0
309
310#define CNXK_SDP_EPF_DMA_VF_RINT_START 0x208E0
311#define CNXK_SDP_EPF_DMA_VF_RINT_W1S_START 0x20900
312#define CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C_START 0x20920
313#define CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S_START 0x20940
314
315#define CNXK_SDP_EPF_PP_VF_RINT_START 0x20960
316#define CNXK_SDP_EPF_PP_VF_RINT_W1S_START 0x20980
317#define CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C_START 0x209A0
318#define CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S_START 0x209C0
319
320#define CNXK_SDP_EPF_MBOX_RINT(index) \
321 (CNXK_SDP_EPF_MBOX_RINT_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
322#define CNXK_SDP_EPF_MBOX_RINT_W1S(index) \
323 (CNXK_SDP_EPF_MBOX_RINT_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
324#define CNXK_SDP_EPF_MBOX_RINT_ENA_W1C(index) \
325 (CNXK_SDP_EPF_MBOX_RINT_ENA_W1C_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
326#define CNXK_SDP_EPF_MBOX_RINT_ENA_W1S(index) \
327 (CNXK_SDP_EPF_MBOX_RINT_ENA_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
328
329#define CNXK_SDP_EPF_VFIRE_RINT(index) \
330 (CNXK_SDP_EPF_VFIRE_RINT_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
331#define CNXK_SDP_EPF_VFIRE_RINT_W1S(index) \
332 (CNXK_SDP_EPF_VFIRE_RINT_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
333#define CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C(index) \
334 (CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
335#define CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S(index) \
336 (CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
337
338#define CNXK_SDP_EPF_VFORE_RINT(index) \
339 (CNXK_SDP_EPF_VFORE_RINT_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
340#define CNXK_SDP_EPF_VFORE_RINT_W1S(index) \
341 (CNXK_SDP_EPF_VFORE_RINT_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
342#define CNXK_SDP_EPF_VFORE_RINT_ENA_W1C(index) \
343 (CNXK_SDP_EPF_VFORE_RINT_ENA_W1C_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
344#define CNXK_SDP_EPF_VFORE_RINT_ENA_W1S(index) \
345 (CNXK_SDP_EPF_VFORE_RINT_ENA_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
346
347#define CNXK_SDP_EPF_DMA_VF_RINT(index) \
348 (CNXK_SDP_EPF_DMA_VF_RINT_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
349#define CNXK_SDP_EPF_DMA_VF_RINT_W1S(index) \
350 (CNXK_SDP_EPF_DMA_VF_RINT_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
351#define CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C(index) \
352 (CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
353#define CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S(index) \
354 (CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
355
356#define CNXK_SDP_EPF_PP_VF_RINT(index) \
357 (CNXK_SDP_EPF_PP_VF_RINT_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
358#define CNXK_SDP_EPF_PP_VF_RINT_W1S(index) \
359 (CNXK_SDP_EPF_PP_VF_RINT_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
360#define CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C(index) \
361 (CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
362#define CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S(index) \
363 (CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
364
365/*------------------ Interrupt Masks ----------------*/
366#define CNXK_INTR_R_SEND_ISM BIT_ULL(63)
367#define CNXK_INTR_R_OUT_INT BIT_ULL(62)
368#define CNXK_INTR_R_IN_INT BIT_ULL(61)
369#define CNXK_INTR_R_MBOX_INT BIT_ULL(60)
370#define CNXK_INTR_R_RESEND BIT_ULL(59)
371#define CNXK_INTR_R_CLR_TIM BIT_ULL(58)
372
373/* ####################### Ring Mapping Registers ################################## */
374#define CNXK_SDP_EPVF_RING_START 0x26000
375#define CNXK_SDP_IN_RING_TB_MAP_START 0x28000
376#define CNXK_SDP_IN_RATE_LIMIT_START 0x2A000
377#define CNXK_SDP_MAC_PF_RING_CTL_START 0x2C000
378
379#define CNXK_SDP_EPVF_RING(ring) \
380 (CNXK_SDP_EPVF_RING_START + ((ring) * CNXK_EPVF_RING_OFFSET))
381#define CNXK_SDP_IN_RING_TB_MAP(ring) \
382 (CNXK_SDP_N_RING_TB_MAP_START + ((ring) * CNXK_EPVF_RING_OFFSET))
383#define CNXK_SDP_IN_RATE_LIMIT(ring) \
384 (CNXK_SDP_IN_RATE_LIMIT_START + ((ring) * CNXK_EPVF_RING_OFFSET))
385#define CNXK_SDP_MAC_PF_RING_CTL(mac) \
386 (CNXK_SDP_MAC_PF_RING_CTL_START + ((mac) * CNXK_MAC_OFFSET))
387
388#define CNXK_SDP_MAC_PF_RING_CTL_NPFS(val) ((val) & 0x3)
389#define CNXK_SDP_MAC_PF_RING_CTL_SRN(val) (((val) >> 8) & 0x7F)
390#define CNXK_SDP_MAC_PF_RING_CTL_RPPF(val) (((val) >> 16) & 0x3F)
391
392/* Number of non-queue interrupts in CNXKxx */
393#define CNXK_NUM_NON_IOQ_INTR 32
394
395/* bit 0 for control mbox interrupt */
396#define CNXK_SDP_EPF_OEI_RINT_DATA_BIT_MBOX BIT_ULL(0)
397/* bit 1 for firmware heartbeat interrupt */
398#define CNXK_SDP_EPF_OEI_RINT_DATA_BIT_HBEAT BIT_ULL(1)
399#define FW_STATUS_RUNNING 2ULL
400#define CNXK_PEMX_PFX_CSX_PFCFGX(pem, pf, offset) ({ typeof(offset) _off = (offset); \
401 ((0x8e0000008000 | \
402 (uint64_t)(pem) << 36 \
403 | (pf) << 18 \
404 | ((_off >> 16) & 1) << 16 \
405 | (_off >> 3) << 3) \
406 + (((_off >> 2) & 1) << 2)); \
407 })
408
409/* Register defines for use with CNXK_PEMX_PFX_CSX_PFCFGX */
410#define CNXK_PCIEEP_VSECST_CTL 0x418
411
412#define CNXK_PEM_BAR4_INDEX 7
413#define CNXK_PEM_BAR4_INDEX_SIZE 0x400000ULL
414#define CNXK_PEM_BAR4_INDEX_OFFSET (CNXK_PEM_BAR4_INDEX * CNXK_PEM_BAR4_INDEX_SIZE)
415
416#endif /* _OCTEP_REGS_CNXK_PF_H_ */
417

source code of linux/drivers/net/ethernet/marvell/octeon_ep/octep_regs_cnxk_pf.h