ipq40xx: 5.15: fix ar40xx driver
authorNick Hainke <vincent@systemli.org>
Sun, 1 May 2022 19:06:52 +0000 (21:06 +0200)
committerSungbo Eo <mans0n@gorani.run>
Thu, 5 May 2022 00:19:00 +0000 (09:19 +0900)
Also apply commit ab7e53e5cce7 ("ipq40xx: 5.10: fix ar40xx driver") to
5.15 driver.

The commit fixes the data corruption on TX packets. Packets are
transmitted, but their contents are replaced with zeros. This error is
caused by the lack of guard (50 ms) intervals between calibration phases.
This error is treated by adding mdelay(50) to the calibration function
code. In the original qca-ssda code, these mdelays were existing, but in
the ar41xx.c they are gone.

Fixes: 87318eb17936 ("ipq40xx: 5:15: copy config and patch from 5.10")
Signed-off-by: Nick Hainke <vincent@systemli.org>
target/linux/ipq40xx/files-5.15/drivers/net/mdio/ar40xx.c

index f7ce42b9ff0ae12cf1bccf2952dfc3ecbb5cbd17..d5ef7af15199ab345903ebcbb73dd5e6a59df88e 100644 (file)
@@ -936,6 +936,7 @@ ar40xx_malibu_psgmii_ess_reset(struct ar40xx_priv *priv)
                  */
                mdelay(2);
        }
+       mdelay(50);
 
        /*check malibu psgmii calibration done end..*/
 
@@ -954,6 +955,7 @@ ar40xx_malibu_psgmii_ess_reset(struct ar40xx_priv *priv)
                /* Polling interval to check PSGMII PLL in ESS is ready */
                mdelay(2);
        }
+       mdelay(50);
 
        /* check dakota psgmii calibration done end..*/
 
@@ -961,6 +963,7 @@ ar40xx_malibu_psgmii_ess_reset(struct ar40xx_priv *priv)
        mdiobus_write(bus, 5, 0x1a, 0x3230);
        /* release phy psgmii RX 20bit */
        mdiobus_write(bus, 5, 0x0, 0x005f);
+       mdelay(200);
 }
 
 static void