]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: dwc_eth_qos: Add support for platform specific reset
authorErik Schumacher <erik.schumacher@iris-sensing.com>
Mon, 28 Oct 2024 15:29:42 +0000 (15:29 +0000)
committerFabio Estevam <festevam@gmail.com>
Tue, 29 Oct 2024 19:25:53 +0000 (16:25 -0300)
This patch adds support for optional platform specific reset logic in
the dwc_eth_qos driver. This new function 'eqos_fix_soc_reset' is called
after the EQOS_DMA_MODE_SWR is set and before the driver waits for this
bit to clear.

Signed-off-by: Erik Schumacher <erik.schumacher@iris-sensing.com>
drivers/net/dwc_eth_qos.c
drivers/net/dwc_eth_qos.h

index 3415c418a93576396f2090849868a66c75b5747f..ab51a98e9df7f8e1e97a5d3534eeac4c8f86aeae 100644 (file)
@@ -712,6 +712,9 @@ static int eqos_start(struct udevice *dev)
         */
        setbits_le32(&eqos->dma_regs->mode, EQOS_DMA_MODE_SWR);
 
+       if (eqos->config->ops->eqos_fix_soc_reset)
+               eqos->config->ops->eqos_fix_soc_reset(dev);
+
        ret = wait_for_bit_le32(&eqos->dma_regs->mode,
                                EQOS_DMA_MODE_SWR, false,
                                eqos->config->swr_wait, false);
index ce57e22a81f14c46461faa1994a08ed74c940138..123f98d5d5324eb883a3b4b58056c4b350f90ae5 100644 (file)
@@ -248,6 +248,7 @@ struct eqos_ops {
        int (*eqos_set_tx_clk_speed)(struct udevice *dev);
        int (*eqos_get_enetaddr)(struct udevice *dev);
        ulong (*eqos_get_tick_clk_rate)(struct udevice *dev);
+       void (*eqos_fix_soc_reset)(struct udevice *dev);
 };
 
 struct eqos_priv {