lkml.org 
[lkml]   [2019]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/13] phy: usb: Put USB phys into IDDQ on suspend to save power in S2 mode
    Date
    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>
    ---
    drivers/phy/broadcom/phy-brcm-usb-init.c | 2 --
    drivers/phy/broadcom/phy-brcm-usb.c | 11 +++++++++--
    2 files changed, 9 insertions(+), 4 deletions(-)

    diff --git a/drivers/phy/broadcom/phy-brcm-usb-init.c b/drivers/phy/broadcom/phy-brcm-usb-init.c
    index 56d9b314a8d0..0e6b921072be 100644
    --- 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_usb_init_params *params)

    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)
    diff --git a/drivers/phy/broadcom/phy-brcm-usb.c b/drivers/phy/broadcom/phy-brcm-usb.c
    index 217e3702ef4e..634afc803778 100644
    --- 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 device *dev)
    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;
    }
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-11-07 15:15    [W:4.099 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site