11bd4fe43Sopenharmony_ci/* 21bd4fe43Sopenharmony_ci * Copyright (c) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED. 31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License. 51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at 61bd4fe43Sopenharmony_ci * 71bd4fe43Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81bd4fe43Sopenharmony_ci * 91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and 131bd4fe43Sopenharmony_ci * limitations under the License. 141bd4fe43Sopenharmony_ci */ 151bd4fe43Sopenharmony_ci 161bd4fe43Sopenharmony_ci#ifndef CTRL_H 171bd4fe43Sopenharmony_ci#define CTRL_H 181bd4fe43Sopenharmony_ci 191bd4fe43Sopenharmony_ci#include "eth_mac.h" 201bd4fe43Sopenharmony_ci#include "osal.h" 211bd4fe43Sopenharmony_ci 221bd4fe43Sopenharmony_ci#ifdef __cplusplus 231bd4fe43Sopenharmony_ci#if __cplusplus 241bd4fe43Sopenharmony_ciextern "C" { 251bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 261bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 271bd4fe43Sopenharmony_ci 281bd4fe43Sopenharmony_ci#define GLB_HOSTMAC_L32 0x1300 291bd4fe43Sopenharmony_ci#define BITS_HOSTMAC_L32 MK_BITS(0, 32) 301bd4fe43Sopenharmony_ci#define GLB_HOSTMAC_H16 0x1304 311bd4fe43Sopenharmony_ci#define BITS_HOSTMAC_H16 MK_BITS(0, 16) 321bd4fe43Sopenharmony_ci 331bd4fe43Sopenharmony_ci#define GLB_SOFT_RESET 0x1308 341bd4fe43Sopenharmony_ci#define BITS_ETH_SOFT_RESET_ALL MK_BITS(0, 1) 351bd4fe43Sopenharmony_ci#define BITS_ETH_SOFT_RESET_UP MK_BITS(2, 1) 361bd4fe43Sopenharmony_ci#define BITS_ETH_SOFT_RESET_DOWN MK_BITS(3, 1) 371bd4fe43Sopenharmony_ci 381bd4fe43Sopenharmony_ci#define GLB_FWCTRL 0x1310 391bd4fe43Sopenharmony_ci#define BITS_VLAN_ENABLE MK_BITS(0, 1) 401bd4fe43Sopenharmony_ci#define BITS_FW2CPU_ENA_U MK_BITS(5, 1) 411bd4fe43Sopenharmony_ci#define BITS_FW2CPU_ENA_UP MK_BITS(5, 1) 421bd4fe43Sopenharmony_ci#define BITS_FW2CPU_ENA_D MK_BITS(9, 1) 431bd4fe43Sopenharmony_ci#define BITS_FW2CPU_ENA_DOWN MK_BITS(9, 1) 441bd4fe43Sopenharmony_ci#define BITS_FWALL2CPU_U MK_BITS(7, 1) 451bd4fe43Sopenharmony_ci#define BITS_FWALL2CPU_UP MK_BITS(7, 1) 461bd4fe43Sopenharmony_ci#define BITS_FWALL2CPU_D MK_BITS(11, 1) 471bd4fe43Sopenharmony_ci#define BITS_FWALL2CPU_DOWN MK_BITS(11, 1) 481bd4fe43Sopenharmony_ci#define BITS_FW2OTHPORT_ENA_U MK_BITS(4, 1) 491bd4fe43Sopenharmony_ci#define BITS_FW2OTHPORT_ENA_D MK_BITS(8, 1) 501bd4fe43Sopenharmony_ci#define BITS_FW2OTHPORT_FORCE_U MK_BITS(6, 1) 511bd4fe43Sopenharmony_ci#define BITS_FW2OTHPORT_FORCE_D MK_BITS(10, 1) 521bd4fe43Sopenharmony_ci 531bd4fe43Sopenharmony_ci#define GLB_MACTCTRL 0x1314 541bd4fe43Sopenharmony_ci#define BITS_MACT_ENA_U MK_BITS(7, 1) 551bd4fe43Sopenharmony_ci#define BITS_MACT_ENA_D MK_BITS(15, 1) 561bd4fe43Sopenharmony_ci#define BITS_BROAD2CPU_U MK_BITS(5, 1) 571bd4fe43Sopenharmony_ci#define BITS_BROAD2CPU_UP MK_BITS(5, 1) 581bd4fe43Sopenharmony_ci#define BITS_BROAD2CPU_D MK_BITS(13, 1) 591bd4fe43Sopenharmony_ci#define BITS_BROAD2CPU_DOWN MK_BITS(13, 1) 601bd4fe43Sopenharmony_ci#define BITS_BROAD2OTHPORT_U MK_BITS(4, 1) 611bd4fe43Sopenharmony_ci#define BITS_BROAD2OTHPORT_D MK_BITS(12, 1) 621bd4fe43Sopenharmony_ci#define BITS_MULTI2CPU_U MK_BITS(3, 1) 631bd4fe43Sopenharmony_ci#define BITS_MULTI2CPU_D MK_BITS(11, 1) 641bd4fe43Sopenharmony_ci#define BITS_MULTI2OTHPORT_U MK_BITS(2, 1) 651bd4fe43Sopenharmony_ci#define BITS_MULTI2OTHPORT_D MK_BITS(10, 1) 661bd4fe43Sopenharmony_ci#define BITS_UNI2CPU_U MK_BITS(1, 1) 671bd4fe43Sopenharmony_ci#define BITS_UNI2CPU_D MK_BITS(9, 1) 681bd4fe43Sopenharmony_ci#define BITS_UNI2OTHPORT_U MK_BITS(0, 1) 691bd4fe43Sopenharmony_ci#define BITS_UNI2OTHPORT_D MK_BITS(8, 1) 701bd4fe43Sopenharmony_ci 711bd4fe43Sopenharmony_ci/* ENDIAN */ 721bd4fe43Sopenharmony_ci#define GLB_ENDIAN_MOD 0x1318 731bd4fe43Sopenharmony_ci#define BITS_ENDIAN MK_BITS(0, 2) 741bd4fe43Sopenharmony_ci#define HIETH_BIG_ENDIAN 0 751bd4fe43Sopenharmony_ci#define HIETH_LITTLE_ENDIAN 3 761bd4fe43Sopenharmony_ci 771bd4fe43Sopenharmony_ci/* IRQs */ 781bd4fe43Sopenharmony_ci#define GLB_RO_IRQ_STAT 0x1330 791bd4fe43Sopenharmony_ci#define GLB_RW_IRQ_ENA 0x1334 801bd4fe43Sopenharmony_ci#define GLB_RW_IRQ_RAW 0x1338 811bd4fe43Sopenharmony_ci 821bd4fe43Sopenharmony_ci/* IRQs mask bits */ 831bd4fe43Sopenharmony_ci#define BITS_IRQS_U MK_BITS(0, 8) 841bd4fe43Sopenharmony_ci#define BITS_VLAN_IRQS MK_BITS(11, 1) 851bd4fe43Sopenharmony_ci#define BITS_MDIO_IRQS MK_BITS(13, 2) 861bd4fe43Sopenharmony_ci#define BITS_IRQS_ENA_D MK_BITS(17, 1) 871bd4fe43Sopenharmony_ci#define BITS_IRQS_ENA_U MK_BITS(18, 1) 881bd4fe43Sopenharmony_ci#define BITS_IRQS_ENA_ALLPORT MK_BITS(19, 1) 891bd4fe43Sopenharmony_ci#define BITS_IRQS_D MK_BITS(20, 8) 901bd4fe43Sopenharmony_ci 911bd4fe43Sopenharmony_ci#define BITS_IRQS_MASK_U (0xFF) 921bd4fe43Sopenharmony_ci#define BITS_IRQS_MASK_D (0xFF << 20) 931bd4fe43Sopenharmony_ci 941bd4fe43Sopenharmony_ci/* IRQs bit name */ 951bd4fe43Sopenharmony_ci#define HIETH_INT_RX_RDY_U (1 << 0) 961bd4fe43Sopenharmony_ci#define HIETH_INT_RX_RDY_D (1 << 20) 971bd4fe43Sopenharmony_ci#define HIETH_INT_TX_FIN_U (1 << 1) 981bd4fe43Sopenharmony_ci#define HIETH_INT_TX_FIN_D (1 << 21) 991bd4fe43Sopenharmony_ci#define HIETH_INT_LINK_CH_U (1 << 2) 1001bd4fe43Sopenharmony_ci#define HIETH_INT_LINK_CH_D (1 << 22) 1011bd4fe43Sopenharmony_ci#define HIETH_INT_SPEED_CH_U (1 << 3) 1021bd4fe43Sopenharmony_ci#define HIETH_INT_SPEED_CH_D (1 << 23) 1031bd4fe43Sopenharmony_ci#define HIETH_INT_DUPLEX_CH_U (1 << 4) 1041bd4fe43Sopenharmony_ci#define HIETH_INT_DUPLEX_CH_D (1 << 24) 1051bd4fe43Sopenharmony_ci#define HIETH_INT_STATE_CH_U (1 << 5) 1061bd4fe43Sopenharmony_ci#define HIETH_INT_STATE_CH_D (1 << 25) 1071bd4fe43Sopenharmony_ci#define HIETH_INT_TXQUE_RDY_U (1 << 6) 1081bd4fe43Sopenharmony_ci#define HIETH_INT_TXQUE_RDY_D (1 << 26) 1091bd4fe43Sopenharmony_ci#define HIETH_INT_MULTI_RXRDY_U (1 << 7) 1101bd4fe43Sopenharmony_ci#define HIETH_INT_MULTI_RXRDY_D (1 << 27) 1111bd4fe43Sopenharmony_ci#define HIETH_INT_TX_ERR_U (1 << 8) 1121bd4fe43Sopenharmony_ci#define HIETH_INT_TX_ERR_D (1 << 28) 1131bd4fe43Sopenharmony_ci 1141bd4fe43Sopenharmony_ci#define HIETH_INT_MDIO_FINISH (1 << 12) 1151bd4fe43Sopenharmony_ci#define HIETH_INT_UNKNOW_VLANID (1 << 13) 1161bd4fe43Sopenharmony_ci#define HIETH_INT_UNKNOW_VLANM (1 << 14) 1171bd4fe43Sopenharmony_ci 1181bd4fe43Sopenharmony_ci#define GLB_DN_HOSTMAC_L32 0x1340 1191bd4fe43Sopenharmony_ci#define GLB_DN_HOSTMAC_H16 0x1344 1201bd4fe43Sopenharmony_ci#define GLB_DN_HOSTMAC_ENA 0x1348 1211bd4fe43Sopenharmony_ci#define BITS_DN_HOST_ENA MK_BITS(0, 1) 1221bd4fe43Sopenharmony_ci 1231bd4fe43Sopenharmony_ci#define GLB_MAC_L32_BASE (0x1400) 1241bd4fe43Sopenharmony_ci#define GLB_MAC_H16_BASE (0x1404) 1251bd4fe43Sopenharmony_ci#define GLB_MAC_L32_BASE_D (0x1400 + 16 * 0x8) 1261bd4fe43Sopenharmony_ci#define GLB_MAC_H16_BASE_D (0x1404 + 16 * 0x8) 1271bd4fe43Sopenharmony_ci#define BITS_MACFLT_HI16 MK_BITS(0, 16) 1281bd4fe43Sopenharmony_ci#define BITS_MACFLT_FW2CPU_U MK_BITS(21, 1) 1291bd4fe43Sopenharmony_ci#define BITS_MACFLT_FW2PORT_U MK_BITS(20, 1) 1301bd4fe43Sopenharmony_ci#define BITS_MACFLT_ENA_U MK_BITS(17, 1) 1311bd4fe43Sopenharmony_ci#define BITS_MACFLT_FW2CPU_D MK_BITS(19, 1) 1321bd4fe43Sopenharmony_ci#define BITS_MACFLT_FW2PORT_D MK_BITS(18, 1) 1331bd4fe43Sopenharmony_ci#define BITS_MACFLT_ENA_D MK_BITS(16, 1) 1341bd4fe43Sopenharmony_ci 1351bd4fe43Sopenharmony_ci/* Tx/Rx Queue depth */ 1361bd4fe43Sopenharmony_ci#define U_GLB_QLEN_SET 0x0344 1371bd4fe43Sopenharmony_ci#define D_GLB_QLEN_SET 0x2344 1381bd4fe43Sopenharmony_ci#define BITS_TXQ_DEP MK_BITS(0, 6) 1391bd4fe43Sopenharmony_ci#define BITS_RXQ_DEP MK_BITS(8, 6) 1401bd4fe43Sopenharmony_ci 1411bd4fe43Sopenharmony_ci#define U_GLB_FC_LEVEL 0x0348 1421bd4fe43Sopenharmony_ci#define D_GLB_FC_LEVEL 0x2348 1431bd4fe43Sopenharmony_ci#define BITS_FC_DEACTIVE_THR MK_BITS(0, 6) 1441bd4fe43Sopenharmony_ci#define BITS_FC_ACTIVE_THR MK_BITS(8, 6) 1451bd4fe43Sopenharmony_ci#define BITS_FC_EN MK_BITS(14, 1) 1461bd4fe43Sopenharmony_ci 1471bd4fe43Sopenharmony_ci#define BITS_PAUSE_EN MK_BITS(18, 1) 1481bd4fe43Sopenharmony_ci 1491bd4fe43Sopenharmony_ci/* Rx (read only) Queue-ID and LEN */ 1501bd4fe43Sopenharmony_ci#define U_GLB_RO_IQFRM_DES 0x0354 1511bd4fe43Sopenharmony_ci#define D_GLB_RO_IQFRM_DES 0x2354 1521bd4fe43Sopenharmony_ci 1531bd4fe43Sopenharmony_ci/* rx buffer addr. */ 1541bd4fe43Sopenharmony_ci#define U_GLB_RXFRM_SADDR 0x0350 1551bd4fe43Sopenharmony_ci#define D_GLB_RXFRM_SADDR 0x2350 1561bd4fe43Sopenharmony_ci/* bits of U_GLB_RO_IQFRM_DES */ 1571bd4fe43Sopenharmony_ci#define BITS_RXPKG_LEN MK_BITS(0, 11) 1581bd4fe43Sopenharmony_ci#define BITS_RXPKG_ID MK_BITS(12, 6) 1591bd4fe43Sopenharmony_ci#define BITS_FRM_VLAN_VID MK_BITS(18, 1) 1601bd4fe43Sopenharmony_ci#define BITS_FD_VID_VID MK_BITS(19, 1) 1611bd4fe43Sopenharmony_ci#define BITS_FD_VLANID MK_BITS(20, 12) 1621bd4fe43Sopenharmony_ci#define BITS_RXPKG_LEN_OFFSET 0 1631bd4fe43Sopenharmony_ci#define BITS_RXPKG_LEN_MASK 0xFFF 1641bd4fe43Sopenharmony_ci#define BITS_PAYLOAD_ERR_OFFSET 20 1651bd4fe43Sopenharmony_ci#define BITS_PAYLOAD_ERR_MASK 0x1 1661bd4fe43Sopenharmony_ci#define BITS_HEADER_ERR_OFFSET 21 1671bd4fe43Sopenharmony_ci#define BITS_HEADER_ERR_MASK 0x1 1681bd4fe43Sopenharmony_ci#define BITS_PAYLOAD_DONE_OFFSET 22 1691bd4fe43Sopenharmony_ci#define BITS_PAYLOAD_DONE_MASK 0x1 1701bd4fe43Sopenharmony_ci#define BITS_HEADER_DONE_OFFSET 23 1711bd4fe43Sopenharmony_ci#define BITS_HEADER_DONE_MASK 0x1 1721bd4fe43Sopenharmony_ci 1731bd4fe43Sopenharmony_ci/* Rx ADDR */ 1741bd4fe43Sopenharmony_ci#define U_GLB_IQ_ADDR 0x0358 1751bd4fe43Sopenharmony_ci#define D_GLB_IQ_ADDR 0x2358 1761bd4fe43Sopenharmony_ci 1771bd4fe43Sopenharmony_ci/* Tx ADDR and LEN */ 1781bd4fe43Sopenharmony_ci#define U_GLB_EQ_ADDR 0x0360 1791bd4fe43Sopenharmony_ci#define D_GLB_EQ_ADDR 0x2360 1801bd4fe43Sopenharmony_ci#define U_GLB_EQFRM_LEN 0x0364 1811bd4fe43Sopenharmony_ci#define D_GLB_EQFRM_LEN 0x2364 1821bd4fe43Sopenharmony_ci/* bits of U_GLB_EQFRM_LEN */ 1831bd4fe43Sopenharmony_ci#ifdef HIETH_TSO_SUPPORTED 1841bd4fe43Sopenharmony_ci#define BITS_TXINQ_LEN MK_BITS(0, 32) 1851bd4fe43Sopenharmony_ci#else 1861bd4fe43Sopenharmony_ci#define BITS_TXINQ_LEN MK_BITS(0, 11) 1871bd4fe43Sopenharmony_ci#endif 1881bd4fe43Sopenharmony_ci 1891bd4fe43Sopenharmony_ci#ifdef HIETH_TSO_SUPPORTED 1901bd4fe43Sopenharmony_ci/* TSO debug enable */ 1911bd4fe43Sopenharmony_ci#define U_GLB_TSO_DBG_EN 0x03A4 1921bd4fe43Sopenharmony_ci#define D_GLB_TSO_DBG_EN 0x23A4 1931bd4fe43Sopenharmony_ci#define BITS_TSO_DBG_EN MK_BITS(31, 1) 1941bd4fe43Sopenharmony_ci/* TSO debug state */ 1951bd4fe43Sopenharmony_ci#define U_GLB_TSO_DBG_STATE 0x03A8 1961bd4fe43Sopenharmony_ci#define D_GLB_TSO_DBG_STATE 0x23A8 1971bd4fe43Sopenharmony_ci#define BITS_TSO_DBG_STATE MK_BITS(31, 1) 1981bd4fe43Sopenharmony_ci/* TSO debug addr */ 1991bd4fe43Sopenharmony_ci#define U_GLB_TSO_DBG_ADDR 0x03AC 2001bd4fe43Sopenharmony_ci#define D_GLB_TSO_DBG_ADDR 0x23AC 2011bd4fe43Sopenharmony_ci/* TSO debug tx info */ 2021bd4fe43Sopenharmony_ci#define U_GLB_TSO_DBG_TX_INFO 0x03B0 2031bd4fe43Sopenharmony_ci#define D_GLB_TSO_DBG_TX_INFO 0x23B0 2041bd4fe43Sopenharmony_ci/* TSO debug tx err */ 2051bd4fe43Sopenharmony_ci#define U_GLB_TSO_DBG_TX_ERR 0x03B4 2061bd4fe43Sopenharmony_ci#define D_GLB_TSO_DBG_TX_ERR 0x23B4 2071bd4fe43Sopenharmony_ci#endif 2081bd4fe43Sopenharmony_ci 2091bd4fe43Sopenharmony_ci/* Rx/Tx Queue ID */ 2101bd4fe43Sopenharmony_ci#define U_GLB_RO_QUEUE_ID 0x0368 2111bd4fe43Sopenharmony_ci#define D_GLB_RO_QUEUE_ID 0x2368 2121bd4fe43Sopenharmony_ci/* bits of U_GLB_RO_QUEUE_ID */ 2131bd4fe43Sopenharmony_ci#define BITS_TXOUTQ_ID MK_BITS(0, 6) 2141bd4fe43Sopenharmony_ci#define BITS_TXINQ_ID MK_BITS(8, 6) 2151bd4fe43Sopenharmony_ci#define BITS_RXINQ_ID MK_BITS(16, 6) 2161bd4fe43Sopenharmony_ci 2171bd4fe43Sopenharmony_ci/* Rx/Tx Queue staus */ 2181bd4fe43Sopenharmony_ci#define U_GLB_RO_QUEUE_STAT 0x036C 2191bd4fe43Sopenharmony_ci#define D_GLB_RO_QUEUE_STAT 0x236C 2201bd4fe43Sopenharmony_ci/* bits of U_GLB_RO_QUEUE_STAT */ 2211bd4fe43Sopenharmony_ci/* check this bit to see if we can add a Tx package */ 2221bd4fe43Sopenharmony_ci#define BITS_XMITQ_RDY MK_BITS(24, 1) 2231bd4fe43Sopenharmony_ci/* check this bit to see if we can add a Rx addr */ 2241bd4fe43Sopenharmony_ci#define BITS_RECVQ_RDY MK_BITS(25, 1) 2251bd4fe43Sopenharmony_ci/* counts in queue, include currently sending */ 2261bd4fe43Sopenharmony_ci#define BITS_XMITQ_CNT_INUSE MK_BITS(0, 6) 2271bd4fe43Sopenharmony_ci/* counts in queue, include currently receving */ 2281bd4fe43Sopenharmony_ci#define BITS_RECVQ_CNT_RXOK MK_BITS(8, 6) 2291bd4fe43Sopenharmony_ci 2301bd4fe43Sopenharmony_ci#ifdef HIETH_TSO_SUPPORTED 2311bd4fe43Sopenharmony_ci#define E_MAC_TX_FAIL 2 2321bd4fe43Sopenharmony_ci#define E_MAC_SW_GSO 3 2331bd4fe43Sopenharmony_ci#endif 2341bd4fe43Sopenharmony_ci 2351bd4fe43Sopenharmony_ci#define HIETH_CSUM_ENABLE 1 2361bd4fe43Sopenharmony_ci#define HIETH_CSUM_DISABLE 0 2371bd4fe43Sopenharmony_ci#if LWIP_TX_CSUM_OFFLOAD 2381bd4fe43Sopenharmony_ci#define HIETH_IPV4_VERSION_HW 0 2391bd4fe43Sopenharmony_ci#define HIETH_IPV6_VERSION_HW 1 2401bd4fe43Sopenharmony_ci#define HIETH_TRANS_TCP_TYPE_HW 0 2411bd4fe43Sopenharmony_ci#define HIETH_TRANS_UDP_TYPE_HW 1 2421bd4fe43Sopenharmony_ci#endif 2431bd4fe43Sopenharmony_ci#define FCS_BYTES 4 2441bd4fe43Sopenharmony_ci 2451bd4fe43Sopenharmony_ci/* Rx COE control */ 2461bd4fe43Sopenharmony_ci#define U_GLB_RX_COE_CTRL 0x0380 2471bd4fe43Sopenharmony_ci#define D_GLB_RX_COE_CTRL 0x2380 2481bd4fe43Sopenharmony_ci#define BITS_COE_IPV6_UDP_ZERO_DROP MK_BITS(13, 1) 2491bd4fe43Sopenharmony_ci#define BITS_COE_PAYLOAD_DROP MK_BITS(14, 1) 2501bd4fe43Sopenharmony_ci#define BITS_COE_IPHDR_DROP MK_BITS(15, 1) 2511bd4fe43Sopenharmony_ci 2521bd4fe43Sopenharmony_ci/* fephy trim */ 2531bd4fe43Sopenharmony_ci#define REG_LD_AM 0x3050 2541bd4fe43Sopenharmony_ci#define BIT_MASK_LD_SET MK_BITS(0, 0x1f) 2551bd4fe43Sopenharmony_ci#define REG_LDO_AM 0x3051 2561bd4fe43Sopenharmony_ci#define BIT_MASK_LDO_SET MK_BITS(0, 0x7) 2571bd4fe43Sopenharmony_ci#define REG_R_TUNING 0x3052 2581bd4fe43Sopenharmony_ci#define BIT_MASK_R_TUNING MK_BITS(0, 0x3f) 2591bd4fe43Sopenharmony_ci 2601bd4fe43Sopenharmony_ci#define BIT_OFFSET_LD_SET 25 2611bd4fe43Sopenharmony_ci#define BIT_OFFSET_LDO_SET 22 2621bd4fe43Sopenharmony_ci#define BIT_OFFSET_R_TUNING 16 2631bd4fe43Sopenharmony_ci 2641bd4fe43Sopenharmony_ci#define REG_DEF_ATE 0x3057 2651bd4fe43Sopenharmony_ci#define BIT_AUTOTRIM_DONE (0x1 << 0) 2661bd4fe43Sopenharmony_ci 2671bd4fe43Sopenharmony_ci#define MII_EXPMD 0x1d 2681bd4fe43Sopenharmony_ci#define MII_EXPMA 0x1e 2691bd4fe43Sopenharmony_ci 2701bd4fe43Sopenharmony_ci#define REG_WR_DONE 0x3053 2711bd4fe43Sopenharmony_ci#define BIT_CFG_DONE (0x1 << 0) 2721bd4fe43Sopenharmony_ci#define BIT_CFG_ACK (0x1 << 1) 2731bd4fe43Sopenharmony_ci 2741bd4fe43Sopenharmony_ci#define IsRecvPacket(ld) (HiethRead(ld, GLB_RW_IRQ_RAW) & (UD_BIT_NAME(HIETH_INT_RX_RDY))) 2751bd4fe43Sopenharmony_ci 2761bd4fe43Sopenharmony_ci#define HwSetRxpkgFinish(ld) HiethWrite(ld, UD_BIT_NAME(HIETH_INT_RX_RDY), GLB_RW_IRQ_RAW) 2771bd4fe43Sopenharmony_ci 2781bd4fe43Sopenharmony_ci#define HwGetRxpkgInfo(ld) HiethRead(ld, UD_REG_NAME(GLB_RO_IQFRM_DES)) 2791bd4fe43Sopenharmony_ci 2801bd4fe43Sopenharmony_ci#define HwXmitqCntInUse(ld) HiethReadlBits(ld, UD_REG_NAME(GLB_RO_QUEUE_STAT), BITS_XMITQ_CNT_INUSE) 2811bd4fe43Sopenharmony_ci 2821bd4fe43Sopenharmony_ci#define HwXmitqPkg(ld, addr, len) \ 2831bd4fe43Sopenharmony_ci do { \ 2841bd4fe43Sopenharmony_ci HiethWrite(ld, (addr), UD_REG_NAME(GLB_EQ_ADDR)); \ 2851bd4fe43Sopenharmony_ci HiethWritelBits(ld, (len), UD_REG_NAME(GLB_EQFRM_LEN), BITS_TXINQ_LEN); \ 2861bd4fe43Sopenharmony_ci } while (0) 2871bd4fe43Sopenharmony_ci 2881bd4fe43Sopenharmony_cistruct HiethPriv; 2891bd4fe43Sopenharmony_ci 2901bd4fe43Sopenharmony_civoid HiethHwExternalPhyReset(void); 2911bd4fe43Sopenharmony_civoid HiethHwMacCoreInit(struct HiethNetdevLocal *ld); 2921bd4fe43Sopenharmony_civoid HiethFephyTrim(struct HiethNetdevLocal *ld, const EthPhyAccess *f); 2931bd4fe43Sopenharmony_ci 2941bd4fe43Sopenharmony_ciint32_t TestXmitQueueReady(struct HiethNetdevLocal *ld); 2951bd4fe43Sopenharmony_ci 2961bd4fe43Sopenharmony_ci/* return last irq_enable status */ 2971bd4fe43Sopenharmony_ciint32_t HiethIrqEnable(struct HiethNetdevLocal *ld, int32_t irqs); 2981bd4fe43Sopenharmony_ci 2991bd4fe43Sopenharmony_ci/* return last irq_enable status */ 3001bd4fe43Sopenharmony_ciint32_t HiethIrqDisable(struct HiethNetdevLocal *ld, int32_t irqs); 3011bd4fe43Sopenharmony_ci 3021bd4fe43Sopenharmony_ci/* return irqstatus */ 3031bd4fe43Sopenharmony_ciint32_t HiethReadIrqstatus(struct HiethNetdevLocal *ld); 3041bd4fe43Sopenharmony_ci 3051bd4fe43Sopenharmony_ci/* return irqstatus after clean */ 3061bd4fe43Sopenharmony_ciint32_t HiethClearIrqstatus(struct HiethNetdevLocal *ld, int32_t irqs); 3071bd4fe43Sopenharmony_ci 3081bd4fe43Sopenharmony_ciint32_t HiethSetEndianMode(struct HiethNetdevLocal *ld, int32_t mode); 3091bd4fe43Sopenharmony_ci 3101bd4fe43Sopenharmony_ci/* Tx/Rx queue operation */ 3111bd4fe43Sopenharmony_ciint32_t HiethSetHwqDepth(struct HiethNetdevLocal *ld); 3121bd4fe43Sopenharmony_ci 3131bd4fe43Sopenharmony_ciint32_t HiethHwSetMacAddress(struct HiethNetdevLocal *ld, int32_t ena, const uint8_t *mac); 3141bd4fe43Sopenharmony_ciint32_t HiethHwGetMacAddress(struct HiethNetdevLocal *ld, uint8_t *mac); 3151bd4fe43Sopenharmony_ci 3161bd4fe43Sopenharmony_ciint32_t HiethFeedHw(struct HiethNetdevLocal *ld, HiethPriv *priv); 3171bd4fe43Sopenharmony_ciint32_t HiethXmitGso(struct HiethNetdevLocal *ld, const HiethPriv *priv, NetBuf *netBuf); 3181bd4fe43Sopenharmony_ciint32_t HiethXmitReleasePkt(struct HiethNetdevLocal *ld, const HiethPriv *priv); 3191bd4fe43Sopenharmony_civoid RegisterHiethData(struct EthDevice *ethDevice); 3201bd4fe43Sopenharmony_ci 3211bd4fe43Sopenharmony_ci#ifdef __cplusplus 3221bd4fe43Sopenharmony_ci#if __cplusplus 3231bd4fe43Sopenharmony_ci} 3241bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 3251bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 3261bd4fe43Sopenharmony_ci 3271bd4fe43Sopenharmony_ci#endif /* CTRL_H */ 328