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