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:
authorRafał Miłecki <rafal@milecki.pl>2021-01-14 12:13:49 +0100
committerRafał Miłecki <rafal@milecki.pl>2021-01-14 12:34:20 +0100
commit6c90999e2e0dee6e5e0322b89e8e6fb6f76aecc9 (patch)
treebf909eecacb6c901e37b8969f1b79c61e16a0b54 /target/linux/bcm4908/patches-5.4/084-v5.6-0010-phy-usb-PHY-s-MDIO-registers-not-accessible-without-.patch
parentfa02225ee656c18b084988246a0ad83fb202c374 (diff)
downloadupstream-6c90999e2e0dee6e5e0322b89e8e6fb6f76aecc9.tar.gz
upstream-6c90999e2e0dee6e5e0322b89e8e6fb6f76aecc9.tar.bz2
upstream-6c90999e2e0dee6e5e0322b89e8e6fb6f76aecc9.zip
bcm4908: backport brcmstb USB PHY driver changes
This includes BCM4908 support Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
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);
+ }
+