xref: /dpdk/drivers/common/cnxk/hw/ree.h (revision 20a027cc7ddaee7a318a089888bf74bb13372e58)
1*20a027ccSLiron Himi /* SPDX-License-Identifier: BSD-3-Clause
2*20a027ccSLiron Himi  * Copyright(C) 2021 Marvell.
3*20a027ccSLiron Himi  */
4*20a027ccSLiron Himi 
5*20a027ccSLiron Himi #ifndef __REE_HW_H__
6*20a027ccSLiron Himi #define __REE_HW_H__
7*20a027ccSLiron Himi 
8*20a027ccSLiron Himi /* REE instruction queue length */
9*20a027ccSLiron Himi #define REE_IQ_LEN (1 << 13)
10*20a027ccSLiron Himi 
11*20a027ccSLiron Himi #define REE_DEFAULT_CMD_QLEN REE_IQ_LEN
12*20a027ccSLiron Himi 
13*20a027ccSLiron Himi /* Status register bits */
14*20a027ccSLiron Himi #define REE_STATUS_PMI_EOJ_BIT	   BIT_ULL(14)
15*20a027ccSLiron Himi #define REE_STATUS_PMI_SOJ_BIT	   BIT_ULL(13)
16*20a027ccSLiron Himi #define REE_STATUS_MP_CNT_DET_BIT  BIT_ULL(7)
17*20a027ccSLiron Himi #define REE_STATUS_MM_CNT_DET_BIT  BIT_ULL(6)
18*20a027ccSLiron Himi #define REE_STATUS_ML_CNT_DET_BIT  BIT_ULL(5)
19*20a027ccSLiron Himi #define REE_STATUS_MST_CNT_DET_BIT BIT_ULL(4)
20*20a027ccSLiron Himi #define REE_STATUS_MPT_CNT_DET_BIT BIT_ULL(3)
21*20a027ccSLiron Himi 
22*20a027ccSLiron Himi /* Register offsets */
23*20a027ccSLiron Himi /* REE LF registers */
24*20a027ccSLiron Himi #define REE_LF_DONE_INT		0x120ull
25*20a027ccSLiron Himi #define REE_LF_DONE_INT_W1S	0x130ull
26*20a027ccSLiron Himi #define REE_LF_DONE_INT_ENA_W1S 0x138ull
27*20a027ccSLiron Himi #define REE_LF_DONE_INT_ENA_W1C 0x140ull
28*20a027ccSLiron Himi #define REE_LF_MISC_INT		0x300ull
29*20a027ccSLiron Himi #define REE_LF_MISC_INT_W1S	0x310ull
30*20a027ccSLiron Himi #define REE_LF_MISC_INT_ENA_W1S 0x320ull
31*20a027ccSLiron Himi #define REE_LF_MISC_INT_ENA_W1C 0x330ull
32*20a027ccSLiron Himi #define REE_LF_ENA		0x10ull
33*20a027ccSLiron Himi #define REE_LF_SBUF_ADDR	0x20ull
34*20a027ccSLiron Himi #define REE_LF_DONE		0x100ull
35*20a027ccSLiron Himi #define REE_LF_DONE_ACK		0x110ull
36*20a027ccSLiron Himi #define REE_LF_DONE_WAIT	0x148ull
37*20a027ccSLiron Himi #define REE_LF_DOORBELL		0x400ull
38*20a027ccSLiron Himi #define REE_LF_OUTSTAND_JOB	0x410ull
39*20a027ccSLiron Himi 
40*20a027ccSLiron Himi /* BAR 0 */
41*20a027ccSLiron Himi #define REE_AF_REEXM_MAX_MATCH (0x80c8ull)
42*20a027ccSLiron Himi #define REE_AF_QUE_SBUF_CTL(a) (0x1200ull | (uint64_t)(a) << 3)
43*20a027ccSLiron Himi #define REE_PRIV_LF_CFG(a)     (0x41000ull | (uint64_t)(a) << 3)
44*20a027ccSLiron Himi 
45*20a027ccSLiron Himi #define REE_AF_QUEX_GMCTL(a) (0x800 | (a) << 3)
46*20a027ccSLiron Himi 
47*20a027ccSLiron Himi #define REE_AF_INT_VEC_RAS	(0x0ull)
48*20a027ccSLiron Himi #define REE_AF_INT_VEC_RVU	(0x1ull)
49*20a027ccSLiron Himi #define REE_AF_INT_VEC_QUE_DONE (0x2ull)
50*20a027ccSLiron Himi #define REE_AF_INT_VEC_AQ	(0x3ull)
51*20a027ccSLiron Himi 
52*20a027ccSLiron Himi 
53*20a027ccSLiron Himi #define REE_LF_INT_VEC_QUE_DONE (0x0ull)
54*20a027ccSLiron Himi #define REE_LF_INT_VEC_MISC	(0x1ull)
55*20a027ccSLiron Himi 
56*20a027ccSLiron Himi #define REE_LF_SBUF_ADDR_OFF_MASK GENMASK_ULL(6, 0)
57*20a027ccSLiron Himi #define REE_LF_SBUF_ADDR_PTR_MASK GENMASK_ULL(52, 7)
58*20a027ccSLiron Himi 
59*20a027ccSLiron Himi #define REE_LF_ENA_ENA_MASK BIT_ULL(0)
60*20a027ccSLiron Himi 
61*20a027ccSLiron Himi #define REE_LF_BAR2(vf, q_id)                                                  \
62*20a027ccSLiron Himi 	((vf)->dev->bar2 + (((vf)->block_address << 20) | ((q_id) << 12)))
63*20a027ccSLiron Himi 
64*20a027ccSLiron Himi #define REE_QUEUE_HI_PRIO 0x1
65*20a027ccSLiron Himi 
66*20a027ccSLiron Himi enum ree_desc_type_e {
67*20a027ccSLiron Himi 	REE_TYPE_JOB_DESC = 0x0,
68*20a027ccSLiron Himi 	REE_TYPE_RESULT_DESC = 0x1,
69*20a027ccSLiron Himi 	REE_TYPE_ENUM_LAST = 0x2
70*20a027ccSLiron Himi };
71*20a027ccSLiron Himi 
72*20a027ccSLiron Himi union ree_res_status {
73*20a027ccSLiron Himi 	uint64_t u;
74*20a027ccSLiron Himi 	struct {
75*20a027ccSLiron Himi 		uint64_t job_type : 3;
76*20a027ccSLiron Himi 		uint64_t mpt_cnt_det : 1;
77*20a027ccSLiron Himi 		uint64_t mst_cnt_det : 1;
78*20a027ccSLiron Himi 		uint64_t ml_cnt_det : 1;
79*20a027ccSLiron Himi 		uint64_t mm_cnt_det : 1;
80*20a027ccSLiron Himi 		uint64_t mp_cnt_det : 1;
81*20a027ccSLiron Himi 		uint64_t mode : 2;
82*20a027ccSLiron Himi 		uint64_t reserved_10_11 : 2;
83*20a027ccSLiron Himi 		uint64_t reserved_12_12 : 1;
84*20a027ccSLiron Himi 		uint64_t pmi_soj : 1;
85*20a027ccSLiron Himi 		uint64_t pmi_eoj : 1;
86*20a027ccSLiron Himi 		uint64_t reserved_15_15 : 1;
87*20a027ccSLiron Himi 		uint64_t reserved_16_63 : 48;
88*20a027ccSLiron Himi 	} s;
89*20a027ccSLiron Himi };
90*20a027ccSLiron Himi 
91*20a027ccSLiron Himi union ree_res {
92*20a027ccSLiron Himi 	uint64_t u[8];
93*20a027ccSLiron Himi 	struct ree_res_s_98 {
94*20a027ccSLiron Himi 		uint64_t done : 1;
95*20a027ccSLiron Himi 		uint64_t hwjid : 7;
96*20a027ccSLiron Himi 		uint64_t ree_res_job_id : 24;
97*20a027ccSLiron Himi 		uint64_t ree_res_status : 16;
98*20a027ccSLiron Himi 		uint64_t ree_res_dmcnt : 8;
99*20a027ccSLiron Himi 		uint64_t ree_res_mcnt : 8;
100*20a027ccSLiron Himi 		uint64_t ree_meta_ptcnt : 16;
101*20a027ccSLiron Himi 		uint64_t ree_meta_icnt : 16;
102*20a027ccSLiron Himi 		uint64_t ree_meta_lcnt : 16;
103*20a027ccSLiron Himi 		uint64_t ree_pmi_min_byte_ptr : 16;
104*20a027ccSLiron Himi 		uint64_t ree_err : 1;
105*20a027ccSLiron Himi 		uint64_t reserved_129_190 : 62;
106*20a027ccSLiron Himi 		uint64_t doneint : 1;
107*20a027ccSLiron Himi 		uint64_t reserved_192_255 : 64;
108*20a027ccSLiron Himi 		uint64_t reserved_256_319 : 64;
109*20a027ccSLiron Himi 		uint64_t reserved_320_383 : 64;
110*20a027ccSLiron Himi 		uint64_t reserved_384_447 : 64;
111*20a027ccSLiron Himi 		uint64_t reserved_448_511 : 64;
112*20a027ccSLiron Himi 	} s;
113*20a027ccSLiron Himi };
114*20a027ccSLiron Himi 
115*20a027ccSLiron Himi union ree_match {
116*20a027ccSLiron Himi 	uint64_t u;
117*20a027ccSLiron Himi 	struct {
118*20a027ccSLiron Himi 		uint64_t ree_rule_id : 32;
119*20a027ccSLiron Himi 		uint64_t start_ptr : 14;
120*20a027ccSLiron Himi 		uint64_t reserved_46_47 : 2;
121*20a027ccSLiron Himi 		uint64_t match_length : 15;
122*20a027ccSLiron Himi 		uint64_t reserved_63_6 : 1;
123*20a027ccSLiron Himi 	} s;
124*20a027ccSLiron Himi };
125*20a027ccSLiron Himi 
126*20a027ccSLiron Himi #endif /* __REE_HW_H__ */
127