Linux Audio

Check our new training course

Embedded Linux training

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