xref: /dpdk/drivers/common/idpf/base/idpf_lan_vf_regs.h (revision 8b8eab719ce86388b9a48c5e3e70563648010081)
1fb4ac04eSJunfeng Guo /* SPDX-License-Identifier: BSD-3-Clause
26b35be99SWenjing Qiao  * Copyright(c) 2001-2023 Intel Corporation
3fb4ac04eSJunfeng Guo  */
4fb4ac04eSJunfeng Guo 
5fb4ac04eSJunfeng Guo #ifndef _IDPF_LAN_VF_REGS_H_
6fb4ac04eSJunfeng Guo #define _IDPF_LAN_VF_REGS_H_
7fb4ac04eSJunfeng Guo 
8fb4ac04eSJunfeng Guo 
9fb4ac04eSJunfeng Guo /* Reset */
10fb4ac04eSJunfeng Guo #define VFGEN_RSTAT			0x00008800
11fb4ac04eSJunfeng Guo #define VFGEN_RSTAT_VFR_STATE_S		0
12*8b8eab71SSimei Su #define VFGEN_RSTAT_VFR_STATE_M		GENMASK(1, 0)
13fb4ac04eSJunfeng Guo 
14fb4ac04eSJunfeng Guo /* Control(VF Mailbox) Queue */
15fb4ac04eSJunfeng Guo #define VF_BASE				0x00006000
16fb4ac04eSJunfeng Guo 
17fb4ac04eSJunfeng Guo #define VF_ATQBAL			(VF_BASE + 0x1C00)
18fb4ac04eSJunfeng Guo #define VF_ATQBAH			(VF_BASE + 0x1800)
19fb4ac04eSJunfeng Guo #define VF_ATQLEN			(VF_BASE + 0x0800)
20fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQLEN_S		0
21*8b8eab71SSimei Su #define VF_ATQLEN_ATQLEN_M		GENMASK(9, 0)
22fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQVFE_S		28
23fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQVFE_M		BIT(VF_ATQLEN_ATQVFE_S)
24fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQOVFL_S		29
25fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQOVFL_M		BIT(VF_ATQLEN_ATQOVFL_S)
26fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQCRIT_S		30
27fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQCRIT_M		BIT(VF_ATQLEN_ATQCRIT_S)
28fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQENABLE_S		31
29fb4ac04eSJunfeng Guo #define VF_ATQLEN_ATQENABLE_M		BIT(VF_ATQLEN_ATQENABLE_S)
30fb4ac04eSJunfeng Guo #define VF_ATQH				(VF_BASE + 0x0400)
31fb4ac04eSJunfeng Guo #define VF_ATQH_ATQH_S			0
32*8b8eab71SSimei Su #define VF_ATQH_ATQH_M			GENMASK(9, 0)
33fb4ac04eSJunfeng Guo #define VF_ATQT				(VF_BASE + 0x2400)
34fb4ac04eSJunfeng Guo 
35fb4ac04eSJunfeng Guo #define VF_ARQBAL			(VF_BASE + 0x0C00)
36fb4ac04eSJunfeng Guo #define VF_ARQBAH			(VF_BASE)
37fb4ac04eSJunfeng Guo #define VF_ARQLEN			(VF_BASE + 0x2000)
38fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQLEN_S		0
39*8b8eab71SSimei Su #define VF_ARQLEN_ARQLEN_M		GENMASK(9, 0)
40fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQVFE_S		28
41fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQVFE_M		BIT(VF_ARQLEN_ARQVFE_S)
42fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQOVFL_S		29
43fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQOVFL_M		BIT(VF_ARQLEN_ARQOVFL_S)
44fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQCRIT_S		30
45fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQCRIT_M		BIT(VF_ARQLEN_ARQCRIT_S)
46fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQENABLE_S		31
47fb4ac04eSJunfeng Guo #define VF_ARQLEN_ARQENABLE_M		BIT(VF_ARQLEN_ARQENABLE_S)
48fb4ac04eSJunfeng Guo #define VF_ARQH				(VF_BASE + 0x1400)
49fb4ac04eSJunfeng Guo #define VF_ARQH_ARQH_S			0
50*8b8eab71SSimei Su #define VF_ARQH_ARQH_M			GENMASK(12, 0)
51fb4ac04eSJunfeng Guo #define VF_ARQT				(VF_BASE + 0x1000)
52fb4ac04eSJunfeng Guo 
53fb4ac04eSJunfeng Guo /* Transmit queues */
54fb4ac04eSJunfeng Guo #define VF_QTX_TAIL_BASE		0x00000000
55fb4ac04eSJunfeng Guo #define VF_QTX_TAIL(_QTX)		(VF_QTX_TAIL_BASE + (_QTX) * 0x4)
56fb4ac04eSJunfeng Guo #define VF_QTX_TAIL_EXT_BASE		0x00040000
57fb4ac04eSJunfeng Guo #define VF_QTX_TAIL_EXT(_QTX)		(VF_QTX_TAIL_EXT_BASE + ((_QTX) * 4))
58fb4ac04eSJunfeng Guo 
59fb4ac04eSJunfeng Guo /* Receive queues */
60fb4ac04eSJunfeng Guo #define VF_QRX_TAIL_BASE		0x00002000
61fb4ac04eSJunfeng Guo #define VF_QRX_TAIL(_QRX)		(VF_QRX_TAIL_BASE + ((_QRX) * 4))
62fb4ac04eSJunfeng Guo #define VF_QRX_TAIL_EXT_BASE		0x00050000
63fb4ac04eSJunfeng Guo #define VF_QRX_TAIL_EXT(_QRX)		(VF_QRX_TAIL_EXT_BASE + ((_QRX) * 4))
64fb4ac04eSJunfeng Guo #define VF_QRXB_TAIL_BASE		0x00060000
65fb4ac04eSJunfeng Guo #define VF_QRXB_TAIL(_QRX)		(VF_QRXB_TAIL_BASE + ((_QRX) * 4))
66fb4ac04eSJunfeng Guo 
67fb4ac04eSJunfeng Guo /* Interrupts */
68fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTL0			0x00005C00
69fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTL0_INTENA_S	0
70fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTL0_INTENA_M	BIT(VF_INT_DYN_CTL0_INTENA_S)
71fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTL0_ITR_INDX_S	3
72*8b8eab71SSimei Su #define VF_INT_DYN_CTL0_ITR_INDX_M	GENMASK(4, 3)
73fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN(_INT)		(0x00003800 + ((_INT) * 4))
74fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_EXT(_INT)	(0x00070000 + ((_INT) * 4))
75fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_INTENA_S	0
76fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_INTENA_M	BIT(VF_INT_DYN_CTLN_INTENA_S)
77fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_CLEARPBA_S	1
78fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_CLEARPBA_M	BIT(VF_INT_DYN_CTLN_CLEARPBA_S)
79fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_SWINT_TRIG_S	2
80fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_SWINT_TRIG_M	BIT(VF_INT_DYN_CTLN_SWINT_TRIG_S)
81fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_ITR_INDX_S	3
82*8b8eab71SSimei Su #define VF_INT_DYN_CTLN_ITR_INDX_M	GENMASK(4, 3)
83fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_INTERVAL_S	5
84fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_INTERVAL_M	BIT(VF_INT_DYN_CTLN_INTERVAL_S)
85fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_S	24
86fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_M	BIT(VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_S)
87fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_SW_ITR_INDX_S	25
88fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_SW_ITR_INDX_M	BIT(VF_INT_DYN_CTLN_SW_ITR_INDX_S)
89fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_WB_ON_ITR_S	30
90fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_WB_ON_ITR_M	BIT(VF_INT_DYN_CTLN_WB_ON_ITR_S)
91fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_INTENA_MSK_S	31
92fb4ac04eSJunfeng Guo #define VF_INT_DYN_CTLN_INTENA_MSK_M	BIT(VF_INT_DYN_CTLN_INTENA_MSK_S)
931ce244efSWenjing Qiao /* _ITR is ITR index, _INT is interrupt index, _itrn_indx_spacing is spacing
941ce244efSWenjing Qiao  * b/w itrn registers of the same vector
951ce244efSWenjing Qiao  */
961ce244efSWenjing Qiao #define VF_INT_ITR0(_ITR)		(0x00004C00 + ((_ITR) * 4))
971ce244efSWenjing Qiao #define VF_INT_ITRN_ADDR(_ITR, _reg_start, _itrn_indx_spacing)	\
98a97fb92cSSimei Su 	((_reg_start) + ((_ITR) * (_itrn_indx_spacing)))
99a97fb92cSSimei Su /* For VF with 16 vector support, itrn_reg_spacing is 0x4, itrn_indx_spacing
100a97fb92cSSimei Su  * is 0x40 and base register offset is 0x00002800
101a97fb92cSSimei Su  */
102a97fb92cSSimei Su #define VF_INT_ITRN(_INT, _ITR)		\
103a97fb92cSSimei Su 	(0x00002800 + ((_INT) * 4) + ((_ITR) * 0x40))
104a97fb92cSSimei Su /* For VF with 64 vector support, itrn_reg_spacing is 0x4, itrn_indx_spacing
105a97fb92cSSimei Su  * is 0x100 and base register offset is 0x00002C00
106a97fb92cSSimei Su  */
107a97fb92cSSimei Su #define VF_INT_ITRN_64(_INT, _ITR)	\
108a97fb92cSSimei Su 	(0x00002C00 + ((_INT) * 4) + ((_ITR) * 0x100))
109a97fb92cSSimei Su /* For VF with 2k vector support, itrn_reg_spacing is 0x4, itrn_indx_spacing
110a97fb92cSSimei Su  * is 0x2000 and base register offset is 0x00072000
111a97fb92cSSimei Su  */
112a97fb92cSSimei Su #define VF_INT_ITRN_2K(_INT, _ITR)	\
113a97fb92cSSimei Su 	(0x00072000 + ((_INT) * 4) + ((_ITR) * 0x2000))
114fb4ac04eSJunfeng Guo #define VF_INT_ITRN_MAX_INDEX		2
115fb4ac04eSJunfeng Guo #define VF_INT_ITRN_INTERVAL_S		0
116*8b8eab71SSimei Su #define VF_INT_ITRN_INTERVAL_M		GENMASK(11, 0)
117fb4ac04eSJunfeng Guo #define VF_INT_PBA_CLEAR		0x00008900
118fb4ac04eSJunfeng Guo 
119fb4ac04eSJunfeng Guo #define VF_INT_ICR0_ENA1		0x00005000
120fb4ac04eSJunfeng Guo #define VF_INT_ICR0_ENA1_ADMINQ_S	30
121fb4ac04eSJunfeng Guo #define VF_INT_ICR0_ENA1_ADMINQ_M	BIT(VF_INT_ICR0_ENA1_ADMINQ_S)
122fb4ac04eSJunfeng Guo #define VF_INT_ICR0_ENA1_RSVD_S		31
123fb4ac04eSJunfeng Guo #define VF_INT_ICR01			0x00004800
124fb4ac04eSJunfeng Guo #define VF_QF_HENA(_i)			(0x0000C400 + ((_i) * 4))
125fb4ac04eSJunfeng Guo #define VF_QF_HENA_MAX_INDX		1
126fb4ac04eSJunfeng Guo #define VF_QF_HKEY(_i)			(0x0000CC00 + ((_i) * 4))
127fb4ac04eSJunfeng Guo #define VF_QF_HKEY_MAX_INDX		12
128fb4ac04eSJunfeng Guo #define VF_QF_HLUT(_i)			(0x0000D000 + ((_i) * 4))
129fb4ac04eSJunfeng Guo #define VF_QF_HLUT_MAX_INDX		15
130fb4ac04eSJunfeng Guo #endif
131