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