xref: /dpdk/drivers/net/hns3/hns3_regs.h (revision 78399874af509e129c13c6771aafa8f27c456c95)
14c7dfaadSWei Hu (Xavier) /* SPDX-License-Identifier: BSD-3-Clause
253e6f86cSMin Hu (Connor)  * Copyright(c) 2018-2021 HiSilicon Limited.
34c7dfaadSWei Hu (Xavier)  */
44c7dfaadSWei Hu (Xavier) 
5*2ad146efSChengwen Feng #ifndef HNS3_REGS_H
6*2ad146efSChengwen Feng #define HNS3_REGS_H
74c7dfaadSWei Hu (Xavier) 
81c757dd5SChengwen Feng #include <ethdev_driver.h>
91c757dd5SChengwen Feng #include <rte_dev_info.h>
101c757dd5SChengwen Feng 
114c7dfaadSWei Hu (Xavier) /* bar registers for cmdq */
124c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_TX_ADDR_L_REG		0x27000
134c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_TX_ADDR_H_REG		0x27004
144c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_TX_DEPTH_REG		0x27008
154c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_TX_TAIL_REG		0x27010
164c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_TX_HEAD_REG		0x27014
174c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_RX_ADDR_L_REG		0x27018
184c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_RX_ADDR_H_REG		0x2701c
194c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_RX_DEPTH_REG		0x27020
204c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_RX_TAIL_REG		0x27024
214c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_RX_HEAD_REG		0x27028
224c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_INTR_STS_REG		0x27104
234c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_INTR_EN_REG		0x27108
244c7dfaadSWei Hu (Xavier) #define HNS3_CMDQ_INTR_GEN_REG		0x2710C
254c7dfaadSWei Hu (Xavier) 
264c7dfaadSWei Hu (Xavier) /* Vector0 interrupt CMDQ event source register(RW) */
274c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_CMDQ_SRC_REG	0x27100
284c7dfaadSWei Hu (Xavier) /* Vector0 interrupt CMDQ event status register(RO) */
294c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_CMDQ_STAT_REG	0x27104
304c7dfaadSWei Hu (Xavier) 
314c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_OTHER_INT_STS_REG	0x20800
324c7dfaadSWei Hu (Xavier) 
33f53a793bSWei Hu (Xavier) #define HNS3_RAS_PF_OTHER_INT_STS_REG	0x20B00
34f53a793bSWei Hu (Xavier) #define HNS3_RAS_REG_NFE_MASK		0xFF00
35f53a793bSWei Hu (Xavier) 
364c7dfaadSWei Hu (Xavier) #define HNS3_MISC_VECTOR_REG_BASE	0x20400
374c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_OTER_EN_REG	0x20600
384c7dfaadSWei Hu (Xavier) #define HNS3_MISC_RESET_STS_REG		0x20700
394c7dfaadSWei Hu (Xavier) #define HNS3_GLOBAL_RESET_REG		0x20A00
404c7dfaadSWei Hu (Xavier) #define HNS3_FUN_RST_ING		0x20C00
414c7dfaadSWei Hu (Xavier) #define HNS3_GRO_EN_REG			0x28000
420f10bd6bSMin Hu (Connor) 
430f10bd6bSMin Hu (Connor) #define HNS3_RPU_DROP_CNT_REG		0x28004
44fb5e9069SChengwen Feng #define HNS3_RXD_ADV_LAYOUT_EN_REG	0x28008
454c7dfaadSWei Hu (Xavier) 
464c7dfaadSWei Hu (Xavier) /* Vector0 register bits for reset */
474c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_FUNCRESET_INT_B	0
484c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_GLOBALRESET_INT_B	5
494c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_CORERESET_INT_B	6
504c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_IMPRESET_INT_B	7
514c7dfaadSWei Hu (Xavier) 
524c7dfaadSWei Hu (Xavier) /* CMDQ register bits for RX event(=MBX event) */
534c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_RX_CMDQ_INT_B	1
544c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_REG_MSIX_MASK	0x1FF00
554c7dfaadSWei Hu (Xavier) /* RST register bits for RESET event */
564c7dfaadSWei Hu (Xavier) #define HNS3_VECTOR0_RST_INT_B	2
574c7dfaadSWei Hu (Xavier) 
584c7dfaadSWei Hu (Xavier) #define HNS3_VF_RST_ING			0x07008
594c7dfaadSWei Hu (Xavier) #define HNS3_VF_RST_ING_BIT		BIT(16)
604c7dfaadSWei Hu (Xavier) 
614c7dfaadSWei Hu (Xavier) /* bar registers for rcb */
624c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_BASEADDR_L_REG		0x00000
634c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_BASEADDR_H_REG		0x00004
644c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_BD_NUM_REG			0x00008
654c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_BD_LEN_REG			0x0000C
664c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_MERGE_EN_REG		0x00014
674c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_TAIL_REG			0x00018
684c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_HEAD_REG			0x0001C
694c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_FBDNUM_REG			0x00020
704c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_OFFSET_REG			0x00024
714c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_FBD_OFFSET_REG		0x00028
724c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_PKTNUM_RECORD_REG		0x0002C
734c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_STASH_REG			0x00030
744c7dfaadSWei Hu (Xavier) #define HNS3_RING_RX_BD_ERR_REG			0x00034
754c7dfaadSWei Hu (Xavier) 
764c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_BASEADDR_L_REG		0x00040
774c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_BASEADDR_H_REG		0x00044
784c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_BD_NUM_REG			0x00048
794c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_PRIORITY_REG		0x0004C
804c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_TC_REG			0x00050
814c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_MERGE_EN_REG		0x00054
824c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_TAIL_REG			0x00058
834c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_HEAD_REG			0x0005C
844c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_FBDNUM_REG			0x00060
854c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_OFFSET_REG			0x00064
864c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_EBD_NUM_REG		0x00068
874c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_PKTNUM_RECORD_REG		0x0006C
884c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_EBD_OFFSET_REG		0x00070
894c7dfaadSWei Hu (Xavier) #define HNS3_RING_TX_BD_ERR_REG			0x00074
904c7dfaadSWei Hu (Xavier) 
914c7dfaadSWei Hu (Xavier) #define HNS3_RING_EN_REG			0x00090
92fa29fe45SChengchang Tang #define HNS3_RING_RX_EN_REG			0x00098
93fa29fe45SChengchang Tang #define HNS3_RING_TX_EN_REG			0x000d4
944c7dfaadSWei Hu (Xavier) 
954c7dfaadSWei Hu (Xavier) #define HNS3_RING_EN_B				0
964c7dfaadSWei Hu (Xavier) 
974c7dfaadSWei Hu (Xavier) #define HNS3_TQP_REG_OFFSET			0x80000
984c7dfaadSWei Hu (Xavier) #define HNS3_TQP_REG_SIZE			0x200
994c7dfaadSWei Hu (Xavier) 
10076d79456SWei Hu (Xavier) #define HNS3_TQP_EXT_REG_OFFSET			0x100
10176d79456SWei Hu (Xavier) #define HNS3_MIN_EXTEND_QUEUE_ID		1024
10276d79456SWei Hu (Xavier) 
1034c7dfaadSWei Hu (Xavier) /* bar registers for tqp interrupt */
1042b6b0981SChengchang Tang #define HNS3_TQP_INTR_REG_BASE			0x20000
1052b6b0981SChengchang Tang #define HNS3_TQP_INTR_EXT_REG_BASE		0x30000
1062b6b0981SChengchang Tang #define HNS3_TQP_INTR_CTRL_REG			0
1072b6b0981SChengchang Tang #define HNS3_TQP_INTR_GL0_REG			0x100
1082b6b0981SChengchang Tang #define HNS3_TQP_INTR_GL1_REG			0x200
1092b6b0981SChengchang Tang #define HNS3_TQP_INTR_GL2_REG			0x300
1102b6b0981SChengchang Tang #define HNS3_TQP_INTR_RL_REG			0x900
1112b6b0981SChengchang Tang #define HNS3_TQP_INTR_TX_QL_REG			0xe00
1122b6b0981SChengchang Tang #define HNS3_TQP_INTR_RX_QL_REG			0xf00
1132b6b0981SChengchang Tang #define HNS3_TQP_INTR_RL_EN_B			6
1144c7dfaadSWei Hu (Xavier) 
1152b6b0981SChengchang Tang #define HNS3_MIN_EXT_TQP_INTR_ID		64
1162b6b0981SChengchang Tang #define HNS3_TQP_INTR_LOW_ORDER_OFFSET		0x4
1172b6b0981SChengchang Tang #define HNS3_TQP_INTR_HIGH_ORDER_OFFSET		0x1000
1182b6b0981SChengchang Tang 
119ef2e785cSWei Hu (Xavier) #define HNS3_TQP_INTR_GL_MAX			0x1FE0
120ef2e785cSWei Hu (Xavier) #define HNS3_TQP_INTR_GL_DEFAULT		20
12127911a6eSWei Hu (Xavier) #define HNS3_TQP_INTR_GL_UNIT_1US		BIT(31)
122ef2e785cSWei Hu (Xavier) #define HNS3_TQP_INTR_RL_MAX			0xEC
123ef2e785cSWei Hu (Xavier) #define HNS3_TQP_INTR_RL_ENABLE_MASK		0x40
124ef2e785cSWei Hu (Xavier) #define HNS3_TQP_INTR_RL_DEFAULT		0
12527911a6eSWei Hu (Xavier) #define HNS3_TQP_INTR_QL_DEFAULT		0
126ef2e785cSWei Hu (Xavier) 
127ef2e785cSWei Hu (Xavier) /* gl_usec convert to hardware count, as writing each 1 represents 2us */
128ef2e785cSWei Hu (Xavier) #define HNS3_GL_USEC_TO_REG(gl_usec)		((gl_usec) >> 1)
129ef2e785cSWei Hu (Xavier) /* rl_usec convert to hardware count, as writing each 1 represents 4us */
130ef2e785cSWei Hu (Xavier) #define HNS3_RL_USEC_TO_REG(rl_usec)		((rl_usec) >> 2)
1314c7dfaadSWei Hu (Xavier) 
132936eda25SWei Hu (Xavier) int hns3_get_regs(struct rte_eth_dev *eth_dev, struct rte_dev_reg_info *regs);
133*2ad146efSChengwen Feng #endif /* HNS3_REGS_H */
134