aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch')
-rw-r--r--target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch b/target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch
new file mode 100644
index 0000000000..48f829f799
--- /dev/null
+++ b/target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch
@@ -0,0 +1,44 @@
+From fc430aea02068150d053ef24bc424db3dd1357d4 Mon Sep 17 00:00:00 2001
+From: Al Cooper <alcooperx@gmail.com>
+Date: Fri, 3 Jan 2020 13:18:08 -0500
+Subject: [PATCH] phy: usb: PHY's MDIO registers not accessible without device
+ installed
+
+When there is no device connected and FSM is enabled, the XHCI puts
+the PHY into suspend mode. When the PHY is put into suspend mode
+the USB LDO powers down the PHY. This causes the MDIO to be
+inaccessible and its registers reset to default. The fix is to
+disable FSM.
+
+Signed-off-by: Al Cooper <alcooperx@gmail.com>
+Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
+Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
+---
+ drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
++++ b/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
+@@ -56,6 +56,7 @@
+ #define USB_PHY_PLL_LDO_CTL 0x08
+ #define USB_PHY_PLL_LDO_CTL_AFE_CORERDY_MASK 0x00000004
+ #define USB_PHY_UTMI_CTL_1 0x04
++#define USB_PHY_UTMI_CTL_1_POWER_UP_FSM_EN_MASK 0x00000800
+ #define USB_PHY_UTMI_CTL_1_PHY_MODE_MASK 0x0000000c
+ #define USB_PHY_UTMI_CTL_1_PHY_MODE_SHIFT 2
+ #define USB_PHY_STATUS 0x20
+@@ -229,6 +230,14 @@ static void usb_init_common_7211b0(struc
+
+ usb_init_common(params);
+
++ /*
++ * Disable FSM, otherwise the PHY will auto suspend when no
++ * device is connected and will be reset on resume.
++ */
++ reg = brcm_usb_readl(usb_phy + USB_PHY_UTMI_CTL_1);
++ reg &= ~USB_PHY_UTMI_CTL_1_POWER_UP_FSM_EN_MASK;
++ brcm_usb_writel(reg, usb_phy + USB_PHY_UTMI_CTL_1);
++
+ usb2_eye_fix_7211b0(params);
+ }
+