1fc1992baSJijie Shao /* SPDX-License-Identifier: GPL-2.0+ */ 2fc1992baSJijie Shao /* Copyright (c) 2024 Hisilicon Limited. */ 3fc1992baSJijie Shao 4fc1992baSJijie Shao #ifndef __HBG_REG_H 5fc1992baSJijie Shao #define __HBG_REG_H 6fc1992baSJijie Shao 7fc1992baSJijie Shao /* DEV SPEC */ 8fc1992baSJijie Shao #define HBG_REG_SPEC_VALID_ADDR 0x0000 9fc1992baSJijie Shao #define HBG_REG_EVENT_REQ_ADDR 0x0004 10fc1992baSJijie Shao #define HBG_REG_MAC_ID_ADDR 0x0008 11fc1992baSJijie Shao #define HBG_REG_PHY_ID_ADDR 0x000C 12fc1992baSJijie Shao #define HBG_REG_MAC_ADDR_ADDR 0x0010 13fc1992baSJijie Shao #define HBG_REG_MDIO_FREQ_ADDR 0x0024 14fc1992baSJijie Shao #define HBG_REG_MAX_MTU_ADDR 0x0028 15fc1992baSJijie Shao #define HBG_REG_MIN_MTU_ADDR 0x002C 16fc1992baSJijie Shao #define HBG_REG_TX_FIFO_NUM_ADDR 0x0030 17fc1992baSJijie Shao #define HBG_REG_RX_FIFO_NUM_ADDR 0x0034 18fc1992baSJijie Shao #define HBG_REG_VLAN_LAYERS_ADDR 0x0038 19fc1992baSJijie Shao 20a239b2b1SJijie Shao /* MDIO */ 21a239b2b1SJijie Shao #define HBG_REG_MDIO_BASE 0x8000 22a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_ADDR (HBG_REG_MDIO_BASE + 0x0000) 23a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_CLK_SEL_EXP_B BIT(17) 24a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_AUTO_SCAN_B BIT(16) 25a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_CLK_SEL_B BIT(15) 26a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_START_B BIT(14) 27a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_ST_M GENMASK(13, 12) 28a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_OP_M GENMASK(11, 10) 29a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_PRTAD_M GENMASK(9, 5) 30a239b2b1SJijie Shao #define HBG_REG_MDIO_COMMAND_DEVAD_M GENMASK(4, 0) 31a239b2b1SJijie Shao #define HBG_REG_MDIO_WDATA_ADDR (HBG_REG_MDIO_BASE + 0x0008) 32a239b2b1SJijie Shao #define HBG_REG_MDIO_WDATA_M GENMASK(15, 0) 33a239b2b1SJijie Shao #define HBG_REG_MDIO_RDATA_ADDR (HBG_REG_MDIO_BASE + 0x000C) 34a239b2b1SJijie Shao #define HBG_REG_MDIO_STA_ADDR (HBG_REG_MDIO_BASE + 0x0010) 35a239b2b1SJijie Shao 36a239b2b1SJijie Shao /* GMAC */ 37a239b2b1SJijie Shao #define HBG_REG_SGMII_BASE 0x10000 38a239b2b1SJijie Shao #define HBG_REG_DUPLEX_TYPE_ADDR (HBG_REG_SGMII_BASE + 0x0008) 39a239b2b1SJijie Shao #define HBG_REG_DUPLEX_B BIT(0) 40ff4edac6SJijie Shao #define HBG_REG_MAX_FRAME_SIZE_ADDR (HBG_REG_SGMII_BASE + 0x003C) 41a239b2b1SJijie Shao #define HBG_REG_PORT_MODE_ADDR (HBG_REG_SGMII_BASE + 0x0040) 42a239b2b1SJijie Shao #define HBG_REG_PORT_MODE_M GENMASK(3, 0) 43ff4edac6SJijie Shao #define HBG_REG_PORT_ENABLE_ADDR (HBG_REG_SGMII_BASE + 0x0044) 44ff4edac6SJijie Shao #define HBG_REG_PORT_ENABLE_RX_B BIT(1) 45ff4edac6SJijie Shao #define HBG_REG_PORT_ENABLE_TX_B BIT(2) 46a239b2b1SJijie Shao #define HBG_REG_TRANSMIT_CTRL_ADDR (HBG_REG_SGMII_BASE + 0x0060) 47a239b2b1SJijie Shao #define HBG_REG_TRANSMIT_CTRL_PAD_EN_B BIT(7) 48a239b2b1SJijie Shao #define HBG_REG_TRANSMIT_CTRL_CRC_ADD_B BIT(6) 49a239b2b1SJijie Shao #define HBG_REG_TRANSMIT_CTRL_AN_EN_B BIT(5) 50a239b2b1SJijie Shao #define HBG_REG_CF_CRC_STRIP_ADDR (HBG_REG_SGMII_BASE + 0x01B0) 51a239b2b1SJijie Shao #define HBG_REG_CF_CRC_STRIP_B BIT(0) 52a239b2b1SJijie Shao #define HBG_REG_MODE_CHANGE_EN_ADDR (HBG_REG_SGMII_BASE + 0x01B4) 53a239b2b1SJijie Shao #define HBG_REG_MODE_CHANGE_EN_B BIT(0) 54a239b2b1SJijie Shao #define HBG_REG_RECV_CTRL_ADDR (HBG_REG_SGMII_BASE + 0x01E0) 55a239b2b1SJijie Shao #define HBG_REG_RECV_CTRL_STRIP_PAD_EN_B BIT(3) 56ff4edac6SJijie Shao #define HBG_REG_STATION_ADDR_LOW_2_ADDR (HBG_REG_SGMII_BASE + 0x0210) 57ff4edac6SJijie Shao #define HBG_REG_STATION_ADDR_HIGH_2_ADDR (HBG_REG_SGMII_BASE + 0x0214) 58a239b2b1SJijie Shao 59a239b2b1SJijie Shao /* PCU */ 604d089035SJijie Shao #define HBG_REG_CF_INTRPT_MSK_ADDR (HBG_REG_SGMII_BASE + 0x042C) 614d089035SJijie Shao #define HBG_INT_MSK_WE_ERR_B BIT(31) 624d089035SJijie Shao #define HBG_INT_MSK_RBREQ_ERR_B BIT(30) 634d089035SJijie Shao #define HBG_INT_MSK_MAC_FIFO_ERR_B BIT(29) 644d089035SJijie Shao #define HBG_INT_MSK_RX_AHB_ERR_B BIT(28) 654d089035SJijie Shao #define HBG_INT_MSK_RX_DROP_B BIT(26) 664d089035SJijie Shao #define HBG_INT_MSK_TX_DROP_B BIT(25) 674d089035SJijie Shao #define HBG_INT_MSK_TXCFG_AVL_B BIT(24) 684d089035SJijie Shao #define HBG_INT_MSK_REL_BUF_ERR_B BIT(23) 694d089035SJijie Shao #define HBG_INT_MSK_RX_BUF_AVL_B BIT(22) 704d089035SJijie Shao #define HBG_INT_MSK_TX_AHB_ERR_B BIT(21) 714d089035SJijie Shao #define HBG_INT_MSK_SRAM_PARITY_ERR_B BIT(20) 724d089035SJijie Shao #define HBG_INT_MSK_MAC_APP_TX_FIFO_ERR_B BIT(19) 734d089035SJijie Shao #define HBG_INT_MSK_MAC_APP_RX_FIFO_ERR_B BIT(18) 744d089035SJijie Shao #define HBG_INT_MSK_MAC_PCS_TX_FIFO_ERR_B BIT(17) 754d089035SJijie Shao #define HBG_INT_MSK_MAC_PCS_RX_FIFO_ERR_B BIT(16) 764d089035SJijie Shao #define HBG_INT_MSK_MAC_MII_FIFO_ERR_B BIT(15) 774d089035SJijie Shao #define HBG_INT_MSK_TX_B BIT(1) /* just used in driver */ 784d089035SJijie Shao #define HBG_INT_MSK_RX_B BIT(0) /* just used in driver */ 794d089035SJijie Shao #define HBG_REG_CF_INTRPT_STAT_ADDR (HBG_REG_SGMII_BASE + 0x0434) 804d089035SJijie Shao #define HBG_REG_CF_INTRPT_CLR_ADDR (HBG_REG_SGMII_BASE + 0x0438) 81ff4edac6SJijie Shao #define HBG_REG_MAX_FRAME_LEN_ADDR (HBG_REG_SGMII_BASE + 0x0444) 82ff4edac6SJijie Shao #define HBG_REG_MAX_FRAME_LEN_M GENMASK(15, 0) 8340735e75SJijie Shao #define HBG_REG_CF_CFF_DATA_NUM_ADDR (HBG_REG_SGMII_BASE + 0x045C) 8440735e75SJijie Shao #define HBG_REG_CF_CFF_DATA_NUM_ADDR_TX_M GENMASK(8, 0) 85*f72e2559SJijie Shao #define HBG_REG_CF_CFF_DATA_NUM_ADDR_RX_M GENMASK(24, 16) 8640735e75SJijie Shao #define HBG_REG_TX_CFF_ADDR_0_ADDR (HBG_REG_SGMII_BASE + 0x0488) 8740735e75SJijie Shao #define HBG_REG_TX_CFF_ADDR_1_ADDR (HBG_REG_SGMII_BASE + 0x048C) 8840735e75SJijie Shao #define HBG_REG_TX_CFF_ADDR_2_ADDR (HBG_REG_SGMII_BASE + 0x0490) 8940735e75SJijie Shao #define HBG_REG_TX_CFF_ADDR_3_ADDR (HBG_REG_SGMII_BASE + 0x0494) 90*f72e2559SJijie Shao #define HBG_REG_RX_CFF_ADDR_ADDR (HBG_REG_SGMII_BASE + 0x04A0) 91a239b2b1SJijie Shao #define HBG_REG_RX_BUF_SIZE_ADDR (HBG_REG_SGMII_BASE + 0x04E4) 92a239b2b1SJijie Shao #define HBG_REG_RX_BUF_SIZE_M GENMASK(15, 0) 93a239b2b1SJijie Shao #define HBG_REG_BUS_CTRL_ADDR (HBG_REG_SGMII_BASE + 0x04E8) 94a239b2b1SJijie Shao #define HBG_REG_BUS_CTRL_ENDIAN_M GENMASK(2, 1) 95a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_ADDR (HBG_REG_SGMII_BASE + 0x04F0) 96a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_RXBUF_1ST_SKIP_SIZE_M GENMASK(31, 28) 97a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_TIME_INF_EN_B BIT(23) 98a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_RX_ALIGN_NUM_M GENMASK(18, 17) 99a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_PORT_NUM GENMASK(16, 13) 100a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_RX_GET_ADDR_MODE_B BIT(12) 101a239b2b1SJijie Shao #define HBG_REG_RX_CTRL_RXBUF_1ST_SKIP_SIZE2_M GENMASK(3, 0) 102a239b2b1SJijie Shao #define HBG_REG_RX_PKT_MODE_ADDR (HBG_REG_SGMII_BASE + 0x04F4) 103a239b2b1SJijie Shao #define HBG_REG_RX_PKT_MODE_PARSE_MODE_M GENMASK(22, 21) 1044d089035SJijie Shao #define HBG_REG_CF_IND_TXINT_MSK_ADDR (HBG_REG_SGMII_BASE + 0x0694) 105ff4edac6SJijie Shao #define HBG_REG_IND_INTR_MASK_B BIT(0) 1064d089035SJijie Shao #define HBG_REG_CF_IND_TXINT_STAT_ADDR (HBG_REG_SGMII_BASE + 0x0698) 1074d089035SJijie Shao #define HBG_REG_CF_IND_TXINT_CLR_ADDR (HBG_REG_SGMII_BASE + 0x069C) 1084d089035SJijie Shao #define HBG_REG_CF_IND_RXINT_MSK_ADDR (HBG_REG_SGMII_BASE + 0x06a0) 1094d089035SJijie Shao #define HBG_REG_CF_IND_RXINT_STAT_ADDR (HBG_REG_SGMII_BASE + 0x06a4) 1104d089035SJijie Shao #define HBG_REG_CF_IND_RXINT_CLR_ADDR (HBG_REG_SGMII_BASE + 0x06a8) 111a239b2b1SJijie Shao 112a239b2b1SJijie Shao enum hbg_port_mode { 113a239b2b1SJijie Shao /* 0x0 ~ 0x5 are reserved */ 114a239b2b1SJijie Shao HBG_PORT_MODE_SGMII_10M = 0x6, 115a239b2b1SJijie Shao HBG_PORT_MODE_SGMII_100M = 0x7, 116a239b2b1SJijie Shao HBG_PORT_MODE_SGMII_1000M = 0x8, 117a239b2b1SJijie Shao }; 118a239b2b1SJijie Shao 11940735e75SJijie Shao struct hbg_tx_desc { 12040735e75SJijie Shao u32 word0; 12140735e75SJijie Shao u32 word1; 12240735e75SJijie Shao u32 word2; /* pkt_addr */ 12340735e75SJijie Shao u32 word3; /* clear_addr */ 12440735e75SJijie Shao }; 12540735e75SJijie Shao 12640735e75SJijie Shao #define HBG_TX_DESC_W0_IP_OFF_M GENMASK(30, 26) 12740735e75SJijie Shao #define HBG_TX_DESC_W0_l3_CS_B BIT(2) 12840735e75SJijie Shao #define HBG_TX_DESC_W0_WB_B BIT(1) 12940735e75SJijie Shao #define HBG_TX_DESC_W0_l4_CS_B BIT(0) 13040735e75SJijie Shao #define HBG_TX_DESC_W1_SEND_LEN_M GENMASK(19, 4) 13140735e75SJijie Shao 132*f72e2559SJijie Shao struct hbg_rx_desc { 133*f72e2559SJijie Shao u32 word0; 134*f72e2559SJijie Shao u32 word1; /* tag */ 135*f72e2559SJijie Shao u32 word2; 136*f72e2559SJijie Shao u32 word3; 137*f72e2559SJijie Shao u32 word4; 138*f72e2559SJijie Shao u32 word5; 139*f72e2559SJijie Shao }; 140*f72e2559SJijie Shao 141*f72e2559SJijie Shao #define HBG_RX_DESC_W2_PKT_LEN_M GENMASK(31, 16) 142*f72e2559SJijie Shao 143fc1992baSJijie Shao #endif 144