[PATCH v1 1/2] net: dwc_eth_xgmac: Move DMA reset and pad calibration after PHY init
Jerome Forissier
jerome.forissier at arm.com
Wed Mar 18 09:36:18 CET 2026
On 12/03/2026 12:22, Boon Khai Ng wrote:
> - Move DMA software reset and pad calibration in xgmac_start() to occur
> after the PHY is initialized and connected.
> - This ensures the PHY is ready before performing these operations,
> which is necessary for proper recovery after reboot.
>
> This change fixes issues where the PHY did not recover from power-down
> state after a Linux reboot, for the board using Micrel KSZ90x1 PHY.
>
> Signed-off-by: Boon Khai Ng <boon.khai.ng at altera.com>
> ---
> drivers/net/dwc_eth_xgmac.c | 28 ++++++++++++++--------------
> 1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/net/dwc_eth_xgmac.c b/drivers/net/dwc_eth_xgmac.c
> index 458b87af7a2..2ab5ec5f0d9 100644
> --- a/drivers/net/dwc_eth_xgmac.c
> +++ b/drivers/net/dwc_eth_xgmac.c
> @@ -497,20 +497,6 @@ static int xgmac_start(struct udevice *dev)
>
> xgmac->reg_access_ok = true;
>
> - ret = wait_for_bit_le32(&xgmac->dma_regs->mode,
> - XGMAC_DMA_MODE_SWR, false,
> - xgmac->config->swr_wait, false);
> - if (ret) {
> - pr_err("%s XGMAC_DMA_MODE_SWR stuck: %d\n", dev->name, ret);
> - goto err_stop_resets;
> - }
> -
> - ret = xgmac->config->ops->xgmac_calibrate_pads(dev);
> - if (ret < 0) {
> - pr_err("%s xgmac_calibrate_pads() failed: %d\n", dev->name, ret);
> - goto err_stop_resets;
> - }
> -
> /*
> * if PHY was already connected and configured,
> * don't need to reconnect/reconfigure again
> @@ -559,6 +545,20 @@ static int xgmac_start(struct udevice *dev)
> goto err_shutdown_phy;
> }
>
> + ret = wait_for_bit_le32(&xgmac->dma_regs->mode,
> + XGMAC_DMA_MODE_SWR, false,
> + xgmac->config->swr_wait, false);
> + if (ret) {
> + pr_err("%s XGMAC_DMA_MODE_SWR stuck: %d\n", dev->name, ret);
> + goto err_stop_resets;
> + }
> +
> + ret = xgmac->config->ops->xgmac_calibrate_pads(dev);
> + if (ret < 0) {
> + pr_err("%s xgmac_calibrate_pads() failed: %d\n", dev->name, ret);
> + goto err_stop_resets;
> + }
> +
> /* Configure MTL */
>
> /* Enable Store and Forward mode for TX */
Queued for net-next, thanks!
--
Jerome
More information about the U-Boot
mailing list