]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
phy: renesas: rcar-gen3-usb2: Assert PLL reset on PHY power off
authorClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Wed, 7 May 2025 12:50:31 +0000 (15:50 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:12:17 +0000 (11:12 +0200)
[ Upstream commit 9ce71e85b29eb63e48e294479742e670513f03a0 ]

Assert PLL reset on PHY power off. This saves power.

Fixes: f3b5a8d9b50d ("phy: rcar-gen3-usb2: Add R-Car Gen3 USB2 PHY driver")
Cc: stable@vger.kernel.org
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Link: https://lore.kernel.org/r/20250507125032.565017-5-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/phy/renesas/phy-rcar-gen3-usb2.c

index 7d18bc549f17eb90a6ee036e448f07f665fe3c6b..9fdf17e0848a28fae7adaa44ecef42137883efe0 100644 (file)
@@ -540,9 +540,17 @@ static int rcar_gen3_phy_usb2_power_off(struct phy *p)
        struct rcar_gen3_chan *channel = rphy->ch;
        int ret = 0;
 
-       scoped_guard(spinlock_irqsave, &channel->lock)
+       scoped_guard(spinlock_irqsave, &channel->lock) {
                rphy->powered = false;
 
+               if (rcar_gen3_are_all_rphys_power_off(channel)) {
+                       u32 val = readl(channel->base + USB2_USBCTR);
+
+                       val |= USB2_USBCTR_PLL_RST;
+                       writel(val, channel->base + USB2_USBCTR);
+               }
+       }
+
        if (channel->vbus)
                ret = regulator_disable(channel->vbus);