diff options
Diffstat (limited to 'target/linux/bcm4908/patches-5.4/084-v5.6-0003-phy-usb-Put-USB-phys-into-IDDQ-on-suspend-to-save-po.patch')
-rw-r--r-- | target/linux/bcm4908/patches-5.4/084-v5.6-0003-phy-usb-Put-USB-phys-into-IDDQ-on-suspend-to-save-po.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/target/linux/bcm4908/patches-5.4/084-v5.6-0003-phy-usb-Put-USB-phys-into-IDDQ-on-suspend-to-save-po.patch b/target/linux/bcm4908/patches-5.4/084-v5.6-0003-phy-usb-Put-USB-phys-into-IDDQ-on-suspend-to-save-po.patch new file mode 100644 index 0000000000..356e305460 --- /dev/null +++ b/target/linux/bcm4908/patches-5.4/084-v5.6-0003-phy-usb-Put-USB-phys-into-IDDQ-on-suspend-to-save-po.patch @@ -0,0 +1,51 @@ +From 6597af4e4835ec0709638d48f73c11b5c624790f Mon Sep 17 00:00:00 2001 +From: Al Cooper <alcooperx@gmail.com> +Date: Fri, 3 Jan 2020 13:18:01 -0500 +Subject: [PATCH] phy: usb: Put USB phys into IDDQ on suspend to save power in + S2 mode + +Currently the Phy driver will put the USB phys into the max +power saving mode (IDDQ) when there is no corresponding XHCI, EHCI +or OHCI client (through rmmod, unbind or if the driver is not +builtin). This change will also put the Phys into IDDQ mode +on suspend so that S2 will get the additional power savings. + +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.c | 2 -- + drivers/phy/broadcom/phy-brcm-usb.c | 11 +++++++++-- + 2 files changed, 9 insertions(+), 4 deletions(-) + +--- a/drivers/phy/broadcom/phy-brcm-usb-init.c ++++ b/drivers/phy/broadcom/phy-brcm-usb-init.c +@@ -1002,8 +1002,6 @@ void brcm_usb_uninit_common(struct brcm_ + + void brcm_usb_uninit_eohci(struct brcm_usb_init_params *params) + { +- if (USB_CTRL_MASK_FAMILY(params, USB_PM, USB20_HC_RESETB)) +- USB_CTRL_UNSET_FAMILY(params, USB_PM, USB20_HC_RESETB); + } + + void brcm_usb_uninit_xhci(struct brcm_usb_init_params *params) +--- a/drivers/phy/broadcom/phy-brcm-usb.c ++++ b/drivers/phy/broadcom/phy-brcm-usb.c +@@ -381,8 +381,15 @@ static int brcm_usb_phy_suspend(struct d + struct brcm_usb_phy_data *priv = dev_get_drvdata(dev); + + if (priv->init_count) { +- clk_disable_unprepare(priv->usb_20_clk); +- clk_disable_unprepare(priv->usb_30_clk); ++ if (priv->phys[BRCM_USB_PHY_3_0].inited) ++ brcm_usb_uninit_xhci(&priv->ini); ++ if (priv->phys[BRCM_USB_PHY_2_0].inited) ++ brcm_usb_uninit_eohci(&priv->ini); ++ brcm_usb_uninit_common(&priv->ini); ++ if (priv->phys[BRCM_USB_PHY_3_0].inited) ++ clk_disable_unprepare(priv->usb_30_clk); ++ if (priv->phys[BRCM_USB_PHY_2_0].inited) ++ clk_disable_unprepare(priv->usb_20_clk); + } + return 0; + } |