phy: usb: Disable phy auto-suspend
authorJustin Chen <justinpopo6@gmail.com>
Wed, 5 Oct 2022 21:30:16 +0000 (14:30 -0700)
committerVinod Koul <vkoul@kernel.org>
Mon, 7 Nov 2022 04:50:24 +0000 (10:20 +0530)
The BDC block requires the PLL lock in order to grab the PLL clock.
The phy auto-suspend feature turns off the phy when nothing is attached
leading to the PLL to not lock. This leads the BDC block to grab the AUX
clock instead of the PLL clock. This is not ideal, so lets turn this
feature off.

Signed-off-by: Justin Chen <justinpopo6@gmail.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/1665005418-15807-5-git-send-email-justinpopo6@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c

index 26e9585..6a4d478 100644 (file)
@@ -62,6 +62,7 @@
 
 /* Register definitions for the USB_PHY block in 7211b0 */
 #define USB_PHY_PLL_CTL                        0x00
+#define   USB_PHY_PLL_CTL_PLL_SUSPEND_MASK             BIT(27)
 #define   USB_PHY_PLL_CTL_PLL_RESETB_MASK              BIT(30)
 #define USB_PHY_PLL_LDO_CTL            0x08
 #define   USB_PHY_PLL_LDO_CTL_AFE_BG_PWRDWNB_MASK      BIT(0)
@@ -259,6 +260,11 @@ static void usb_init_common_7211b0(struct brcm_usb_init_params *params)
                brcm_usb_writel(reg, usb_phy + USB_PHY_UTMI_CTL_1);
        }
 
+       /* Disable PLL auto suspend */
+       reg = brcm_usb_readl(usb_phy + USB_PHY_PLL_CTL);
+       reg |= USB_PHY_PLL_CTL_PLL_SUSPEND_MASK;
+       brcm_usb_writel(reg, usb_phy + USB_PHY_PLL_CTL);
+
        /* Init the PHY */
        reg = USB_PHY_PLL_LDO_CTL_AFE_CORERDY_MASK |
                USB_PHY_PLL_LDO_CTL_AFE_LDO_PWRDWNB_MASK |