From 9af585b6647dbd8e68dfc8dc41b4023af9bcca7e Mon Sep 17 00:00:00 2001 From: liumin Date: Sun, 16 Nov 2025 22:13:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B930ms=E5=96=82=E7=8B=97?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=88=9D=E5=A7=8B=E5=8C=96=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boards/e3_176_ref/driver_demo/gpio/main.c | 15 +- .../e3_176_ref/driver_demo/gpio/wdt_refresh.c | 1 + drivers/source/eth/sdrv_eth.c | 17 +- drivers/source/eth/sdrv_mac_lld.c | 2317 +++++++++-------- .../lwip/contrib/ports/baremetal/netdev.c | 129 +- tools/sdtools/temp/2025110901boot.bin | Bin 0 -> 172384 bytes tools/sdtools/temp/2025111601boot.bin | Bin 0 -> 172352 bytes tools/sdtools/temp/sf.bin | Bin 168256 -> 168256 bytes tools/sdtools/打包命令.txt | 1 + 9 files changed, 1243 insertions(+), 1237 deletions(-) create mode 100644 tools/sdtools/temp/2025110901boot.bin create mode 100644 tools/sdtools/temp/2025111601boot.bin create mode 100644 tools/sdtools/打包命令.txt diff --git a/boards/e3_176_ref/driver_demo/gpio/main.c b/boards/e3_176_ref/driver_demo/gpio/main.c index 7a5805b..8f27f0c 100644 --- a/boards/e3_176_ref/driver_demo/gpio/main.c +++ b/boards/e3_176_ref/driver_demo/gpio/main.c @@ -184,7 +184,6 @@ int main(void) sdrv_gpio_set_pin_output_level(GPIO_B9, 1); //²âÁ¿Ê±¼ä - External_wdt_refresh(); // Timer³õʼ»¯£¬ÓÃÓÚÌṩLWIP sys_now½Ó¿Ú»ñÈ¡µ±Ç°Ê±¼ä btm_init(); @@ -224,20 +223,20 @@ int main(void) sdrv_gpio_set_pin_output_level(GPIO_Y1, 0); //E2дʹÄÜ External_wdt_refresh(); + printf("feed 1! \r\n"); board_norflash_init();//flash ³õʼ»¯ - External_wdt_refresh(); - initSpi(); + + initSpi(); // ETH³õʼ»¯ board_eth_init(); - External_wdt_refresh(); // wdt_init(WDT_OUTms); // wrbyte_24c02(0x00,1); UDP_Echo_Init(UDPCB_1, udp_Callback_1, DOWNLOAR_PORT); ethernetInterfaceInit(); - External_wdt_refresh(); +// External_wdt_refresh(); e2_boot_arr[0] = rdbyte_24c02(APP_VERSION_E2adr); e2_boot_arr[1] = rdbyte_24c02(APP_VERSION_E2adr+1); e2_boot_arr[2] = rdbyte_24c02(APP_VERSION_E2adr+2); @@ -255,7 +254,7 @@ int main(void) des_ipaddr[1] = rdbyte_24c02(BOOT_DES_IP+1);//¶ÁÈ¡ÏÂÔØµÄIP des_ipaddr[2] = rdbyte_24c02(BOOT_DES_IP+2);//¶ÁÈ¡ÏÂÔØµÄIP des_ipaddr[3] = rdbyte_24c02(BOOT_DES_IP+3);//¶ÁÈ¡ÏÂÔØµÄIP - External_wdt_refresh(); +// External_wdt_refresh(); if(g_systemDataRecord.canBootloaderUpgrade == NORMAL_ON)//0¾ÍÊǽøÈëAPP£¬²Á³ýÖµ»òÕß1¾ÍÊÇBOOT³ÌÐò { @@ -267,7 +266,7 @@ int main(void) UdpSendToData(UDPCB_1, BOOT_Arr, 2, des_ipaddr, BOOT_TX_PORT); } - ssdk_printf(SSDK_INFO, "SSDK E3 boot! verison V1.24 \r\n"); + ssdk_printf(SSDK_INFO, "SSDK E3 boot! verison V1.28 \r\n"); for(;;) { @@ -289,7 +288,7 @@ int main(void) RgWDT500msflg = 0; External_wdt_refresh(); - printf("RUN24! \r\n"); + printf("RUN2F! \r\n"); } } } diff --git a/boards/e3_176_ref/driver_demo/gpio/wdt_refresh.c b/boards/e3_176_ref/driver_demo/gpio/wdt_refresh.c index a8b73a9..5ab5f29 100644 --- a/boards/e3_176_ref/driver_demo/gpio/wdt_refresh.c +++ b/boards/e3_176_ref/driver_demo/gpio/wdt_refresh.c @@ -72,6 +72,7 @@ void External_wdt_refresh(void) // sdrv_wdt_refresh(wdt_type);//ι¹· sdrv_gpio_toggle_pin_output_level(WDTGPIO); +// printf("wdtfeed! \r\n"); } diff --git a/drivers/source/eth/sdrv_eth.c b/drivers/source/eth/sdrv_eth.c index 79eebd4..85d2f9f 100644 --- a/drivers/source/eth/sdrv_eth.c +++ b/drivers/source/eth/sdrv_eth.c @@ -22,6 +22,8 @@ #include "sdrv_eth.h" #include "phy/phy.h" +#include + /* Eth frame header and crc length. */ #define ETH_FRAME_HEADER_LEN (6 + 6 + 2) #define ETH_FRAME_OVERHEAD_LEN (ETH_FRAME_HEADER_LEN + 4) @@ -171,17 +173,18 @@ static void eth_mac_init(dwc_eth_config_t *cfg, struct eqos_priv *eqos) uint32_t skip_len = eqos->desc_size - sizeof(struct eqos_desc); uint8_t bus_width = cfg->dma_bus_width ? cfg->dma_bus_width : 64; eqos->dsl = skip_len * 8 / bus_width; - + //DMA init mac_init_dma(cfg->base, eqos); //MTL init mac_init_mtl(cfg->base); - + //core init phy_speed_t speed = (cfg->phy[0].phy_addr == ~0) ? PHY_SPEED_1000 : cfg->phy[0].speed; dwmac_core_init(cfg->base, cfg->mtu, speed, cfg->mac_addr); + dwmac_mac_rx_queue_mcbc_routing(cfg->base, 0); } @@ -282,14 +285,13 @@ static err_t dwc_eth_init(struct net_driver_s *dev) #endif ASSERT(eqos->rx_dma_buf); memset(eqos->rx_dma_buf, 0, EQOS_RX_BUFFER_SIZE); -#endif - +#endif //init phy phy_init(ð_dev->phy_bus); //init mac eth_mac_init(cfg, eqos); - + // set up dma tx/rx descriptors memset(eqos->descs, 0, eqos->desc_size * EQOS_DESCRIPTORS_NUM); @@ -307,7 +309,7 @@ static err_t dwc_eth_init(struct net_driver_s *dev) arch_clean_cache_range((addr_t)rx_desc, sizeof(struct eqos_desc)); arch_invalidate_cache_range((addr_t)((char *)eqos->rx_dma_buf + (i * EQOS_MAX_PACKET_SIZE)), EQOS_MAX_PACKET_SIZE); - } + } //enable rx/tx mac_start(cfg->base, true); @@ -773,10 +775,11 @@ int dwc_eth_probe(struct net_driver_s *dev, dwc_eth_config_t *cfg) for (int i = 0; cfg->phy[i].phy_addr != ~0; i++) { phy_dev_register(&dw_eth_dev->phy_bus, &cfg->phy[i]); } - + int ret = netdev_register(dev, NET_LL_ETHERNET); irq_attach(cfg->irq_num, dwc_eth_irq_handler, dev); + irq_enable(cfg->irq_num); return ret; diff --git a/drivers/source/eth/sdrv_mac_lld.c b/drivers/source/eth/sdrv_mac_lld.c index 062cfca..6279b18 100644 --- a/drivers/source/eth/sdrv_mac_lld.c +++ b/drivers/source/eth/sdrv_mac_lld.c @@ -1,1158 +1,1159 @@ -/** - * dw_mac_lld.c - * - * Copyright (c) 2021 Semidrive Semiconductor. - * All rights reserved. - * - * Description: dw eth mac lld driver - * - * Revision History: - * ----------------- - */ - -#include -#include -#include -#include "debug.h" -#include "reg.h" -#include "regs_base.h" -#include "phy/phy.h" -#include "sdrv_mac_lld.h" - -static uint8_t deafult_mac_addr[6] = {0x00, 0x1f, 0x29, 0x00, 0x12, 0x15}; - -#define mdelay(x) udelay(x * 1000) - -void dwc_write_reg(uint32_t val, uint32_t regaddr) -{ - writel(val, regaddr); -} - -/** - * @brief generate mac addr - */ -__UNUSED static void generate_default_mac_from_uuid(void) -{ - uint32_t mac; - mac = readl(APB_EFUSEC_BASE + 0x1020); - mac ^= readl(APB_EFUSEC_BASE + 0x1024); - - deafult_mac_addr[3] = (uint8_t)(mac >> 0) & 0xFF; - deafult_mac_addr[4] = (uint8_t)(mac >> 8) & 0xFF; - deafult_mac_addr[5] = (uint8_t)(mac >> 16) & 0xFF; - -} - -static void dwmac_set_mac_addr(uint32_t regbase, uint8_t Addr[6], - uint32_t high, uint32_t low) -{ - unsigned long data; - - data = (Addr[5] << 8) | Addr[4]; - /* For MAC Addr registers se have to set the Address Enable (AE) - * bit that has no effect on the High Reg 0 where the bit 31 (MO) - * is RO. - */ - data |= (0 << MAC_HI_DCS_SHIFT); - dwc_write_reg(data | MAC_HI_REG_AE, regbase + high); - data = (Addr[3] << 24) | (Addr[2] << 16) | (Addr[1] << 8) | Addr[0]; - dwc_write_reg(data, regbase + low); -} - -static void dwmac_clr_mac_addr(uint32_t regbase, uint32_t high, uint32_t low) -{ - unsigned long data = 0xFFFF; - data &= ~MAC_HI_REG_AE; - dwc_write_reg(data, regbase + high); - - data = 0xFFFFFFFF; - dwc_write_reg(data, regbase + low); -} - -static void dwmac_get_mac_addr(uint32_t regbase, uint8_t *Addr, - uint32_t high, uint32_t low) -{ - uint32_t hi_addr, lo_addr; - - /* Read the MAC address from the hardware */ - hi_addr = readl(regbase + high); - lo_addr = readl(regbase + low); - - /* Extract the MAC address from the high and low words */ - Addr[0] = lo_addr & 0xff; - Addr[1] = (lo_addr >> 8) & 0xff; - Addr[2] = (lo_addr >> 16) & 0xff; - Addr[3] = (lo_addr >> 24) & 0xff; - Addr[4] = hi_addr & 0xff; - Addr[5] = (hi_addr >> 8) & 0xff; -} - -/** - * @description: - * @param {*} - * @return {*} - */ -__UNUSED static inline int32_t poll_reg_bits(uint32_t regbase, uint32_t BitMask, uint32_t BitVel, - uint32_t PollPeriod, uint32_t Timeout, bool Neq) -{ - uint32_t limit = Timeout; - - do { - if (Neq) { - if ((readl(regbase) & BitMask) == BitVel) { - udelay(PollPeriod); - } - else { - return 0; - } - } - else { - if ((readl(regbase) & BitMask) != BitVel) { - udelay(PollPeriod); - } - else { - return 0; - } - } - - limit--; - } - while (limit); - - return -1; -} - -/* =====================> MAC BLOCK <==================== */ -/** - * @name: - * @Desc: - * @param {void } *regbase - * @param {uint32} MTU - * @param {uint32} Speed - * @return {*} - */ -void dwmac_core_init(uint32_t regbase, uint32_t MTU, uint32_t Speed, - uint8_t *macaddr) -{ - - uint32_t value = readl(regbase + MAC_CONFIG); - - value |= MAC_CORE_INIT; - value &= ~MAC_CONFIG_TE; - value &= ~MAC_CONFIG_RE; - - if (MTU > 1500) - value |= MAC_CONFIG_2K; - - if (MTU > 2000) - value |= MAC_CONFIG_JE; - - // default is 1000Mbps - value &= ~(MAC_CONFIG_FES | MAC_CONFIG_PS); - - switch (Speed) { - case PHY_SPEED_1000: - break; - - case PHY_SPEED_100: - value |= MAC_CONFIG_FES | MAC_CONFIG_PS; - break; - - case PHY_SPEED_10: - value |= MAC_CONFIG_PS; - break; - } - - dwc_write_reg(value, regbase + MAC_CONFIG); - - /* Enable GMAC interrupts */ - value = MAC_INT_DEFAULT_ENABLE; - - value |= MAC_PCS_IRQ_DEFAULT; - - dwc_write_reg(value, regbase + MAC_INT_EN); - - /* Mask all MMC interrupts. */ - writel(~0, regbase + MMC_RX_INTERRUPT_MASK); - writel(~0, regbase + MMC_TX_INTERRUPT_MASK); - writel(~0, regbase + MMC_IPC_RX_INTERRUPT_MASK); - -#if CONFIG_ARCH_CHIP_E3 || CONFIG_ARCH_CHIP_D3 - /* Enable bus parity */ - value = readl(regbase + MTL_DPP_CTRL); - value |= MTL_DPP_CTRL_DATA_PARITY | MTL_DPP_CTRL_SLAVE_PARITY; - writel(value, regbase + MTL_DPP_CTRL); - - /* Enable ecc */ - value = readl(regbase + MTL_ECC_CTRL); - value |= MTL_ECC_DEFAULT_ENABLE; - writel(value, regbase + MTL_ECC_CTRL); -#endif - - /* Set user mac addr */ - if (macaddr == NULL) { - dwmac_set_umac_addr(regbase, deafult_mac_addr, 0); - } - else { - dwmac_set_umac_addr(regbase, macaddr, 0); - } - - /* Receive all */ - value = 0; - value |= MAC_PACKET_FILTER_PA; - dwc_write_reg(value, regbase + MAC_PACKET_FILTER); - - /* Because fillter will set the mac match dorp so init all mac register */ - for (int i = 1; i < 128; i++) { - dwmac_clr_umac_addr(regbase, i); - } -} - -/** - * @name: - * @Desc: - * @param {void} *Addr - * @param {uint8} Mode - * @param {uint32} Queue - * @return {*} - */ -void dwmac_mac_rx_queue_mcbc_routing(uint32_t regbase, uint8_t channel) -{ - uint32_t value; - value = readl(regbase + MAC_RXQ_CTRL1); - value |= MAC_RXQCTRL_MCBCQEN; - value &= ~MAC_RXQCTRL_MCBCQ_MASK; - value |= (channel << MAC_RXQCTRL_MCBCQ_SHIFT & \ - MAC_RXQCTRL_MCBCQ_MASK); - dwc_write_reg(value, regbase + MAC_RXQ_CTRL1); -} - -/** - * @description: - * @param {*} - * @return {*} - */ -void dwmac_clr_umac_addr(uint32_t regbase, uint32_t Reg_n) -{ - dwmac_clr_mac_addr(regbase, MAC_ADDR_HIGH(Reg_n), - MAC_ADDR_LOW(Reg_n)); -} - -/** - * @name: - * @Desc: - * @param {*} - * @return {*} - */ -void dwmac_set_umac_addr(uint32_t regbase, - const uint8_t *Addr, uint32_t Reg_n) -{ - dwmac_set_mac_addr(regbase, (uint8_t *)Addr, MAC_ADDR_HIGH(Reg_n), - MAC_ADDR_LOW(Reg_n)); -} - -/** - * @name: - * @Desc: - * @param {*} - * @return {*} - */ -void dwmac_get_umac_addr(uint32_t regbase, - unsigned char *Addr, uint32_t Reg_n) -{ - dwmac_get_mac_addr(regbase, Addr, MAC_ADDR_HIGH(Reg_n), - MAC_ADDR_LOW(Reg_n)); -} - -/** - * @description: - * @param {uint8*} src - * @param {uint8*} dst - * @return {*} - */ -static uint32_t dwmac_mac_comp(const uint8_t *src, const uint8_t *dst) -{ - for (int i = 0; i < 6; i++) { - if (src[i] != dst[i]) { - return -1; - } - } - - return 0; -} - -/** - * @description: - * @param {uint32} regbase - * @param {uint32} high - * @return {*} - */ -static uint32_t dwmac_mac_busy(uint32_t regbase, uint32_t i) -{ - uint32_t hi_addr; - /* Read the MAC address from the hardware */ - hi_addr = readl(regbase + MAC_ADDR_HIGH(i)); - - if (hi_addr & MAC_HI_REG_AE) { - return 1; - } - else { - return 0; - } -} - -/** - * @name: - * @Desc: - * @param {void } *regbase - * @param {uint32} Mode - * @param {uint8*} Addr - * @return {*} - */ -int32_t dwmac_set_filter(uint32_t regbase, uint32_t Mode, const uint8_t *Addr) -{ - uint32_t value = 0; - uint32_t ret = 0; - uint8_t mac_buf[6]; - uint8_t use_index = 0xFF, free_index = 0xFF; - value = readl(regbase + MAC_PACKET_FILTER); - value &= ~MAC_PACKET_FILTER_PM; - value |= MAC_PACKET_FILTER_DAIF | MAC_PACKET_FILTER_HPF; - - for (int i = 1; i < 128; i++) { - if (dwmac_mac_busy(regbase, i)) { - dwmac_get_umac_addr(regbase, mac_buf, i); - - if ((use_index == 0xFF) && !dwmac_mac_comp(Addr, mac_buf)) { - use_index = i; - } - } - else if ( free_index == 0xFF) { - free_index = i; - } - } - - /* Have the same mac in table ,not add */ - if (use_index != 0xFF) { - free_index = 0xFF; - } - - if (Mode) { - /* del */ - if (use_index == 0xFF) { - ret = -1; - } - else { - dwmac_clr_umac_addr(regbase, use_index); - } - } - else { - /* add */ - if (free_index == 0xFF) { - ret = -1; - } - else { - dwmac_set_umac_addr(regbase, Addr, free_index); - } - } - - dwc_write_reg(value, regbase + MAC_PACKET_FILTER); - return ret; -} - -/* =====================>MAC BLOCK END<==================== */ -/* =====================> MTL BLOCK <==================== */ -/** - * @name: - * @Desc: - * @param {void} *regbase - * @param {uint32} alg - * @return {*} - */ -void dwmac_prog_mtl_rx_algorithms(uint32_t regbase, uint32_t Algorithm) -{ - uint32_t value = readl(regbase + MTL_OPERATION_MODE); - - switch (Algorithm) { - case MTL_RX_ALGORITHM_SP: - value &= ~MTL_OPERATION_RAA; - break; - - case MTL_RX_ALGORITHM_WSP: - value |= MTL_OPERATION_RAA_WSP; - break; - - default: - break; - } - - dwc_write_reg(value, regbase + MTL_OPERATION_MODE); -} - -/** - * @name: - * @Desc: - * @param {void} *regbase - * @param {uint32} alg - * @return {*} - */ -void dwmac_prog_mtl_tx_algorithms(uint32_t regbase, uint32_t Algorithm) -{ - uint32_t value = readl(regbase + MTL_OPERATION_MODE); - - value &= ~MTL_OPERATION_SCHALG_MASK; - - switch (Algorithm) { - case MTL_TX_ALGORITHM_WRR: - value |= MTL_OPERATION_SCHALG_WRR; - break; - - case MTL_TX_ALGORITHM_WFQ: - value |= MTL_OPERATION_SCHALG_WFQ; - break; - - case MTL_TX_ALGORITHM_DWRR: - value |= MTL_OPERATION_SCHALG_DWRR; - break; - - case MTL_TX_ALGORITHM_SP: - value |= MTL_OPERATION_SCHALG_SP; - break; - - default: - break; - } - - /* flush MTL */ - value |= 0x01 << 9; - dwc_write_reg(value, regbase + MTL_OPERATION_MODE); -} - -/** - * @name: - * @Desc: - * @param {void} *Addr - * @param {uint32} Queue - * @param {uint32} channel - * @return {*} - */ -void dwmac_map_mtl_dma(uint32_t Addr, uint32_t Queue, uint32_t channel) -{ - uint32_t regbase = Addr; - uint32_t value; - - if (Queue < 4) - value = readl(regbase + MTL_RXQ_DMA_MAP0); - else - value = readl(regbase + MTL_RXQ_DMA_MAP1); - - if (Queue == 0 || Queue == 4) { - value &= ~MTL_RXQ_DMA_Q04MDMACH_MASK; - value |= MTL_RXQ_DMA_Q04MDMACH(channel); - } - else { - value &= ~MTL_RXQ_DMA_QXMDMACH_MASK(Queue); - value |= MTL_RXQ_DMA_QXMDMACH(channel, Queue); - } - - if (Queue < 4) - dwc_write_reg(value, regbase + MTL_RXQ_DMA_MAP0); - else - dwc_write_reg(value, regbase + MTL_RXQ_DMA_MAP1); -} - -/** - * @name: - * @Desc: - * @param {void} *Addr - * @param {uint8} Mode - * @param {uint32} Queue - * @return {*} - */ -void dwmac_rx_queue_enable(uint32_t Addr, uint8_t Mode, uint32_t Queue) -{ - uint32_t regbase = Addr; - uint32_t value = readl(regbase + MAC_RXQ_CTRL0); - - value &= MAC_RX_QUEUE_CLEAR(Queue); - - if (Mode == MTL_QUEUE_MODE_AVB) - value |= MAC_RX_AV_QUEUE_ENABLE(Queue); - else if (Mode == MTL_QUEUE_MODE_DCB) - value |= MAC_RX_DCB_QUEUE_ENABLE(Queue); - - dwc_write_reg(value, regbase + MAC_RXQ_CTRL0); -} - -/** - * @name: - * @Desc: - * @param {*} - * @return {*} - */ -void dwmac_dma_rx_chan_op_mode(uint32_t regbase, uint32_t channel, int Mode, - int FifoSize, uint8_t QMode) -{ - unsigned int rqs = FifoSize / 256 - 1; - uint32_t mtl_rx_op, mtl_rx_int; - - mtl_rx_op = readl(regbase + MTL_CHAN_RX_OP_MODE(channel)); - /* Forward Undersized Good Packets */ - mtl_rx_op |= MTL_OP_MODE_FUP; - - if (Mode == SF_MODE) { - mtl_rx_op |= MTL_OP_MODE_RSF; - } - else { - mtl_rx_op &= ~MTL_OP_MODE_RSF; - mtl_rx_op &= MTL_OP_MODE_RTC_MASK; - - if (Mode <= 32) - mtl_rx_op |= MTL_OP_MODE_RTC_32; - else if (Mode <= 64) - mtl_rx_op |= MTL_OP_MODE_RTC_64; - else if (Mode <= 96) - mtl_rx_op |= MTL_OP_MODE_RTC_96; - else - mtl_rx_op |= MTL_OP_MODE_RTC_128; - } - - mtl_rx_op &= ~MTL_OP_MODE_RQS_MASK; - mtl_rx_op |= rqs << MTL_OP_MODE_RQS_SHIFT; - - /* Enable flow control only if each channel gets 4 KiB or more FIFO and - * only if channel is not an AVB channel. - */ - if ((FifoSize >= 4096) && (QMode != MTL_QUEUE_MODE_AVB)) { - unsigned int rfd, rfa; - - mtl_rx_op |= MTL_OP_MODE_EHFC; - - /* Set Threshold for Activating Flow Control to min 2 frames, - * i.e. 1500 * 2 = 3000 bytes. - * - * Set Threshold for Deactivating Flow Control to min 1 frame, - * i.e. 1500 bytes. - */ - switch (FifoSize) { - case 4096: - /* This violates the above formula because of FIFO size - * limit therefore overflow may occur in spite of this. - */ - rfd = 0x03; /* Full-2.5K */ - rfa = 0x01; /* Full-1.5K */ - break; - - case 8192: - rfd = 0x06; /* Full-4K */ - rfa = 0x0a; /* Full-6K */ - break; - - case 16384: - rfd = 0x06; /* Full-4K */ - rfa = 0x12; /* Full-10K */ - break; - - default: - rfd = 0x06; /* Full-4K */ - rfa = 0x1e; /* Full-16K */ - break; - } - - mtl_rx_op &= ~MTL_OP_MODE_RFD_MASK; - mtl_rx_op |= rfd << MTL_OP_MODE_RFD_SHIFT; - - mtl_rx_op &= ~MTL_OP_MODE_RFA_MASK; - mtl_rx_op |= rfa << MTL_OP_MODE_RFA_SHIFT; - } - - dwc_write_reg(mtl_rx_op, regbase + MTL_CHAN_RX_OP_MODE(channel)); - - /* Enable MTL RX overflow */ - mtl_rx_int = readl(regbase + MTL_CHAN_INT_CTRL(channel)); - - dwc_write_reg(mtl_rx_int | MTL_RX_OVERFLOW_INT_EN, - regbase + MTL_CHAN_INT_CTRL(channel)); -} - -/* - Mode transmit store and forward enable or not - QMode transmit Queue enable or not - fifo transmit Queue size -*/ -void dwmac_dma_tx_chan_op_mode(uint32_t regbase, uint32_t channel, int Mode, - int FifoSize, uint8_t QMode) -{ - uint32_t mtl_tx_op = readl(regbase + MTL_CHAN_TX_OP_MODE(channel)); - unsigned int tqs = FifoSize / 256 - 1; - - if (Mode == SF_MODE) { - /* Transmit COE type 2 cannot be done in cut-through Mode. */ - mtl_tx_op |= MTL_OP_MODE_TSF; - } - else { - mtl_tx_op &= ~MTL_OP_MODE_TSF; - mtl_tx_op &= MTL_OP_MODE_TTC_MASK; - - /* Set the transmit threshold */ - if (Mode <= 32) - mtl_tx_op |= MTL_OP_MODE_TTC_32; - else if (Mode <= 64) - mtl_tx_op |= MTL_OP_MODE_TTC_64; - else if (Mode <= 96) - mtl_tx_op |= MTL_OP_MODE_TTC_96; - else if (Mode <= 128) - mtl_tx_op |= MTL_OP_MODE_TTC_128; - else if (Mode <= 192) - mtl_tx_op |= MTL_OP_MODE_TTC_192; - else if (Mode <= 256) - mtl_tx_op |= MTL_OP_MODE_TTC_256; - else if (Mode <= 384) - mtl_tx_op |= MTL_OP_MODE_TTC_384; - else - mtl_tx_op |= MTL_OP_MODE_TTC_512; - } - - /* For an IP with DWC_EQOS_NUM_TXQ == 1, the fields TXQEN and TQS are RO - * with reset values: TXQEN on, TQS == DWC_EQOS_TXFIFO_SIZE. - * For an IP with DWC_EQOS_NUM_TXQ > 1, the fields TXQEN and TQS are R/W - * with reset values: TXQEN off, TQS 256 bytes. - * - * TXQEN must be written for multi-channel operation and TQS must - * reflect the available fifo size per Queue (total fifo size / number - * of enabled queues). - */ - mtl_tx_op &= ~MTL_OP_MODE_TXQEN_MASK; - - if (QMode != MTL_QUEUE_MODE_AVB) - mtl_tx_op |= MTL_OP_MODE_TXQEN; - else - mtl_tx_op |= MTL_OP_MODE_TXQEN_AV; - - mtl_tx_op &= ~MTL_OP_MODE_TQS_MASK; - mtl_tx_op |= tqs << MTL_OP_MODE_TQS_SHIFT; - - dwc_write_reg(mtl_tx_op, regbase + MTL_CHAN_TX_OP_MODE(channel)); -} - -/* =====================>MTL BLOCK END<==================== */ -/* =====================> DMA BLOCK <==================== */ -/** - * @name: - * @Desc: - * @param {void } *regbase - * @return {*} - */ -int32_t dwmac_dma_reset(uint32_t regbase) -{ - int32_t limit; - uint32_t value = readl(regbase + DMA_BUS_MODE); - - /* DMA SW reset */ - value |= DMA_BUS_MODE_SFT_RESET; - dwc_write_reg(value, regbase + DMA_BUS_MODE); - limit = 10; - - while (limit--) { - if (!(readl(regbase + DMA_BUS_MODE) & DMA_BUS_MODE_SFT_RESET)) - break; - - mdelay(10); - } - - if (limit <= 0) { - return -1; - } - - return 0; -} - -void dwmac_set_rx_list_ptr(uint32_t regbase, uint32_t list_ptr, - uint32_t channel) -{ - writel(list_ptr, regbase + DMA_CHAN_RX_BASE_ADDR(channel)); -} - -void dwmac_set_tx_list_ptr(uint32_t regbase, uint32_t list_ptr, - uint32_t channel) -{ - writel(list_ptr, regbase + DMA_CHAN_TX_BASE_ADDR(channel)); -} - -void dwmac_set_rx_tail_ptr(uint32_t regbase, uint32_t tail_ptr, - uint32_t channel) -{ - dwc_write_reg(tail_ptr, regbase + DMA_CHAN_RX_END_ADDR(channel)); -} - -void dwmac_set_tx_tail_ptr(uint32_t regbase, uint32_t tail_ptr, - uint32_t channel) -{ - dwc_write_reg(tail_ptr, regbase + DMA_CHAN_TX_END_ADDR(channel)); -} - -void dwmac_rx_trigger(uint32_t regbase, uint32_t channel) -{ - uint32_t tail = readl(regbase + DMA_CHAN_RX_END_ADDR(channel)); - dwc_write_reg(tail, regbase + DMA_CHAN_RX_END_ADDR(channel)); -} - -void dwmac_dma_start_tx(uint32_t regbase, uint32_t channel) -{ - uint32_t value = readl(regbase + DMA_CHAN_TX_CONTROL(channel)); - - value |= DMA_CONTROL_ST; - dwc_write_reg(value, regbase + DMA_CHAN_TX_CONTROL(channel)); - - value = readl(regbase + MAC_CONFIG); - value |= MAC_CONFIG_TE; - dwc_write_reg(value, regbase + MAC_CONFIG); -} - -void dwmac_dma_stop_tx(uint32_t regbase, uint32_t channel) -{ - uint32_t value = readl(regbase + DMA_CHAN_TX_CONTROL(channel)); - - value &= ~DMA_CONTROL_ST; - dwc_write_reg(value, regbase + DMA_CHAN_TX_CONTROL(channel)); - - value = readl(regbase + MAC_CONFIG); - value &= ~MAC_CONFIG_TE; - dwc_write_reg(value, regbase + MAC_CONFIG); -} - -void dwmac_dma_start_rx(uint32_t regbase, uint32_t channel) -{ - uint32_t value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); - - value |= DMA_CONTROL_SR; - - dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); - - value = readl(regbase + MAC_CONFIG); - value |= MAC_CONFIG_RE; - dwc_write_reg(value, regbase + MAC_CONFIG); -} - -void dwmac_dma_stop_rx(uint32_t regbase, uint32_t channel) -{ - uint32_t value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); - - value &= ~DMA_CONTROL_SR; - dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); - - value = readl(regbase + MAC_CONFIG); - value &= ~MAC_CONFIG_RE; - dwc_write_reg(value, regbase + MAC_CONFIG); -} - -void dwmac_set_tx_ring_len(uint32_t regbase, uint32_t len, uint32_t channel) -{ - dwc_write_reg(len, regbase + DMA_CHAN_TX_RING_LEN(channel)); -} - -void dwmac_set_rx_ring_len(uint32_t regbase, uint32_t len, uint32_t channel) -{ - dwc_write_reg(len, regbase + DMA_CHAN_RX_RING_LEN(channel)); -} - -void dwmac_enable_dma_rx_int(uint32_t regbase, uint32_t channel, bool enable) -{ - uint32_t val = readl(regbase + DMA_CHAN_INTR_ENA(channel)); - - val |= DMA_CHAN_INTR_DEFAULT_MASK; - - if (enable) - val |= DMA_CHAN_INTR_ENA_RIE; - else - val &= ~DMA_CHAN_INTR_ENA_RIE; - - dwc_write_reg(val, regbase + DMA_CHAN_INTR_ENA(channel)); -} - -void dwmac_enable_dma_tx_int(uint32_t regbase, uint32_t channel, bool enable) -{ - uint32_t val = readl(regbase + DMA_CHAN_INTR_ENA(channel)); - - val |= DMA_CHAN_INTR_DEFAULT_MASK; - - if (enable) - val |= DMA_CHAN_INTR_ENA_TIE; - else - val &= ~DMA_CHAN_INTR_ENA_TIE; - - dwc_write_reg(val, regbase + DMA_CHAN_INTR_ENA(channel)); -} - -uint32_t dwmac_get_dma_int_status(uint32_t regbase) -{ - return readl(regbase + DMA_STATUS); -} - -uint32_t dwmac_get_mac_int_status(uint32_t regbase) -{ - return readl(regbase + MAC_INT_STATUS); -} - -uint32_t dwmac_get_mac_phyif_control_status(uint32_t regbase) -{ - return readl(regbase + MAC_PHYIF_CONTROL_STATUS); -} - -uint32_t dwmac_get_mac_an_status(uint32_t regbase) -{ - return readl(regbase + MAC_AN_STATUS); -} - -uint32_t dwmac_get_mac_pmt_control_status(uint32_t regbase) -{ - return readl(regbase + MAC_PMT_CONTROL_STATUS); -} - -uint32_t dwmac_get_mac_lpi_control_status(uint32_t regbase) -{ - return readl(regbase + MAC_LPI_CONTROL_STATUS); -} - -uint32_t dwmac_get_mtl_int_status(uint32_t regbase) -{ - return readl(regbase + MTL_INT_STATUS); -} - -uint32_t dwmac_get_mtl_q_int_status(uint32_t regbase, uint32_t channel) -{ - return readl(regbase + MTL_CHAN_INT_CTRL(channel)); -} - -void dwmac_clr_mtl_q_int_status(uint32_t regbase, uint32_t channel, uint32_t val) -{ - writel(val, regbase + MTL_CHAN_INT_CTRL(channel)); -} - -uint32_t dwmac_get_dma_chn_status(uint32_t regbase, uint32_t channel) -{ - return readl(regbase + DMA_CHAN_STATUS(channel)); -} - -void dwmac_clear_dma_chn_int_status(uint32_t regbase, uint32_t channel) -{ - dwc_write_reg(0x3fffc7, regbase + DMA_CHAN_STATUS(channel)); -} - -void dwmac_enable_dma_irq(uint32_t regbase, uint32_t channel, bool rx, bool tx) -{ - uint32_t irq_enable_mask = DMA_CHAN_INTR_DEFAULT_MASK; - /* clearn irq */ - dwc_write_reg(0x3fffc7, regbase + DMA_CHAN_STATUS(channel)); - - /* enable irq */ - if (!rx) { - irq_enable_mask &= ~DMA_CHAN_INTR_ENA_RIE; - } - else { - irq_enable_mask |= DMA_CHAN_INTR_ENA_RIE; - } - - if (!tx) { - irq_enable_mask &= ~DMA_CHAN_INTR_ENA_TIE; - } - else { - irq_enable_mask |= DMA_CHAN_INTR_ENA_TIE; - } - - dwc_write_reg(irq_enable_mask, regbase + DMA_CHAN_INTR_ENA(channel)); -} - -void dwmac_disable_dma_irq(uint32_t regbase, uint32_t channel) -{ - dwc_write_reg(0, regbase + DMA_CHAN_INTR_ENA(channel)); -} - -void dwmac_dma_init_rx_chan(uint32_t regbase, uint32_t base_ptr, uint32_t rbsz, - uint32_t channel) -{ - uint32_t value; - - value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); - value = value | (rbsz << DMA_RBSZ_SHIFT); - /* Set max rx burst length to 16. Taishan only supports - * burst length less than or equal to 16. - */ - value &= ~GENMASK(21, 16); - value |= DMA_CONTROL_RXPBL(16); - dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); - - dwc_write_reg(base_ptr, regbase + DMA_CHAN_RX_BASE_ADDR(channel)); -} - -void dwmac_dma_init_tx_chan(uint32_t regbase, uint32_t base_ptr, - uint32_t channel) -{ - uint32_t value; - - value = readl(regbase + DMA_CHAN_TX_CONTROL(channel)); - - /* Enable OSP to get best performance */ - value |= DMA_CONTROL_OSP; - /* Set max tx burst length to 16. Taishan only supports - * burst length less than or equal to 16. - */ - value &= ~GENMASK(21, 16); - value |= DMA_CONTROL_TXPBL(16); - - dwc_write_reg(value, regbase + DMA_CHAN_TX_CONTROL(channel)); - dwc_write_reg(base_ptr, regbase + DMA_CHAN_TX_BASE_ADDR(channel)); -} - -void dwmac_dma_init_channel(uint32_t regbase, uint32_t Flags, \ - uint32_t channel, uint32_t skip) -{ - uint32_t value; - - /* common channel control register config */ - value = readl(regbase + DMA_CHAN_CONTROL(channel)); - - if (Flags & DMA_BUS_MODE_PBL) - value = value | DMA_BUS_MODE_PBL; - else - value = value & (~DMA_BUS_MODE_PBL); - - value |= ((skip << DMA_CONTROL_DSL_SHIFT) & DMA_CONTROL_DSL_MASK); - - dwc_write_reg(value, regbase + DMA_CHAN_CONTROL(channel)); - -} - -void dwmac_dma_bus_init(uint32_t regbase, uint32_t Flags) -{ - uint32_t value = readl(regbase + DMA_SYS_BUS_MODE); - - /* Set the Fixed burst Mode */ - if (Flags & DMA_SYS_BUS_FB) - value |= DMA_SYS_BUS_FB; - - /* Mixed Burst has no effect when fb is set */ - if (Flags & DMA_SYS_BUS_MB) - value |= DMA_SYS_BUS_MB; - - if (Flags & DMA_SYS_BUS_AAL) - value |= DMA_SYS_BUS_AAL; - - if (Flags & DMA_SYS_BUS_EAME) - value |= DMA_SYS_BUS_EAME; - - if (Flags & DMA_AXI_BLEN256) - value |= DMA_AXI_BLEN256; - else if (Flags & DMA_AXI_BLEN128) - value |= DMA_AXI_BLEN128; - else if (Flags & DMA_AXI_BLEN64) - value |= DMA_AXI_BLEN64; - else if (Flags & DMA_AXI_BLEN32) - value |= DMA_AXI_BLEN32; - else if (Flags & DMA_AXI_BLEN16) - value |= DMA_AXI_BLEN16; - else if (Flags & DMA_AXI_BLEN8) - value |= DMA_AXI_BLEN8; - else if (Flags & DMA_AXI_BLEN4) - value |= DMA_AXI_BLEN4; - - dwc_write_reg(value, regbase + DMA_SYS_BUS_MODE); -} - -/** - * @description: - * @param {uint32} regbase - * @param {uint32} channel - * @return {*} - */ -uint32_t dwmac_dma_rx_state_get(uint32_t regbase, uint32_t channel) -{ - uint32_t state = 0; - - switch (channel) { - case 0: - case 1: - case 2: - state = (readl(regbase + DMA_DEBUG_STATUS_0) >> (channel * 8 + 8)) & 0xF; - break; - - case 3: - case 4: - case 5: - state = (readl(regbase + DMA_DEBUG_STATUS_2) >> ((channel - 3) * 8)) & 0xF; - break; - - case 6: - case 7: - state = (readl(regbase + DMA_DEBUG_STATUS_2) >> ((channel - 6) * 8)) & 0xF; - break; - - default: - break; - } - - return state; -} - -void dwmac_rx_watchdog(uint32_t regbase, uint32_t riwt, uint32_t channel) -{ - dwc_write_reg(riwt, regbase + DMA_CHAN_RX_WATCHDOG(channel)); -} - -void dwmac_set_bfsize(uint32_t regbase, int BuffSize, uint32_t channel) -{ - uint32_t value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); - - value &= ~DMA_RBSZ_MASK; - value |= (BuffSize << DMA_RBSZ_SHIFT) & DMA_RBSZ_MASK; - - dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); -} - -/* =====================>DMA BLOCK END<==================== */ -#define MII_BUSY 0x00000001 -#define MII_WRITE 0x00000002 -#define MII_DATA_MASK 0xFFFF - -/* GMAC4 defines */ -#define MII_MAC_GOC_SHIFT 2 -#define MII_MAC_REG_ADDR_SHIFT 16 -#define MII_MAC_WRITE (1 << MII_MAC_GOC_SHIFT) -#define MII_MAC_READ (3 << MII_MAC_GOC_SHIFT) -#define MII_MAC_C45E 0x02 - -#define MII_ADDR_OFFSET 21 -#define MII_ADDR_MASK (0x1F< +#include +#include +#include "debug.h" +#include "reg.h" +#include "regs_base.h" +#include "phy/phy.h" +#include "sdrv_mac_lld.h" +#include + +static uint8_t deafult_mac_addr[6] = {0x00, 0x1f, 0x29, 0x00, 0x12, 0x15}; + +#define mdelay(x) udelay(x * 1000) + +void dwc_write_reg(uint32_t val, uint32_t regaddr) +{ + writel(val, regaddr); +} + +/** + * @brief generate mac addr + */ +__UNUSED static void generate_default_mac_from_uuid(void) +{ + uint32_t mac; + mac = readl(APB_EFUSEC_BASE + 0x1020); + mac ^= readl(APB_EFUSEC_BASE + 0x1024); + + deafult_mac_addr[3] = (uint8_t)(mac >> 0) & 0xFF; + deafult_mac_addr[4] = (uint8_t)(mac >> 8) & 0xFF; + deafult_mac_addr[5] = (uint8_t)(mac >> 16) & 0xFF; + +} + +static void dwmac_set_mac_addr(uint32_t regbase, uint8_t Addr[6], + uint32_t high, uint32_t low) +{ + unsigned long data; + + data = (Addr[5] << 8) | Addr[4]; + /* For MAC Addr registers se have to set the Address Enable (AE) + * bit that has no effect on the High Reg 0 where the bit 31 (MO) + * is RO. + */ + data |= (0 << MAC_HI_DCS_SHIFT); + dwc_write_reg(data | MAC_HI_REG_AE, regbase + high); + data = (Addr[3] << 24) | (Addr[2] << 16) | (Addr[1] << 8) | Addr[0]; + dwc_write_reg(data, regbase + low); +} + +static void dwmac_clr_mac_addr(uint32_t regbase, uint32_t high, uint32_t low) +{ + unsigned long data = 0xFFFF; + data &= ~MAC_HI_REG_AE; + dwc_write_reg(data, regbase + high); + + data = 0xFFFFFFFF; + dwc_write_reg(data, regbase + low); +} + +static void dwmac_get_mac_addr(uint32_t regbase, uint8_t *Addr, + uint32_t high, uint32_t low) +{ + uint32_t hi_addr, lo_addr; + + /* Read the MAC address from the hardware */ + hi_addr = readl(regbase + high); + lo_addr = readl(regbase + low); + + /* Extract the MAC address from the high and low words */ + Addr[0] = lo_addr & 0xff; + Addr[1] = (lo_addr >> 8) & 0xff; + Addr[2] = (lo_addr >> 16) & 0xff; + Addr[3] = (lo_addr >> 24) & 0xff; + Addr[4] = hi_addr & 0xff; + Addr[5] = (hi_addr >> 8) & 0xff; +} + +/** + * @description: + * @param {*} + * @return {*} + */ +__UNUSED static inline int32_t poll_reg_bits(uint32_t regbase, uint32_t BitMask, uint32_t BitVel, + uint32_t PollPeriod, uint32_t Timeout, bool Neq) +{ + uint32_t limit = Timeout; + + do { + if (Neq) { + if ((readl(regbase) & BitMask) == BitVel) { + udelay(PollPeriod); + } + else { + return 0; + } + } + else { + if ((readl(regbase) & BitMask) != BitVel) { + udelay(PollPeriod); + } + else { + return 0; + } + } + + limit--; + } + while (limit); + + return -1; +} + +/* =====================> MAC BLOCK <==================== */ +/** + * @name: + * @Desc: + * @param {void } *regbase + * @param {uint32} MTU + * @param {uint32} Speed + * @return {*} + */ +void dwmac_core_init(uint32_t regbase, uint32_t MTU, uint32_t Speed, + uint8_t *macaddr) +{ + + uint32_t value = readl(regbase + MAC_CONFIG); + + value |= MAC_CORE_INIT; + value &= ~MAC_CONFIG_TE; + value &= ~MAC_CONFIG_RE; + + if (MTU > 1500) + value |= MAC_CONFIG_2K; + + if (MTU > 2000) + value |= MAC_CONFIG_JE; + + // default is 1000Mbps + value &= ~(MAC_CONFIG_FES | MAC_CONFIG_PS); + + switch (Speed) { + case PHY_SPEED_1000: + break; + + case PHY_SPEED_100: + value |= MAC_CONFIG_FES | MAC_CONFIG_PS; + break; + + case PHY_SPEED_10: + value |= MAC_CONFIG_PS; + break; + } + + dwc_write_reg(value, regbase + MAC_CONFIG); + + /* Enable GMAC interrupts */ + value = MAC_INT_DEFAULT_ENABLE; + + value |= MAC_PCS_IRQ_DEFAULT; + + dwc_write_reg(value, regbase + MAC_INT_EN); + + /* Mask all MMC interrupts. */ + writel(~0, regbase + MMC_RX_INTERRUPT_MASK); + writel(~0, regbase + MMC_TX_INTERRUPT_MASK); + writel(~0, regbase + MMC_IPC_RX_INTERRUPT_MASK); + +#if CONFIG_ARCH_CHIP_E3 || CONFIG_ARCH_CHIP_D3 + /* Enable bus parity */ + value = readl(regbase + MTL_DPP_CTRL); + value |= MTL_DPP_CTRL_DATA_PARITY | MTL_DPP_CTRL_SLAVE_PARITY; + writel(value, regbase + MTL_DPP_CTRL); + + /* Enable ecc */ + value = readl(regbase + MTL_ECC_CTRL); + value |= MTL_ECC_DEFAULT_ENABLE; + writel(value, regbase + MTL_ECC_CTRL); +#endif + + /* Set user mac addr */ + if (macaddr == NULL) { + dwmac_set_umac_addr(regbase, deafult_mac_addr, 0); + } + else { + dwmac_set_umac_addr(regbase, macaddr, 0); + } + + /* Receive all */ + value = 0; + value |= MAC_PACKET_FILTER_PA; + dwc_write_reg(value, regbase + MAC_PACKET_FILTER); + + /* Because fillter will set the mac match dorp so init all mac register */ + for (int i = 1; i < 128; i++) { + dwmac_clr_umac_addr(regbase, i); + } +} + +/** + * @name: + * @Desc: + * @param {void} *Addr + * @param {uint8} Mode + * @param {uint32} Queue + * @return {*} + */ +void dwmac_mac_rx_queue_mcbc_routing(uint32_t regbase, uint8_t channel) +{ + uint32_t value; + value = readl(regbase + MAC_RXQ_CTRL1); + value |= MAC_RXQCTRL_MCBCQEN; + value &= ~MAC_RXQCTRL_MCBCQ_MASK; + value |= (channel << MAC_RXQCTRL_MCBCQ_SHIFT & \ + MAC_RXQCTRL_MCBCQ_MASK); + dwc_write_reg(value, regbase + MAC_RXQ_CTRL1); +} + +/** + * @description: + * @param {*} + * @return {*} + */ +void dwmac_clr_umac_addr(uint32_t regbase, uint32_t Reg_n) +{ + dwmac_clr_mac_addr(regbase, MAC_ADDR_HIGH(Reg_n), + MAC_ADDR_LOW(Reg_n)); +} + +/** + * @name: + * @Desc: + * @param {*} + * @return {*} + */ +void dwmac_set_umac_addr(uint32_t regbase, + const uint8_t *Addr, uint32_t Reg_n) +{ + dwmac_set_mac_addr(regbase, (uint8_t *)Addr, MAC_ADDR_HIGH(Reg_n), + MAC_ADDR_LOW(Reg_n)); +} + +/** + * @name: + * @Desc: + * @param {*} + * @return {*} + */ +void dwmac_get_umac_addr(uint32_t regbase, + unsigned char *Addr, uint32_t Reg_n) +{ + dwmac_get_mac_addr(regbase, Addr, MAC_ADDR_HIGH(Reg_n), + MAC_ADDR_LOW(Reg_n)); +} + +/** + * @description: + * @param {uint8*} src + * @param {uint8*} dst + * @return {*} + */ +static uint32_t dwmac_mac_comp(const uint8_t *src, const uint8_t *dst) +{ + for (int i = 0; i < 6; i++) { + if (src[i] != dst[i]) { + return -1; + } + } + + return 0; +} + +/** + * @description: + * @param {uint32} regbase + * @param {uint32} high + * @return {*} + */ +static uint32_t dwmac_mac_busy(uint32_t regbase, uint32_t i) +{ + uint32_t hi_addr; + /* Read the MAC address from the hardware */ + hi_addr = readl(regbase + MAC_ADDR_HIGH(i)); + + if (hi_addr & MAC_HI_REG_AE) { + return 1; + } + else { + return 0; + } +} + +/** + * @name: + * @Desc: + * @param {void } *regbase + * @param {uint32} Mode + * @param {uint8*} Addr + * @return {*} + */ +int32_t dwmac_set_filter(uint32_t regbase, uint32_t Mode, const uint8_t *Addr) +{ + uint32_t value = 0; + uint32_t ret = 0; + uint8_t mac_buf[6]; + uint8_t use_index = 0xFF, free_index = 0xFF; + value = readl(regbase + MAC_PACKET_FILTER); + value &= ~MAC_PACKET_FILTER_PM; + value |= MAC_PACKET_FILTER_DAIF | MAC_PACKET_FILTER_HPF; + + for (int i = 1; i < 128; i++) { + if (dwmac_mac_busy(regbase, i)) { + dwmac_get_umac_addr(regbase, mac_buf, i); + + if ((use_index == 0xFF) && !dwmac_mac_comp(Addr, mac_buf)) { + use_index = i; + } + } + else if ( free_index == 0xFF) { + free_index = i; + } + } + + /* Have the same mac in table ,not add */ + if (use_index != 0xFF) { + free_index = 0xFF; + } + + if (Mode) { + /* del */ + if (use_index == 0xFF) { + ret = -1; + } + else { + dwmac_clr_umac_addr(regbase, use_index); + } + } + else { + /* add */ + if (free_index == 0xFF) { + ret = -1; + } + else { + dwmac_set_umac_addr(regbase, Addr, free_index); + } + } + + dwc_write_reg(value, regbase + MAC_PACKET_FILTER); + return ret; +} + +/* =====================>MAC BLOCK END<==================== */ +/* =====================> MTL BLOCK <==================== */ +/** + * @name: + * @Desc: + * @param {void} *regbase + * @param {uint32} alg + * @return {*} + */ +void dwmac_prog_mtl_rx_algorithms(uint32_t regbase, uint32_t Algorithm) +{ + uint32_t value = readl(regbase + MTL_OPERATION_MODE); + + switch (Algorithm) { + case MTL_RX_ALGORITHM_SP: + value &= ~MTL_OPERATION_RAA; + break; + + case MTL_RX_ALGORITHM_WSP: + value |= MTL_OPERATION_RAA_WSP; + break; + + default: + break; + } + + dwc_write_reg(value, regbase + MTL_OPERATION_MODE); +} + +/** + * @name: + * @Desc: + * @param {void} *regbase + * @param {uint32} alg + * @return {*} + */ +void dwmac_prog_mtl_tx_algorithms(uint32_t regbase, uint32_t Algorithm) +{ + uint32_t value = readl(regbase + MTL_OPERATION_MODE); + + value &= ~MTL_OPERATION_SCHALG_MASK; + + switch (Algorithm) { + case MTL_TX_ALGORITHM_WRR: + value |= MTL_OPERATION_SCHALG_WRR; + break; + + case MTL_TX_ALGORITHM_WFQ: + value |= MTL_OPERATION_SCHALG_WFQ; + break; + + case MTL_TX_ALGORITHM_DWRR: + value |= MTL_OPERATION_SCHALG_DWRR; + break; + + case MTL_TX_ALGORITHM_SP: + value |= MTL_OPERATION_SCHALG_SP; + break; + + default: + break; + } + + /* flush MTL */ + value |= 0x01 << 9; + dwc_write_reg(value, regbase + MTL_OPERATION_MODE); +} + +/** + * @name: + * @Desc: + * @param {void} *Addr + * @param {uint32} Queue + * @param {uint32} channel + * @return {*} + */ +void dwmac_map_mtl_dma(uint32_t Addr, uint32_t Queue, uint32_t channel) +{ + uint32_t regbase = Addr; + uint32_t value; + + if (Queue < 4) + value = readl(regbase + MTL_RXQ_DMA_MAP0); + else + value = readl(regbase + MTL_RXQ_DMA_MAP1); + + if (Queue == 0 || Queue == 4) { + value &= ~MTL_RXQ_DMA_Q04MDMACH_MASK; + value |= MTL_RXQ_DMA_Q04MDMACH(channel); + } + else { + value &= ~MTL_RXQ_DMA_QXMDMACH_MASK(Queue); + value |= MTL_RXQ_DMA_QXMDMACH(channel, Queue); + } + + if (Queue < 4) + dwc_write_reg(value, regbase + MTL_RXQ_DMA_MAP0); + else + dwc_write_reg(value, regbase + MTL_RXQ_DMA_MAP1); +} + +/** + * @name: + * @Desc: + * @param {void} *Addr + * @param {uint8} Mode + * @param {uint32} Queue + * @return {*} + */ +void dwmac_rx_queue_enable(uint32_t Addr, uint8_t Mode, uint32_t Queue) +{ + uint32_t regbase = Addr; + uint32_t value = readl(regbase + MAC_RXQ_CTRL0); + + value &= MAC_RX_QUEUE_CLEAR(Queue); + + if (Mode == MTL_QUEUE_MODE_AVB) + value |= MAC_RX_AV_QUEUE_ENABLE(Queue); + else if (Mode == MTL_QUEUE_MODE_DCB) + value |= MAC_RX_DCB_QUEUE_ENABLE(Queue); + + dwc_write_reg(value, regbase + MAC_RXQ_CTRL0); +} + +/** + * @name: + * @Desc: + * @param {*} + * @return {*} + */ +void dwmac_dma_rx_chan_op_mode(uint32_t regbase, uint32_t channel, int Mode, + int FifoSize, uint8_t QMode) +{ + unsigned int rqs = FifoSize / 256 - 1; + uint32_t mtl_rx_op, mtl_rx_int; + + mtl_rx_op = readl(regbase + MTL_CHAN_RX_OP_MODE(channel)); + /* Forward Undersized Good Packets */ + mtl_rx_op |= MTL_OP_MODE_FUP; + + if (Mode == SF_MODE) { + mtl_rx_op |= MTL_OP_MODE_RSF; + } + else { + mtl_rx_op &= ~MTL_OP_MODE_RSF; + mtl_rx_op &= MTL_OP_MODE_RTC_MASK; + + if (Mode <= 32) + mtl_rx_op |= MTL_OP_MODE_RTC_32; + else if (Mode <= 64) + mtl_rx_op |= MTL_OP_MODE_RTC_64; + else if (Mode <= 96) + mtl_rx_op |= MTL_OP_MODE_RTC_96; + else + mtl_rx_op |= MTL_OP_MODE_RTC_128; + } + + mtl_rx_op &= ~MTL_OP_MODE_RQS_MASK; + mtl_rx_op |= rqs << MTL_OP_MODE_RQS_SHIFT; + + /* Enable flow control only if each channel gets 4 KiB or more FIFO and + * only if channel is not an AVB channel. + */ + if ((FifoSize >= 4096) && (QMode != MTL_QUEUE_MODE_AVB)) { + unsigned int rfd, rfa; + + mtl_rx_op |= MTL_OP_MODE_EHFC; + + /* Set Threshold for Activating Flow Control to min 2 frames, + * i.e. 1500 * 2 = 3000 bytes. + * + * Set Threshold for Deactivating Flow Control to min 1 frame, + * i.e. 1500 bytes. + */ + switch (FifoSize) { + case 4096: + /* This violates the above formula because of FIFO size + * limit therefore overflow may occur in spite of this. + */ + rfd = 0x03; /* Full-2.5K */ + rfa = 0x01; /* Full-1.5K */ + break; + + case 8192: + rfd = 0x06; /* Full-4K */ + rfa = 0x0a; /* Full-6K */ + break; + + case 16384: + rfd = 0x06; /* Full-4K */ + rfa = 0x12; /* Full-10K */ + break; + + default: + rfd = 0x06; /* Full-4K */ + rfa = 0x1e; /* Full-16K */ + break; + } + + mtl_rx_op &= ~MTL_OP_MODE_RFD_MASK; + mtl_rx_op |= rfd << MTL_OP_MODE_RFD_SHIFT; + + mtl_rx_op &= ~MTL_OP_MODE_RFA_MASK; + mtl_rx_op |= rfa << MTL_OP_MODE_RFA_SHIFT; + } + + dwc_write_reg(mtl_rx_op, regbase + MTL_CHAN_RX_OP_MODE(channel)); + + /* Enable MTL RX overflow */ + mtl_rx_int = readl(regbase + MTL_CHAN_INT_CTRL(channel)); + + dwc_write_reg(mtl_rx_int | MTL_RX_OVERFLOW_INT_EN, + regbase + MTL_CHAN_INT_CTRL(channel)); +} + +/* + Mode transmit store and forward enable or not + QMode transmit Queue enable or not + fifo transmit Queue size +*/ +void dwmac_dma_tx_chan_op_mode(uint32_t regbase, uint32_t channel, int Mode, + int FifoSize, uint8_t QMode) +{ + uint32_t mtl_tx_op = readl(regbase + MTL_CHAN_TX_OP_MODE(channel)); + unsigned int tqs = FifoSize / 256 - 1; + + if (Mode == SF_MODE) { + /* Transmit COE type 2 cannot be done in cut-through Mode. */ + mtl_tx_op |= MTL_OP_MODE_TSF; + } + else { + mtl_tx_op &= ~MTL_OP_MODE_TSF; + mtl_tx_op &= MTL_OP_MODE_TTC_MASK; + + /* Set the transmit threshold */ + if (Mode <= 32) + mtl_tx_op |= MTL_OP_MODE_TTC_32; + else if (Mode <= 64) + mtl_tx_op |= MTL_OP_MODE_TTC_64; + else if (Mode <= 96) + mtl_tx_op |= MTL_OP_MODE_TTC_96; + else if (Mode <= 128) + mtl_tx_op |= MTL_OP_MODE_TTC_128; + else if (Mode <= 192) + mtl_tx_op |= MTL_OP_MODE_TTC_192; + else if (Mode <= 256) + mtl_tx_op |= MTL_OP_MODE_TTC_256; + else if (Mode <= 384) + mtl_tx_op |= MTL_OP_MODE_TTC_384; + else + mtl_tx_op |= MTL_OP_MODE_TTC_512; + } + + /* For an IP with DWC_EQOS_NUM_TXQ == 1, the fields TXQEN and TQS are RO + * with reset values: TXQEN on, TQS == DWC_EQOS_TXFIFO_SIZE. + * For an IP with DWC_EQOS_NUM_TXQ > 1, the fields TXQEN and TQS are R/W + * with reset values: TXQEN off, TQS 256 bytes. + * + * TXQEN must be written for multi-channel operation and TQS must + * reflect the available fifo size per Queue (total fifo size / number + * of enabled queues). + */ + mtl_tx_op &= ~MTL_OP_MODE_TXQEN_MASK; + + if (QMode != MTL_QUEUE_MODE_AVB) + mtl_tx_op |= MTL_OP_MODE_TXQEN; + else + mtl_tx_op |= MTL_OP_MODE_TXQEN_AV; + + mtl_tx_op &= ~MTL_OP_MODE_TQS_MASK; + mtl_tx_op |= tqs << MTL_OP_MODE_TQS_SHIFT; + + dwc_write_reg(mtl_tx_op, regbase + MTL_CHAN_TX_OP_MODE(channel)); +} + +/* =====================>MTL BLOCK END<==================== */ +/* =====================> DMA BLOCK <==================== */ +/** + * @name: + * @Desc: + * @param {void } *regbase + * @return {*} + */ +int32_t dwmac_dma_reset(uint32_t regbase) +{ + int32_t limit; + uint32_t value = readl(regbase + DMA_BUS_MODE); + + /* DMA SW reset */ + value |= DMA_BUS_MODE_SFT_RESET; + dwc_write_reg(value, regbase + DMA_BUS_MODE); + limit = 10; + + while (limit--) { + if (!(readl(regbase + DMA_BUS_MODE) & DMA_BUS_MODE_SFT_RESET)) + break; + + mdelay(1); //20251106 ÐÞ¸ÄΪ1£¬10ʵ¼ÊÑÓʱΪ140ms + } + + if (limit <= 0) { + return -1; + } + + return 0; +} + +void dwmac_set_rx_list_ptr(uint32_t regbase, uint32_t list_ptr, + uint32_t channel) +{ + writel(list_ptr, regbase + DMA_CHAN_RX_BASE_ADDR(channel)); +} + +void dwmac_set_tx_list_ptr(uint32_t regbase, uint32_t list_ptr, + uint32_t channel) +{ + writel(list_ptr, regbase + DMA_CHAN_TX_BASE_ADDR(channel)); +} + +void dwmac_set_rx_tail_ptr(uint32_t regbase, uint32_t tail_ptr, + uint32_t channel) +{ + dwc_write_reg(tail_ptr, regbase + DMA_CHAN_RX_END_ADDR(channel)); +} + +void dwmac_set_tx_tail_ptr(uint32_t regbase, uint32_t tail_ptr, + uint32_t channel) +{ + dwc_write_reg(tail_ptr, regbase + DMA_CHAN_TX_END_ADDR(channel)); +} + +void dwmac_rx_trigger(uint32_t regbase, uint32_t channel) +{ + uint32_t tail = readl(regbase + DMA_CHAN_RX_END_ADDR(channel)); + dwc_write_reg(tail, regbase + DMA_CHAN_RX_END_ADDR(channel)); +} + +void dwmac_dma_start_tx(uint32_t regbase, uint32_t channel) +{ + uint32_t value = readl(regbase + DMA_CHAN_TX_CONTROL(channel)); + + value |= DMA_CONTROL_ST; + dwc_write_reg(value, regbase + DMA_CHAN_TX_CONTROL(channel)); + + value = readl(regbase + MAC_CONFIG); + value |= MAC_CONFIG_TE; + dwc_write_reg(value, regbase + MAC_CONFIG); +} + +void dwmac_dma_stop_tx(uint32_t regbase, uint32_t channel) +{ + uint32_t value = readl(regbase + DMA_CHAN_TX_CONTROL(channel)); + + value &= ~DMA_CONTROL_ST; + dwc_write_reg(value, regbase + DMA_CHAN_TX_CONTROL(channel)); + + value = readl(regbase + MAC_CONFIG); + value &= ~MAC_CONFIG_TE; + dwc_write_reg(value, regbase + MAC_CONFIG); +} + +void dwmac_dma_start_rx(uint32_t regbase, uint32_t channel) +{ + uint32_t value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); + + value |= DMA_CONTROL_SR; + + dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); + + value = readl(regbase + MAC_CONFIG); + value |= MAC_CONFIG_RE; + dwc_write_reg(value, regbase + MAC_CONFIG); +} + +void dwmac_dma_stop_rx(uint32_t regbase, uint32_t channel) +{ + uint32_t value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); + + value &= ~DMA_CONTROL_SR; + dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); + + value = readl(regbase + MAC_CONFIG); + value &= ~MAC_CONFIG_RE; + dwc_write_reg(value, regbase + MAC_CONFIG); +} + +void dwmac_set_tx_ring_len(uint32_t regbase, uint32_t len, uint32_t channel) +{ + dwc_write_reg(len, regbase + DMA_CHAN_TX_RING_LEN(channel)); +} + +void dwmac_set_rx_ring_len(uint32_t regbase, uint32_t len, uint32_t channel) +{ + dwc_write_reg(len, regbase + DMA_CHAN_RX_RING_LEN(channel)); +} + +void dwmac_enable_dma_rx_int(uint32_t regbase, uint32_t channel, bool enable) +{ + uint32_t val = readl(regbase + DMA_CHAN_INTR_ENA(channel)); + + val |= DMA_CHAN_INTR_DEFAULT_MASK; + + if (enable) + val |= DMA_CHAN_INTR_ENA_RIE; + else + val &= ~DMA_CHAN_INTR_ENA_RIE; + + dwc_write_reg(val, regbase + DMA_CHAN_INTR_ENA(channel)); +} + +void dwmac_enable_dma_tx_int(uint32_t regbase, uint32_t channel, bool enable) +{ + uint32_t val = readl(regbase + DMA_CHAN_INTR_ENA(channel)); + + val |= DMA_CHAN_INTR_DEFAULT_MASK; + + if (enable) + val |= DMA_CHAN_INTR_ENA_TIE; + else + val &= ~DMA_CHAN_INTR_ENA_TIE; + + dwc_write_reg(val, regbase + DMA_CHAN_INTR_ENA(channel)); +} + +uint32_t dwmac_get_dma_int_status(uint32_t regbase) +{ + return readl(regbase + DMA_STATUS); +} + +uint32_t dwmac_get_mac_int_status(uint32_t regbase) +{ + return readl(regbase + MAC_INT_STATUS); +} + +uint32_t dwmac_get_mac_phyif_control_status(uint32_t regbase) +{ + return readl(regbase + MAC_PHYIF_CONTROL_STATUS); +} + +uint32_t dwmac_get_mac_an_status(uint32_t regbase) +{ + return readl(regbase + MAC_AN_STATUS); +} + +uint32_t dwmac_get_mac_pmt_control_status(uint32_t regbase) +{ + return readl(regbase + MAC_PMT_CONTROL_STATUS); +} + +uint32_t dwmac_get_mac_lpi_control_status(uint32_t regbase) +{ + return readl(regbase + MAC_LPI_CONTROL_STATUS); +} + +uint32_t dwmac_get_mtl_int_status(uint32_t regbase) +{ + return readl(regbase + MTL_INT_STATUS); +} + +uint32_t dwmac_get_mtl_q_int_status(uint32_t regbase, uint32_t channel) +{ + return readl(regbase + MTL_CHAN_INT_CTRL(channel)); +} + +void dwmac_clr_mtl_q_int_status(uint32_t regbase, uint32_t channel, uint32_t val) +{ + writel(val, regbase + MTL_CHAN_INT_CTRL(channel)); +} + +uint32_t dwmac_get_dma_chn_status(uint32_t regbase, uint32_t channel) +{ + return readl(regbase + DMA_CHAN_STATUS(channel)); +} + +void dwmac_clear_dma_chn_int_status(uint32_t regbase, uint32_t channel) +{ + dwc_write_reg(0x3fffc7, regbase + DMA_CHAN_STATUS(channel)); +} + +void dwmac_enable_dma_irq(uint32_t regbase, uint32_t channel, bool rx, bool tx) +{ + uint32_t irq_enable_mask = DMA_CHAN_INTR_DEFAULT_MASK; + /* clearn irq */ + dwc_write_reg(0x3fffc7, regbase + DMA_CHAN_STATUS(channel)); + + /* enable irq */ + if (!rx) { + irq_enable_mask &= ~DMA_CHAN_INTR_ENA_RIE; + } + else { + irq_enable_mask |= DMA_CHAN_INTR_ENA_RIE; + } + + if (!tx) { + irq_enable_mask &= ~DMA_CHAN_INTR_ENA_TIE; + } + else { + irq_enable_mask |= DMA_CHAN_INTR_ENA_TIE; + } + + dwc_write_reg(irq_enable_mask, regbase + DMA_CHAN_INTR_ENA(channel)); +} + +void dwmac_disable_dma_irq(uint32_t regbase, uint32_t channel) +{ + dwc_write_reg(0, regbase + DMA_CHAN_INTR_ENA(channel)); +} + +void dwmac_dma_init_rx_chan(uint32_t regbase, uint32_t base_ptr, uint32_t rbsz, + uint32_t channel) +{ + uint32_t value; + + value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); + value = value | (rbsz << DMA_RBSZ_SHIFT); + /* Set max rx burst length to 16. Taishan only supports + * burst length less than or equal to 16. + */ + value &= ~GENMASK(21, 16); + value |= DMA_CONTROL_RXPBL(16); + dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); + + dwc_write_reg(base_ptr, regbase + DMA_CHAN_RX_BASE_ADDR(channel)); +} + +void dwmac_dma_init_tx_chan(uint32_t regbase, uint32_t base_ptr, + uint32_t channel) +{ + uint32_t value; + + value = readl(regbase + DMA_CHAN_TX_CONTROL(channel)); + + /* Enable OSP to get best performance */ + value |= DMA_CONTROL_OSP; + /* Set max tx burst length to 16. Taishan only supports + * burst length less than or equal to 16. + */ + value &= ~GENMASK(21, 16); + value |= DMA_CONTROL_TXPBL(16); + + dwc_write_reg(value, regbase + DMA_CHAN_TX_CONTROL(channel)); + dwc_write_reg(base_ptr, regbase + DMA_CHAN_TX_BASE_ADDR(channel)); +} + +void dwmac_dma_init_channel(uint32_t regbase, uint32_t Flags, \ + uint32_t channel, uint32_t skip) +{ + uint32_t value; + + /* common channel control register config */ + value = readl(regbase + DMA_CHAN_CONTROL(channel)); + + if (Flags & DMA_BUS_MODE_PBL) + value = value | DMA_BUS_MODE_PBL; + else + value = value & (~DMA_BUS_MODE_PBL); + + value |= ((skip << DMA_CONTROL_DSL_SHIFT) & DMA_CONTROL_DSL_MASK); + + dwc_write_reg(value, regbase + DMA_CHAN_CONTROL(channel)); + +} + +void dwmac_dma_bus_init(uint32_t regbase, uint32_t Flags) +{ + uint32_t value = readl(regbase + DMA_SYS_BUS_MODE); + + /* Set the Fixed burst Mode */ + if (Flags & DMA_SYS_BUS_FB) + value |= DMA_SYS_BUS_FB; + + /* Mixed Burst has no effect when fb is set */ + if (Flags & DMA_SYS_BUS_MB) + value |= DMA_SYS_BUS_MB; + + if (Flags & DMA_SYS_BUS_AAL) + value |= DMA_SYS_BUS_AAL; + + if (Flags & DMA_SYS_BUS_EAME) + value |= DMA_SYS_BUS_EAME; + + if (Flags & DMA_AXI_BLEN256) + value |= DMA_AXI_BLEN256; + else if (Flags & DMA_AXI_BLEN128) + value |= DMA_AXI_BLEN128; + else if (Flags & DMA_AXI_BLEN64) + value |= DMA_AXI_BLEN64; + else if (Flags & DMA_AXI_BLEN32) + value |= DMA_AXI_BLEN32; + else if (Flags & DMA_AXI_BLEN16) + value |= DMA_AXI_BLEN16; + else if (Flags & DMA_AXI_BLEN8) + value |= DMA_AXI_BLEN8; + else if (Flags & DMA_AXI_BLEN4) + value |= DMA_AXI_BLEN4; + + dwc_write_reg(value, regbase + DMA_SYS_BUS_MODE); +} + +/** + * @description: + * @param {uint32} regbase + * @param {uint32} channel + * @return {*} + */ +uint32_t dwmac_dma_rx_state_get(uint32_t regbase, uint32_t channel) +{ + uint32_t state = 0; + + switch (channel) { + case 0: + case 1: + case 2: + state = (readl(regbase + DMA_DEBUG_STATUS_0) >> (channel * 8 + 8)) & 0xF; + break; + + case 3: + case 4: + case 5: + state = (readl(regbase + DMA_DEBUG_STATUS_2) >> ((channel - 3) * 8)) & 0xF; + break; + + case 6: + case 7: + state = (readl(regbase + DMA_DEBUG_STATUS_2) >> ((channel - 6) * 8)) & 0xF; + break; + + default: + break; + } + + return state; +} + +void dwmac_rx_watchdog(uint32_t regbase, uint32_t riwt, uint32_t channel) +{ + dwc_write_reg(riwt, regbase + DMA_CHAN_RX_WATCHDOG(channel)); +} + +void dwmac_set_bfsize(uint32_t regbase, int BuffSize, uint32_t channel) +{ + uint32_t value = readl(regbase + DMA_CHAN_RX_CONTROL(channel)); + + value &= ~DMA_RBSZ_MASK; + value |= (BuffSize << DMA_RBSZ_SHIFT) & DMA_RBSZ_MASK; + + dwc_write_reg(value, regbase + DMA_CHAN_RX_CONTROL(channel)); +} + +/* =====================>DMA BLOCK END<==================== */ +#define MII_BUSY 0x00000001 +#define MII_WRITE 0x00000002 +#define MII_DATA_MASK 0xFFFF + +/* GMAC4 defines */ +#define MII_MAC_GOC_SHIFT 2 +#define MII_MAC_REG_ADDR_SHIFT 16 +#define MII_MAC_WRITE (1 << MII_MAC_GOC_SHIFT) +#define MII_MAC_READ (3 << MII_MAC_GOC_SHIFT) +#define MII_MAC_C45E 0x02 + +#define MII_ADDR_OFFSET 21 +#define MII_ADDR_MASK (0x1F< -#include -#include -#include -#include -#include - -static err_t netdev_linkoutput_fn(struct netif *netif, struct pbuf *p) -{ - struct net_driver_s *dev; - - dev = (struct net_driver_s *)netif->state; - - return dev->d_txavail ? dev->d_txavail(dev, p) : ERR_IF; -} - -static err_t netdev_init_fn(struct netif *netif) -{ - struct net_driver_s *dev; - - netif->output = etharp_output; - netif->linkoutput = netdev_linkoutput_fn; - - dev = (struct net_driver_s *)netif->state; - - if (dev->d_getmac) { - netif->hwaddr_len = (u8_t)(dev->d_getmac(dev, netif->hwaddr, sizeof(netif->hwaddr))); - } - - if (dev->d_getmtu) { - netif->mtu = (u16_t)(dev->d_getmtu(dev)); - } - - if (dev->d_lltype == NET_LL_ETHERNET) { - netif->name[0] = 'e'; - netif->name[1] = 'n'; - netif->num = 0; - netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; - } - - if (dev->d_init) { - dev->d_init(dev); - } - - return ERR_OK; -} - -err_t netdev_register(struct net_driver_s *dev, enum net_lltype_e lltype) -{ - LWIP_ASSERT("netdev_register: dev is NULL", dev != NULL); - - dev->d_lltype = (u8_t)lltype; - - netif_add(&dev->d_netif, - ip_2_ip4(&dev->d_ipaddr), - ip_2_ip4(&dev->d_netmask), - ip_2_ip4(&dev->d_gateway), - dev, netdev_init_fn, netif_input); - - netif_set_default(&dev->d_netif); - netif_set_up(&dev->d_netif); - - return ERR_OK; -} +#include +#include +#include +#include +#include +#include +#include + +static err_t netdev_linkoutput_fn(struct netif *netif, struct pbuf *p) +{ + struct net_driver_s *dev; + + dev = (struct net_driver_s *)netif->state; + + return dev->d_txavail ? dev->d_txavail(dev, p) : ERR_IF; +} + +static err_t netdev_init_fn(struct netif *netif) +{ + struct net_driver_s *dev; + + netif->output = etharp_output; + netif->linkoutput = netdev_linkoutput_fn; + + dev = (struct net_driver_s *)netif->state; + + if (dev->d_getmac) { + netif->hwaddr_len = (u8_t)(dev->d_getmac(dev, netif->hwaddr, sizeof(netif->hwaddr))); + } + + if (dev->d_getmtu) { + netif->mtu = (u16_t)(dev->d_getmtu(dev)); + } + + if (dev->d_lltype == NET_LL_ETHERNET) { + netif->name[0] = 'e'; + netif->name[1] = 'n'; + netif->num = 0; + netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; + } + + if (dev->d_init) { + dev->d_init(dev); + + } + + return ERR_OK; +} + +err_t netdev_register(struct net_driver_s *dev, enum net_lltype_e lltype) +{ + LWIP_ASSERT("netdev_register: dev is NULL", dev != NULL); + + dev->d_lltype = (u8_t)lltype; + + netif_add(&dev->d_netif, + ip_2_ip4(&dev->d_ipaddr), + ip_2_ip4(&dev->d_netmask), + ip_2_ip4(&dev->d_gateway), + dev, netdev_init_fn, netif_input); + netif_set_default(&dev->d_netif); + netif_set_up(&dev->d_netif); + + return ERR_OK; +} diff --git a/tools/sdtools/temp/2025110901boot.bin b/tools/sdtools/temp/2025110901boot.bin new file mode 100644 index 0000000000000000000000000000000000000000..063f59c900e6af527682f14c80c9a4098cd431c4 GIT binary patch literal 172384 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

?MJU_8J=M1v;H}y9WB*FK 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 z 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 aX3TM9>r`HMUa0?#xt_e&9hh)q*!(~272L1@ literal 0 HcmV?d00001 diff --git a/tools/sdtools/temp/2025111601boot.bin b/tools/sdtools/temp/2025111601boot.bin new file mode 100644 index 0000000000000000000000000000000000000000..7a2a1f142c4878150f9dbaa08e92d09d67bbb9bc GIT binary patch literal 172352 zcmeFaf1FiSz5l=VIcJ#RFv1>YKpapuFctyoQPBud51_@($^)XAd38)OEz_y2%q;f| z11JKHifAUW)#{p8YclJ4P4l4mBU1xYqs-d-9JWJaj%Ze7Uim&>YwrUS;;q~LJidQ? zKJj=Ad+)W^dcWW6z23jpd#$xkW?^ZLF~;T3WcA-}|0?|#?^g2W#|DauS7!LHl)Ox@ z55D{Sm$n?%@#WvVedJ|l@AbJqZu!aWAH2Q&u63V0Yt}^{?K$hfH$(bo$v-*pPY(S5 z$$@SCExAl?5JtzC$NC!fA2(z5QR81;`O%C1eC(sk*1yrxw)%=ytK8h}-!?3AC6{PRukDDSsr&dWc4`A-*qf5R>BdDpq``t!WGYrg#Oofm%h`uChL;+}_| z`Pj47xn~}E+ILS2zj4O5f3x9@;Ev$LhDQ(m@{g{_Y`bXXIY&Ho)r${Ze8TphZSSo< zdC}YcGWmJuC%=E-!nZfxxMopHx%`oyGY|M={?7Vs*Z=N?mEZo)%58fc_{-1z@YB~# zI^v!$x!-(u>k*R|{pO4>+~0S{gv_m*KeOzSzS0(R-LH>(V%FA=pE&CMXT<;ZiR)I( zxp(H2w~f2z^e-Opol~PT=gzz97q3-be*5pAy5dJ?UEXoR$-_SUr>()tZ$C6}$-@`k zJmJ};%TC;r863o*f8PFI%>l=t0sn9RJN@~o&$fK)u(PiE%PC*|%SXR`)RH5=zv9|= z_by$U8#v{$DQ#b!d-3+pkBul@+S2*^#Rr`Jx_`!vThDm$pihrmec;%uPW(jnsQSw< zuA6v*`LB1s<7D6Y{n=g4rWd#TWK_KJx^cJt(ErYqQJ;MIrTu?bw}00mQ-Ad8#f=AC z^7hl~URW}9?@dQu`1u8wkIzj1nfb=sK6cv1((UiNeB>4Hf9CSWY53schIZ#Gp}FpFEbYH zbHnq`O#StmrRRlLP;^abUxQcV4m=(akGw?ATH3 z+n8Lem2G#w3$Gh;n%5c*ZUF^LynyE~y zL%oAdb5v*ViW*Y5k<0Uoqa5u`7J^-_S2hXJK(ASBAdw4RJ9yu1cTtj@MPmK`&XD znWEA1pEgYoXR3|ngy`iRJ19@aC1-l#vez3odiPhIrmo1ieysW(XP| zf^41J%NPY!JC5$^*m3>Pw0Fi`E%e)49cMhA-L5!SSREI~cOnydPIzG4p4e|o`szT} zYeN$rB;^Tja*WACJ9b#!7;|DZ(;hUJ;bq2MUv=E2mOk;L?7z! z)ABdxQ9iLNG}G^h{hutZnlk-K>zbC{*q^$-dWK{AB`>)Gyoa~WA&bGqSWE|&Hwaf@ zF}N1*Y`+ti*BK9%8RWX!Prn_m;z1wxne=`O_u2G55^vJ`UvpoV-apIzko0~t_x0)h z)3*L<J*Po>IlYFdw}7m?`!?MY!7wHH5e%#e-CwvM7ZhBjw{hyq66`C-eK(nSRwRqR+;3 zGWJ1qliI`Qd^zE>i+=2Ab1JWm530>CAKZ6?gJmhLs${$+*tbMqe8!_=+WKl~Ru}rN zvLK4z08iTg5u&>gRO`K6;A7|jGpZ~3QI>M?X`HQ7toZu|RezM;bw+z*cW*P$!+XaRNBSo& zY08)rkUP`bNO_L(BRhUo=b0N~2<>-xhaGC2)$yx%9A%}JYTvd2Xs*aguZp&f=6;+L z4tEpy-nl_kgVQK~(6OxY`3`Kq`keMr<2Pi{QftGF`CwIJP<*K~TYPDK^AK=~53lUl z0oo5%U*+m_yvM@8ruLiAk29t>%6dW6yYITV08G(8nyb|@+Rh%2-6|my*vex^bYa7K z;?a{kpRbMiv3if4_YUrjFW&coYJFShPI;J@zGGao?X8{JF-<|;wq^Hj6(5>Y9K}7r zpD-hcvNM)Oi41{v5RRKi22tn8WjpQayn_wZ?E&*zjZBud@ClS6+e7T7hrts*LxX%J_1&(%8}!iI#asYs?nMZt>o&SG=*K zU%G^zM8;VYw{`Ty^(Kf$OGlAac$PmEIXHE%b@6XAlGkVA3GUBh6G*2@Q3vl`v&PE% z4cwavYhu}hSNrj=<)GSDxGL^>X;pPU^wTw0<5RDW-Ioh}H-v5BHR0s2<&9Z=8;akH z&A$@2y>V3Ew&mF9VqHkwQXOF$CpJFP5Ym_E;`ayD;ahT)2Zz$vXt+Ti&Eoj$&?7nt z2J&tA(j0R4SA4e5^tXI)sO%Y#6`9{X0p`4CK`kX62kod~B{AcL|RBC~HC<+sswKfLDc{__3cZM&FPJ?lWE(J)SL;v@bm0paPxEkG8^fs@L&<@UyqW9J0d%S7%6RiJ4@Hhyh}=9_ zaoka%F*#yL+0;_CjyBS>Z#SA3keB{%lzO8@MPk}uIllVD>T5f8EYFyQ)$KcWOc`%l zD{&inxGo+aLbFGo%2&nvMPbw!4i8;t72^%R-0R{3 zxN;u4#&}-|PSM-qZj7a4Ec~_JSa>F$Xpm9jM8T{Fk7W9y|Jw0_-sxF>MP;8=8MNrW z1s`)G{Fn$o2E!zNZmr3g?D!DsO1Cwh8koucP+`Xq{Bv7`KJ+xfIauglJXcqDVF< z7_p)Pj^)JbQKlFi+;h+hdrHgUt`i-SOt(8zS^6%)0Bt?cCp9ehOVU6&t1Y^PxAnv@ptM)M+#FYzb744dh8May2_(J#Fby(8M4igB*7wo3PZfHOPrmT2lEebN2?`1OIN(DxG^{?g77j^{92RnP6i9Wb!op($#Sr zdX-~7d-;mcWEOKf)&mkd)cDjk04Y%Xykd^u#-g zPGyANV@o>~zu>QPg_Uu`#P1@v&+$G}*)$=tdRzzno0_6Nhq&Z6w~X&F{R@%r0 zZe9CxalQXsd<YY^e1u}+wp$_o}-O^=f!Df4JS19ZK4%jmCB(We)elg~z=n zZV^xM^EX42U?9)=ZRn%yUY+ER`l7dkzKtYa9;fjkR+p`?acqa;C-w8%*ey9#$43`G zxh|GnxLq+p5AT4xFZks1{{wl*5x=Vc_^JFxV%sbolMb{F>Pc};P$EER~uo1T0RZPq~{6#nIwlTMYch&Riq$_LUSM%775k76m zO+ky`OAef%v%;KgCi4}^$jtZAR_{KD{E3dY!b?u2Rdh9uGr5*8E-;Eu-pknk{&;Mq zA4JnPzQ1Ccu8TLn`|&8#&RhyUwIT2AJ!@mnmET$!x0scc6T#C!+_#sv+3Ji5)`U*) zzY(7;s1DN@6<3FKrEk#Z6RRyfD=Qi6_ZL=k#o$o%=+GhUYr^`De+!2MK~&!xL^H^V zZZAF_$p+-TAR1Ok^t8bQ(H+=k2mO6~=Oto7B#w#AWQZsnS_ab|+4w$RsekYzm! ze$ERb@wWmk!v9I+VUyWx?}Ol=ahaOD@G#6n$IDledGykj+Hjjfm!5(w_S1X)@h8@`}jMTKVRb(ZrkyS z#w-Y;qQ=a*K0dp5ZM^YgjGNDxVRy1U#Hzi@G2;iI$z$9EzrkFe*tw!)>AKKyzZGsL z2HmUh%ecOj*r+k;2eBfwb3G}EC2C_vJJnM^iMRS4@7X@Du(HzWJ<#Wrxu@@)g)ZPS zFD*a7+-tto58+34;s*b^aA*%WJ0FjV>A1I);XCl8Q_90_p73}y9bVVwNg8*(yX-H- zGA{I^5BMWuo=54!u9zoJna1o?+J(`EXU^?1sB!PO>Jsle|gRCY67U445~`Th9AheCZx!P5pTm8QVmj=orRX zwuP}ror7kLx#E|$BKeUL{stQ|CXFkVZ!pM;D;wB;RV?0oh;enu?G9l*Ky==0p0;y^ zO&t$fo0Hf_Vj%QW_Z#(|z8!*Xgy#O&$E-t^73(U8x0-npexgJ7rhkVwn|NWQ{7k+M znlFH6)p1p)y%U&8EK-YgbILE^Kj3{;J|xGSB3oWTZdkeEYvP`xh|kFrd!Fp!0-M+J zifPV|@x48@>2=_1r=Jt)TO)Ii}AFT$$L?}1m>8s3`Es^I4W5G}YdqL2#h2t22Z%~uq=ELV(ykDGFHs9fY}Rg}H8p{#e^mGN#FzrQrR6Pg>S-!_5R z?4YiQ{Bnd33x9wOH0C+m?@sWjPBz$3bv*gbrQsNNWd#(WVymo|tLQmzE)9RwAR8A{ zFVI*L&q7*;{%8F zG{?nWl>C+Pc6c=o|FJn>K0W7g`NjSQY}QcxOauOCDE?^k{whB)IswAq%}nwQQHlO< zu6sPn`K7R~XMH%-d^kex?fVA&EA^)2eSA_6@s0m@RPxqZKcQGP=XD|1E8`(v;;*b< zN^Obd1LJxs<2(+ZBmX2kPWV1+HyX`;)^1=!^RiL0Bg9!2ulyBp#uTj+%Es2--v%D~ zmDX7h;nSuNV@0oQ2M2WJh|3=tzZm^uJ_5{U-tBno{;Jusg7v~q;wF3&G-XUzwMbkc zd#ti?(0n^SRafC^0FUg-+fqM!vxjeGEZ{{eb|Si6Hj+MVqTHeU>%>QA)iI1ygSj>)Hi#RQCoDr#yC3F|1=DnG?39D7WI5;K z%R<%yL)KToT?A*=H0_jYc4@P2+G6GB3%r+ZCG!0>bTW}|?BNv6YnhK@7nScRDQ}OS zek~R}+592s<{0GCEv(%s`wiqFCCATFzNzP7?t^MO__h(JC?@|on$bmI8#$e~ZN zl`X&<(!M;*`}6RB%R{TTaUd znPkO5rhH^-3^FBIP#m`gdQ?ZxlDih#9?cmh-!0%DUeASK> z^Ihf#KS$0=)o-Tv<5C&heDMNv8@Bop{yLZooAw|YgRJdEelAl)S4!%O<|C%HmTxR7 z4-GBq=Qi_rR9DdW6I;ly{TTb>W50U%qhFfiNk?vBem0T0=m^(TM!Ap2vIEA)CVPqz zR^lIn=z1F`l&aX()^Y=I)Sfs@@mCu-y>W^?ACGU*J!{CaZ%y9g@omaY1BZH*W&>;w z*xt%m^wnrvoWdq{w7Hn){NeLV_Zg%78F{O@=~ztoo+kLIWS@aV_a z>;IZZvIpYVglX^zzWgJ6de?4zx*9%Bd;44S$;uIYy64{)n0b#ATd%p!%tNLo^XKyS zGPWzz9z-58wGsc~A|3c<70ATkFX3FQ4FDj(FX5o$8{usUMv-$E9&r4hox?*WB^cA?xDJ zL(B{B1I9dHNOqp7m!GwBSj^L@q?_}v$Afe8$^#$AG_19bw1e~+4DRx;w8nH#%w}D>f#g|d=OMM?~yH=%T;+K=+xQsH{iMCY#MN^HQq3pj17!%d6w>(Vv zyA=GjvKmdDl!@oUseL$_Z@8izeu+-z7Omo?_$YZ_obpn6)>pf=-g#-|V*0W>j2(YW zV5nbD<<`abGoK#}=Tj-1h33+cKSWQvf%9?T;2W!VQTOY#A?Mz|6?wcpU8}h6FFW#z zITaT&CQ&zaW+0D}%dBJ&ovF>IWovF>Uat8%_OCkF&dg$tYDxj~7}=c7v22ZTu8TES zl%Mik{4#U2)1c?A=Js{6Kj}OWA706UV@Qz9;ooZhen0+4{MQ)D#%cb%H{&Q@xu^NN z=EJv@8As++@NxOzxx3oD)!e;B@{`WpFCymBvt&_YsJZ*^p+mU8j8FRS=I&#dziRG2 zru_HM-Cxa+Mx^SK5?NuM(4z5zSEh`OU<@+eRiWb6Ti|`RaC10e z1O6avtTcs;4ddP{A0zoJqigU?K0br*lzi5iu&D+4*ZRlV*r;u@5BRNoUL$KR1?rm) z?DhJdxQ=+ft$ahQ9F}x>;T-Ho37Kh^OrIPbO*y+t`4utrw^2)3od)Q+DhHz1iFdcyV2ig_}f4%tvUXD%jdvcQ8@ux+TC^FVqMQ;{{zo0 z>HHeqY8AZ=*6syW^<_1D7~^(rlP~-g_aT2<_}j{#d}6qUeUaC)50d+P`1>7yvQ^u- ze*I)-QtU}k{`rr8*wO!)MW6oM=@)*cb3XkkoFvLWvT-B!8Ia8zH)80(`P(k}gYIWh7K{iY-MgB5 z7lVi#C_1r_H50$N!IZP?S9!tDkvB`*x%6q@6xJ+9^3Pf-d_A0){?#euRuAf`y00A4 z*Vbg$is4;ntUYLno|#tBQE&WejSlHGGTbj5r=~bmwr_f$Dc-yF=g7U4CFE#R3X8b9 zReRVTPoJlzvh@zG�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%0AY5tn7Omu{ZLm{olyFUrO#38B@k`EaMgD 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�I!C??*aas5coHM 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

C^*>s=Dfy26tT&FBaDoHp!wUYE^W~ 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 URBm-3bar^KFIvil$csyV0k8H{-T(jq diff --git a/tools/sdtools/打包命令.txt b/tools/sdtools/打包命令.txt new file mode 100644 index 0000000..a8282d3 --- /dev/null +++ b/tools/sdtools/打包命令.txt @@ -0,0 +1 @@ +sign_tool\windows\atb_signer.exe sign --v 2 --sec_ver 0 --dgst sha256 --rcp key=sign_tool\keys\TestRSA2048_ossl.pem --iib core=0 type=0x0 image=temp\sf.bin dlp=0x8 to=0x504000 entry=0x504000 --psn 0x10D --of temp\2025111601boot.bin \ No newline at end of file