]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Jan 2026 10:18:40 +0000 (11:18 +0100)
[ Upstream commit 8becf9179a4b45104a1701010ed666b55bf4b3a6 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/phy/freescale/phy-fsl-imx8mq-usb.c

index f914f016b3d2ce17ef15b3d8a05fbbab24dcc94d..043063699e06444f4f9a25db5a4739eaceb27bc7 100644 (file)
@@ -206,6 +206,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);