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