xref: /dpdk/drivers/common/cnxk/hw/rvu.h (revision 9a01217e287197cfc2ac778edcec18d84056d244)
1fa8f86a1SJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
2fa8f86a1SJerin Jacob  * Copyright(C) 2021 Marvell.
3fa8f86a1SJerin Jacob  */
4fa8f86a1SJerin Jacob 
5fa8f86a1SJerin Jacob #ifndef __RVU_HW_H__
6fa8f86a1SJerin Jacob #define __RVU_HW_H__
7fa8f86a1SJerin Jacob 
8fa8f86a1SJerin Jacob /* Register offsets */
9fa8f86a1SJerin Jacob 
10fa8f86a1SJerin Jacob #define RVU_AF_MSIXTR_BASE     (0x10ull)
11fa8f86a1SJerin Jacob #define RVU_AF_BLK_RST	       (0x30ull)
12fa8f86a1SJerin Jacob #define RVU_AF_PF_BAR4_ADDR    (0x40ull)
13fa8f86a1SJerin Jacob #define RVU_AF_RAS	       (0x100ull)
14fa8f86a1SJerin Jacob #define RVU_AF_RAS_W1S	       (0x108ull)
15fa8f86a1SJerin Jacob #define RVU_AF_RAS_ENA_W1S     (0x110ull)
16fa8f86a1SJerin Jacob #define RVU_AF_RAS_ENA_W1C     (0x118ull)
17fa8f86a1SJerin Jacob #define RVU_AF_GEN_INT	       (0x120ull)
18fa8f86a1SJerin Jacob #define RVU_AF_GEN_INT_W1S     (0x128ull)
19fa8f86a1SJerin Jacob #define RVU_AF_GEN_INT_ENA_W1S (0x130ull)
20fa8f86a1SJerin Jacob #define RVU_AF_GEN_INT_ENA_W1C (0x138ull)
21fa8f86a1SJerin Jacob #define RVU_AF_AFPFX_MBOXX(a, b)                                               \
22fa8f86a1SJerin Jacob 	(0x2000ull | (uint64_t)(a) << 4 | (uint64_t)(b) << 3)
23fa8f86a1SJerin Jacob #define RVU_AF_PFME_STATUS	     (0x2800ull)
24fa8f86a1SJerin Jacob #define RVU_AF_PFTRPEND		     (0x2810ull)
25fa8f86a1SJerin Jacob #define RVU_AF_PFTRPEND_W1S	     (0x2820ull)
26fa8f86a1SJerin Jacob #define RVU_AF_PF_RST		     (0x2840ull)
27fa8f86a1SJerin Jacob #define RVU_AF_HWVF_RST		     (0x2850ull)
28fa8f86a1SJerin Jacob #define RVU_AF_PFAF_MBOX_INT	     (0x2880ull)
29fa8f86a1SJerin Jacob #define RVU_AF_PFAF_MBOX_INT_W1S     (0x2888ull)
30fa8f86a1SJerin Jacob #define RVU_AF_PFAF_MBOX_INT_ENA_W1S (0x2890ull)
31fa8f86a1SJerin Jacob #define RVU_AF_PFAF_MBOX_INT_ENA_W1C (0x2898ull)
32fa8f86a1SJerin Jacob #define RVU_AF_PFFLR_INT	     (0x28a0ull)
33fa8f86a1SJerin Jacob #define RVU_AF_PFFLR_INT_W1S	     (0x28a8ull)
34fa8f86a1SJerin Jacob #define RVU_AF_PFFLR_INT_ENA_W1S     (0x28b0ull)
35fa8f86a1SJerin Jacob #define RVU_AF_PFFLR_INT_ENA_W1C     (0x28b8ull)
36fa8f86a1SJerin Jacob #define RVU_AF_PFME_INT		     (0x28c0ull)
37fa8f86a1SJerin Jacob #define RVU_AF_PFME_INT_W1S	     (0x28c8ull)
38fa8f86a1SJerin Jacob #define RVU_AF_PFME_INT_ENA_W1S	     (0x28d0ull)
39fa8f86a1SJerin Jacob #define RVU_AF_PFME_INT_ENA_W1C	     (0x28d8ull)
40fa8f86a1SJerin Jacob #define RVU_PRIV_CONST		     (0x8000000ull)
41fa8f86a1SJerin Jacob #define RVU_PRIV_GEN_CFG	     (0x8000010ull)
42fa8f86a1SJerin Jacob #define RVU_PRIV_CLK_CFG	     (0x8000020ull)
43fa8f86a1SJerin Jacob #define RVU_PRIV_ACTIVE_PC	     (0x8000030ull)
44fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_CFG(a)	     (0x8000100ull | (uint64_t)(a) << 16)
45fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_MSIX_CFG(a)     (0x8000110ull | (uint64_t)(a) << 16)
46fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_ID_CFG(a)	     (0x8000120ull | (uint64_t)(a) << 16)
47fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_INT_CFG(a)	     (0x8000200ull | (uint64_t)(a) << 16)
48fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_NIXX_CFG(a, b)                                            \
49fa8f86a1SJerin Jacob 	(0x8000300ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
50fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_NPA_CFG(a)	 (0x8000310ull | (uint64_t)(a) << 16)
51fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_SSO_CFG(a)	 (0x8000320ull | (uint64_t)(a) << 16)
52fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_SSOW_CFG(a) (0x8000330ull | (uint64_t)(a) << 16)
53fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_TIM_CFG(a)	 (0x8000340ull | (uint64_t)(a) << 16)
54fa8f86a1SJerin Jacob #define RVU_PRIV_PFX_CPTX_CFG(a, b)                                            \
55fa8f86a1SJerin Jacob 	(0x8000350ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
56fa8f86a1SJerin Jacob #define RVU_PRIV_BLOCK_TYPEX_REV(a) (0x8000400ull | (uint64_t)(a) << 3)
57fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_INT_CFG(a)   (0x8001280ull | (uint64_t)(a) << 16)
58fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_NIXX_CFG(a, b)                                          \
59fa8f86a1SJerin Jacob 	(0x8001300ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
60fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_NPA_CFG(a)  (0x8001310ull | (uint64_t)(a) << 16)
61fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_SSO_CFG(a)  (0x8001320ull | (uint64_t)(a) << 16)
62fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_SSOW_CFG(a) (0x8001330ull | (uint64_t)(a) << 16)
63fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_TIM_CFG(a)  (0x8001340ull | (uint64_t)(a) << 16)
64fa8f86a1SJerin Jacob #define RVU_PRIV_HWVFX_CPTX_CFG(a, b)                                          \
65fa8f86a1SJerin Jacob 	(0x8001350ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
66fa8f86a1SJerin Jacob 
67fa8f86a1SJerin Jacob #define RVU_PF_VFX_PFVF_MBOXX(a, b)                                            \
68fa8f86a1SJerin Jacob 	(0x0ull | (uint64_t)(a) << 12 | (uint64_t)(b) << 3)
69fa8f86a1SJerin Jacob #define RVU_PF_VF_BAR4_ADDR		 (0x10ull)
70*9a01217eSSatha Rao 
71*9a01217eSSatha Rao #define RVU_PF_DISC			 (0x0ull)  /* [CN20K, .) */
72*9a01217eSSatha Rao #define RVU_PF_BLOCK_ADDRX_DISC(a)	 (0x200ull | (uint64_t)(a) << 3)  /* [CN9K, CN20K) */
73fa8f86a1SJerin Jacob #define RVU_PF_VFME_STATUSX(a)		 (0x800ull | (uint64_t)(a) << 3)
74fa8f86a1SJerin Jacob #define RVU_PF_VFTRPENDX(a)		 (0x820ull | (uint64_t)(a) << 3)
75fa8f86a1SJerin Jacob #define RVU_PF_VFTRPEND_W1SX(a)		 (0x840ull | (uint64_t)(a) << 3)
76fa8f86a1SJerin Jacob #define RVU_PF_VFPF_MBOX_INTX(a)	 (0x880ull | (uint64_t)(a) << 3)
77fa8f86a1SJerin Jacob #define RVU_PF_VFPF_MBOX_INT_W1SX(a)	 (0x8a0ull | (uint64_t)(a) << 3)
78fa8f86a1SJerin Jacob #define RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a) (0x8c0ull | (uint64_t)(a) << 3)
79fa8f86a1SJerin Jacob #define RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a) (0x8e0ull | (uint64_t)(a) << 3)
80fa8f86a1SJerin Jacob #define RVU_PF_VFFLR_INTX(a)		 (0x900ull | (uint64_t)(a) << 3)
81fa8f86a1SJerin Jacob #define RVU_PF_VFFLR_INT_W1SX(a)	 (0x920ull | (uint64_t)(a) << 3)
82fa8f86a1SJerin Jacob #define RVU_PF_VFFLR_INT_ENA_W1SX(a)	 (0x940ull | (uint64_t)(a) << 3)
83fa8f86a1SJerin Jacob #define RVU_PF_VFFLR_INT_ENA_W1CX(a)	 (0x960ull | (uint64_t)(a) << 3)
84fa8f86a1SJerin Jacob #define RVU_PF_VFME_INTX(a)		 (0x980ull | (uint64_t)(a) << 3)
85fa8f86a1SJerin Jacob #define RVU_PF_VFME_INT_W1SX(a)		 (0x9a0ull | (uint64_t)(a) << 3)
86fa8f86a1SJerin Jacob #define RVU_PF_VFME_INT_ENA_W1SX(a)	 (0x9c0ull | (uint64_t)(a) << 3)
87fa8f86a1SJerin Jacob #define RVU_PF_VFME_INT_ENA_W1CX(a)	 (0x9e0ull | (uint64_t)(a) << 3)
88fa8f86a1SJerin Jacob #define RVU_PF_PFAF_MBOXX(a)		 (0xc00ull | (uint64_t)(a) << 3)
89fa8f86a1SJerin Jacob #define RVU_PF_INT			 (0xc20ull)
90fa8f86a1SJerin Jacob #define RVU_PF_INT_W1S			 (0xc28ull)
91fa8f86a1SJerin Jacob #define RVU_PF_INT_ENA_W1S		 (0xc30ull)
92fa8f86a1SJerin Jacob #define RVU_PF_INT_ENA_W1C		 (0xc38ull)
93fa8f86a1SJerin Jacob #define RVU_PF_MSIX_VECX_ADDR(a)	 (0x80000ull | (uint64_t)(a) << 4)
94fa8f86a1SJerin Jacob #define RVU_PF_MSIX_VECX_CTL(a)		 (0x80008ull | (uint64_t)(a) << 4)
95fa8f86a1SJerin Jacob #define RVU_PF_MSIX_PBAX(a)		 (0xf0000ull | (uint64_t)(a) << 3)
96*9a01217eSSatha Rao #define RVU_VF_DISC			 (0x0ull)  /* [CN20K, .) */
97*9a01217eSSatha Rao #define RVU_VF_VFPF_MBOXX(a)		 (0x0ull | (uint64_t)(a) << 3) /* [CN9K, CN20K) */
98fa8f86a1SJerin Jacob #define RVU_VF_INT			 (0x20ull)
99fa8f86a1SJerin Jacob #define RVU_VF_INT_W1S			 (0x28ull)
100fa8f86a1SJerin Jacob #define RVU_VF_INT_ENA_W1S		 (0x30ull)
101fa8f86a1SJerin Jacob #define RVU_VF_INT_ENA_W1C		 (0x38ull)
102fa8f86a1SJerin Jacob #define RVU_VF_BLOCK_ADDRX_DISC(a)	 (0x200ull | (uint64_t)(a) << 3)
103fa8f86a1SJerin Jacob #define RVU_VF_MSIX_VECX_ADDR(a)	 (0x80000ull | (uint64_t)(a) << 4)
104fa8f86a1SJerin Jacob #define RVU_VF_MSIX_VECX_CTL(a)		 (0x80008ull | (uint64_t)(a) << 4)
105fa8f86a1SJerin Jacob #define RVU_VF_MBOX_REGION		 (0xc0000ull) /* [CN10K, .) */
106fa8f86a1SJerin Jacob #define RVU_VF_MSIX_PBAX(a)		 (0xf0000ull | (uint64_t)(a) << 3)
107fa8f86a1SJerin Jacob 
10861deac72SHarman Kalra /* CN20k RVU mbox registers */
10961deac72SHarman Kalra #define RVU_MBOX_AF_AFPFX_TRIGX(a)    (0x9000 | (a) << 3)
11061deac72SHarman Kalra #define RVU_MBOX_PF_PFAF_TRIGX(a)     RVU_PF_PFAF_MBOXX(a)
1119bd368caSHarman Kalra #define RVU_MBOX_PF_VFX_PFVF_TRIGX(a) (0x2000 | (a) << 3)
1129bd368caSHarman Kalra #define RVU_MBOX_VF_VFPF_TRIGX(a)     (0x3000 | (a) << 3)
1139bd368caSHarman Kalra 
1149bd368caSHarman Kalra #define RVU_PF_VF_MBOX_ADDR (0xC40)
11561deac72SHarman Kalra 
11661deac72SHarman Kalra /* cn20k Enum */
11761deac72SHarman Kalra #define RVU_PFX_FUNC_PFAF_MBOX (0x80000)
11861deac72SHarman Kalra 
11961deac72SHarman Kalra #define RVU_FUNC_BLKADDR_SHIFT 20
12061deac72SHarman Kalra #define RVU_FUNC_BLKADDR_MASK  0x1FULL
12161deac72SHarman Kalra 
122fa8f86a1SJerin Jacob /* Enum offsets */
123fa8f86a1SJerin Jacob 
124fa8f86a1SJerin Jacob #define RVU_BAR_RVU_PF_END_BAR0	  (0x84f000000000ull)
125fa8f86a1SJerin Jacob #define RVU_BAR_RVU_PF_START_BAR0 (0x840000000000ull)
126fa8f86a1SJerin Jacob #define RVU_BAR_RVU_PFX_FUNCX_BAR2(a, b)                                       \
127fa8f86a1SJerin Jacob 	(0x840200000000ull | ((uint64_t)(a) << 36) | ((uint64_t)(b) << 25))
128fa8f86a1SJerin Jacob 
129fa8f86a1SJerin Jacob #define RVU_AF_INT_VEC_POISON (0x0ull)
130fa8f86a1SJerin Jacob #define RVU_AF_INT_VEC_PFFLR  (0x1ull)
131fa8f86a1SJerin Jacob #define RVU_AF_INT_VEC_PFME   (0x2ull)
132fa8f86a1SJerin Jacob #define RVU_AF_INT_VEC_GEN    (0x3ull)
133fa8f86a1SJerin Jacob #define RVU_AF_INT_VEC_MBOX   (0x4ull)
134fa8f86a1SJerin Jacob 
135fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_RVUM (0x0ull)
136fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_LMT  (0x2ull)
137fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_NIX  (0x3ull)
138fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_NPA  (0x4ull)
139fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_NPC  (0x5ull)
140fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_SSO  (0x6ull)
141fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_SSOW (0x7ull)
142fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_TIM  (0x8ull)
143fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_CPT  (0x9ull)
144fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_NDC  (0xaull)
145fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_DDF  (0xbull)
146fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_ZIP  (0xcull)
147fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_RAD  (0xdull)
148fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_DFA  (0xeull)
149fa8f86a1SJerin Jacob #define RVU_BLOCK_TYPE_HNA  (0xfull)
15020a027ccSLiron Himi #define RVU_BLOCK_TYPE_REE  (0xeull)
151fa8f86a1SJerin Jacob 
152fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_RVUM    (0x0ull)
153fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_LMT     (0x1ull)
154fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NPA     (0x3ull)
155fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NIX0    (0x4ull)
156fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NIX1    (0x5ull)
157fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NPC     (0x6ull)
158fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_SSO     (0x7ull)
159fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_SSOW    (0x8ull)
160fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_TIM     (0x9ull)
161fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_CPT0    (0xaull)
162fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_CPT1    (0xbull)
163fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NDC0    (0xcull)
164fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NDC1    (0xdull)
165fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_NDC2    (0xeull)
166fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_R_END   (0x1full)
167fa8f86a1SJerin Jacob #define RVU_BLOCK_ADDR_R_START (0x14ull)
16820a027ccSLiron Himi #define RVU_BLOCK_ADDR_REE0    (0x14ull)
16920a027ccSLiron Himi #define RVU_BLOCK_ADDR_REE1    (0x15ull)
17061deac72SHarman Kalra #define RVU_BLOCK_ADDR_MBOX    (0x1bULL)
171fa8f86a1SJerin Jacob 
172fa8f86a1SJerin Jacob #define RVU_VF_INT_VEC_MBOX (0x0ull)
173fa8f86a1SJerin Jacob 
174fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_AFPF_MBOX  (0x6ull)
175fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_VFFLR0	  (0x0ull)
176fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_VFFLR1	  (0x1ull)
177fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_VFME0	  (0x2ull)
178fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_VFME1	  (0x3ull)
179fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_VFPF_MBOX0 (0x4ull)
180fa8f86a1SJerin Jacob #define RVU_PF_INT_VEC_VFPF_MBOX1 (0x5ull)
181fa8f86a1SJerin Jacob 
18261deac72SHarman Kalra #define RVU_MBOX_PF_INT_VEC_VFPF_MBOX0	(0x4ull)
18361deac72SHarman Kalra #define RVU_MBOX_PF_INT_VEC_VFPF_MBOX1	(0x5ull)
18461deac72SHarman Kalra #define RVU_MBOX_PF_INT_VEC_VFPF1_MBOX0 (0x6ull)
18561deac72SHarman Kalra #define RVU_MBOX_PF_INT_VEC_VFPF1_MBOX1 (0x7ull)
18661deac72SHarman Kalra #define RVU_MBOX_PF_INT_VEC_AFPF_MBOX	(0x8ull)
18761deac72SHarman Kalra 
1889bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF_INTX(a)	 (0x1000 | (a) << 3)
1899bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF_INT_W1SX(a)	 (0x1020 | (a) << 3)
1909bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF_INT_ENA_W1SX(a) (0x1040 | (a) << 3)
1919bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF_INT_ENA_W1CX(a) (0x1060 | (a) << 3)
1929bd368caSHarman Kalra 
1939bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF1_INTX(a)	  (0x1080 | (a) << 3)
1949bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF1_INT_W1SX(a)	  (0x10a0 | (a) << 3)
1959bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF1_INT_ENA_W1SX(a) (0x10c0 | (a) << 3)
1969bd368caSHarman Kalra #define RVU_MBOX_PF_VFPF1_INT_ENA_W1CX(a) (0x10e0 | (a) << 3)
1979bd368caSHarman Kalra 
198fa8f86a1SJerin Jacob #define AF_BAR2_ALIASX_SIZE (0x100000ull)
199fa8f86a1SJerin Jacob 
200fa8f86a1SJerin Jacob #define TIM_AF_BAR2_SEL	 (0x9000000ull)
201fa8f86a1SJerin Jacob #define SSO_AF_BAR2_SEL	 (0x9000000ull)
202fa8f86a1SJerin Jacob #define NIX_AF_BAR2_SEL	 (0x9000000ull)
203fa8f86a1SJerin Jacob #define SSOW_AF_BAR2_SEL (0x9000000ull)
204fa8f86a1SJerin Jacob #define NPA_AF_BAR2_SEL	 (0x9000000ull)
205fa8f86a1SJerin Jacob #define CPT_AF_BAR2_SEL	 (0x9000000ull)
206fa8f86a1SJerin Jacob #define RVU_AF_BAR2_SEL	 (0x9000000ull)
20720a027ccSLiron Himi #define REE_AF_BAR2_SEL	 (0x9000000ull)
208fa8f86a1SJerin Jacob 
209fa8f86a1SJerin Jacob #define AF_BAR2_ALIASX(a, b)                                                   \
210fa8f86a1SJerin Jacob 	(0x9100000ull | (uint64_t)(a) << 12 | (uint64_t)(b))
211fa8f86a1SJerin Jacob #define TIM_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(a, b)
212fa8f86a1SJerin Jacob #define SSO_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(a, b)
213fa8f86a1SJerin Jacob #define NIX_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(0, b)
214fa8f86a1SJerin Jacob #define SSOW_AF_BAR2_ALIASX(a, b) AF_BAR2_ALIASX(a, b)
215fa8f86a1SJerin Jacob #define NPA_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(0, b)
216fa8f86a1SJerin Jacob #define CPT_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(a, b)
217fa8f86a1SJerin Jacob #define RVU_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(a, b)
21820a027ccSLiron Himi #define REE_AF_BAR2_ALIASX(a, b)  AF_BAR2_ALIASX(a, b)
219fa8f86a1SJerin Jacob 
220fa8f86a1SJerin Jacob /* Structures definitions */
221fa8f86a1SJerin Jacob 
222fa8f86a1SJerin Jacob /* RVU admin function register address structure */
223fa8f86a1SJerin Jacob struct rvu_af_addr_s {
224fa8f86a1SJerin Jacob 	uint64_t addr : 28;
225fa8f86a1SJerin Jacob 	uint64_t block : 5;
226fa8f86a1SJerin Jacob 	uint64_t rsvd_63_33 : 31;
227fa8f86a1SJerin Jacob };
228fa8f86a1SJerin Jacob 
229fa8f86a1SJerin Jacob /* RVU function-unique address structure */
230fa8f86a1SJerin Jacob struct rvu_func_addr_s {
231fa8f86a1SJerin Jacob 	uint32_t addr : 12;
232fa8f86a1SJerin Jacob 	uint32_t lf_slot : 8;
233fa8f86a1SJerin Jacob 	uint32_t block : 5;
234fa8f86a1SJerin Jacob 	uint32_t rsvd_31_25 : 7;
235fa8f86a1SJerin Jacob };
236fa8f86a1SJerin Jacob 
237fa8f86a1SJerin Jacob /* RVU msi-x vector structure */
238fa8f86a1SJerin Jacob struct rvu_msix_vec_s {
239fa8f86a1SJerin Jacob 	uint64_t addr : 64; /* W0 */
240fa8f86a1SJerin Jacob 	uint64_t data : 32;
241fa8f86a1SJerin Jacob 	uint64_t mask : 1;
242fa8f86a1SJerin Jacob 	uint64_t pend : 1;
243fa8f86a1SJerin Jacob 	uint64_t rsvd_127_98 : 30;
244fa8f86a1SJerin Jacob };
245fa8f86a1SJerin Jacob 
246fa8f86a1SJerin Jacob /* RVU pf function identification structure */
247fa8f86a1SJerin Jacob struct rvu_pf_func_s {
248fa8f86a1SJerin Jacob 	uint16_t func : 10;
249fa8f86a1SJerin Jacob 	uint16_t pf : 6;
250fa8f86a1SJerin Jacob };
251fa8f86a1SJerin Jacob 
252fa8f86a1SJerin Jacob #define RVU_CN9K_LMT_SLOT_MAX  256ULL
253fa8f86a1SJerin Jacob #define RVU_CN9K_LMT_SLOT_MASK (RVU_CN9K_LMT_SLOT_MAX - 1)
254fa8f86a1SJerin Jacob 
255fa8f86a1SJerin Jacob #define RVU_LMT_SZ 128ULL
256fa8f86a1SJerin Jacob 
257fa8f86a1SJerin Jacob /* 2048 LMT lines in BAR4 [CN10k, .) */
258fa8f86a1SJerin Jacob #define RVU_LMT_LINE_MAX       2048
259fa8f86a1SJerin Jacob #define RVU_LMT_LINE_BURST_MAX (uint16_t)32 /* [CN10K, .) */
260fa8f86a1SJerin Jacob 
261fa8f86a1SJerin Jacob #endif /* __RVU_HW_H__ */
262