aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm4908/patches-5.4/084-v5.6-0002-phy-usb-Get-all-drivers-that-use-USB-clks-using-corr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm4908/patches-5.4/084-v5.6-0002-phy-usb-Get-all-drivers-that-use-USB-clks-using-corr.patch')
-rw-r--r--target/linux/bcm4908/patches-5.4/084-v5.6-0002-phy-usb-Get-all-drivers-that-use-USB-clks-using-corr.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/target/linux/bcm4908/patches-5.4/084-v5.6-0002-phy-usb-Get-all-drivers-that-use-USB-clks-using-corr.patch b/target/linux/bcm4908/patches-5.4/084-v5.6-0002-phy-usb-Get-all-drivers-that-use-USB-clks-using-corr.patch
new file mode 100644
index 0000000000..e269f80cf4
--- /dev/null
+++ b/target/linux/bcm4908/patches-5.4/084-v5.6-0002-phy-usb-Get-all-drivers-that-use-USB-clks-using-corr.patch
@@ -0,0 +1,102 @@
+From ece5ffd9e15e9c8471e58b581a098032a679d34e Mon Sep 17 00:00:00 2001
+From: Al Cooper <alcooperx@gmail.com>
+Date: Fri, 3 Jan 2020 13:18:00 -0500
+Subject: [PATCH] phy: usb: Get all drivers that use USB clks using correct
+ enable/disable
+
+The BRCM USB Phy, ohci, ehci and xhci drivers all use the USB clocks
+but not all drivers use the clk_prepare_enable/clk_disable_unprepare
+versions to enable/disable the clocks. This change gets all drivers
+using the prepare version.
+
+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.c | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+--- a/drivers/phy/broadcom/phy-brcm-usb.c
++++ b/drivers/phy/broadcom/phy-brcm-usb.c
+@@ -74,8 +74,8 @@ static int brcm_usb_phy_init(struct phy
+ */
+ mutex_lock(&priv->mutex);
+ if (priv->init_count++ == 0) {
+- clk_enable(priv->usb_20_clk);
+- clk_enable(priv->usb_30_clk);
++ clk_prepare_enable(priv->usb_20_clk);
++ clk_prepare_enable(priv->usb_30_clk);
+ brcm_usb_init_common(&priv->ini);
+ }
+ mutex_unlock(&priv->mutex);
+@@ -106,8 +106,8 @@ static int brcm_usb_phy_exit(struct phy
+ mutex_lock(&priv->mutex);
+ if (--priv->init_count == 0) {
+ brcm_usb_uninit_common(&priv->ini);
+- clk_disable(priv->usb_20_clk);
+- clk_disable(priv->usb_30_clk);
++ clk_disable_unprepare(priv->usb_20_clk);
++ clk_disable_unprepare(priv->usb_30_clk);
+ }
+ mutex_unlock(&priv->mutex);
+ phy->inited = false;
+@@ -360,8 +360,8 @@ static int brcm_usb_phy_probe(struct pla
+ if (priv->has_eohci)
+ brcm_usb_uninit_eohci(&priv->ini);
+ brcm_usb_uninit_common(&priv->ini);
+- clk_disable(priv->usb_20_clk);
+- clk_disable(priv->usb_30_clk);
++ clk_disable_unprepare(priv->usb_20_clk);
++ clk_disable_unprepare(priv->usb_30_clk);
+
+ phy_provider = devm_of_phy_provider_register(dev, brcm_usb_phy_xlate);
+
+@@ -381,8 +381,8 @@ static int brcm_usb_phy_suspend(struct d
+ struct brcm_usb_phy_data *priv = dev_get_drvdata(dev);
+
+ if (priv->init_count) {
+- clk_disable(priv->usb_20_clk);
+- clk_disable(priv->usb_30_clk);
++ clk_disable_unprepare(priv->usb_20_clk);
++ clk_disable_unprepare(priv->usb_30_clk);
+ }
+ return 0;
+ }
+@@ -391,8 +391,8 @@ static int brcm_usb_phy_resume(struct de
+ {
+ struct brcm_usb_phy_data *priv = dev_get_drvdata(dev);
+
+- clk_enable(priv->usb_20_clk);
+- clk_enable(priv->usb_30_clk);
++ clk_prepare_enable(priv->usb_20_clk);
++ clk_prepare_enable(priv->usb_30_clk);
+ brcm_usb_init_ipp(&priv->ini);
+
+ /*
+@@ -405,13 +405,13 @@ static int brcm_usb_phy_resume(struct de
+ brcm_usb_init_eohci(&priv->ini);
+ } else if (priv->has_eohci) {
+ brcm_usb_uninit_eohci(&priv->ini);
+- clk_disable(priv->usb_20_clk);
++ clk_disable_unprepare(priv->usb_20_clk);
+ }
+ if (priv->phys[BRCM_USB_PHY_3_0].inited) {
+ brcm_usb_init_xhci(&priv->ini);
+ } else if (priv->has_xhci) {
+ brcm_usb_uninit_xhci(&priv->ini);
+- clk_disable(priv->usb_30_clk);
++ clk_disable_unprepare(priv->usb_30_clk);
+ }
+ } else {
+ if (priv->has_xhci)
+@@ -419,8 +419,8 @@ static int brcm_usb_phy_resume(struct de
+ if (priv->has_eohci)
+ brcm_usb_uninit_eohci(&priv->ini);
+ brcm_usb_uninit_common(&priv->ini);
+- clk_disable(priv->usb_20_clk);
+- clk_disable(priv->usb_30_clk);
++ clk_disable_unprepare(priv->usb_20_clk);
++ clk_disable_unprepare(priv->usb_30_clk);
+ }
+
+ return 0;