]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
phy: fsl-imx8mq-usb: Clear the PCS_TX_SWING_FULL field before using it
authorStefano Radaelli <stefano.radaelli21@gmail.com>
Fri, 19 Dec 2025 16:09:12 +0000 (17:09 +0100)
committerVinod Koul <vkoul@kernel.org>
Tue, 23 Dec 2025 15:23:45 +0000 (20:53 +0530)
Clear the PCS_TX_SWING_FULL field mask before setting the new value
in PHY_CTRL5 register. Without clearing the mask first, the OR operation
could leave previously set bits, resulting in incorrect register
configuration.

Fixes: 63c85ad0cd81 ("phy: fsl-imx8mp-usb: add support for phy tuning")
Suggested-by: Leonid Segal <leonids@variscite.com>
Acked-by: Pierluigi Passaro <pierluigi.p@variscite.com>
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
Reviewed-by: Xu Yang <xu.yang_2@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Link: https://patch.msgid.link/20251219160912.561431-1-stefano.r@variscite.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/freescale/phy-fsl-imx8mq-usb.c

index 99d2bdd4bfc88786616fb81894b72479217bd631..91b3e62743d3a94a1f95dc48e2c394dcdce06c7f 100644 (file)
@@ -490,6 +490,7 @@ static void imx8m_phy_tune(struct imx8mq_usb_phy *imx_phy)
 
        if (imx_phy->pcs_tx_swing_full != PHY_TUNE_DEFAULT) {
                value = readl(imx_phy->base + PHY_CTRL5);
+               value &= ~PHY_CTRL5_PCS_TX_SWING_FULL_MASK;
                value |= FIELD_PREP(PHY_CTRL5_PCS_TX_SWING_FULL_MASK,
                                   imx_phy->pcs_tx_swing_full);
                writel(value, imx_phy->base + PHY_CTRL5);