When we shut down the PHY, we need to power down all PHY's functions
as well as disable wakeup, it is the opposite operation we do at .init.

Signed-off-by: Peter Chen <[email protected]>
---
 drivers/usb/phy/phy-mxs-usb.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/usb/phy/phy-mxs-usb.c b/drivers/usb/phy/phy-mxs-usb.c
index b9589f6..eaf94b0 100644
--- a/drivers/usb/phy/phy-mxs-usb.c
+++ b/drivers/usb/phy/phy-mxs-usb.c
@@ -293,6 +293,17 @@ static int mxs_phy_init(struct usb_phy *phy)
 static void mxs_phy_shutdown(struct usb_phy *phy)
 {
        struct mxs_phy *mxs_phy = to_mxs_phy(phy);
+       u32 value = BM_USBPHY_CTRL_ENVBUSCHG_WKUP |
+                       BM_USBPHY_CTRL_ENDPDMCHG_WKUP |
+                       BM_USBPHY_CTRL_ENIDCHG_WKUP |
+                       BM_USBPHY_CTRL_ENAUTOSET_USBCLKS |
+                       BM_USBPHY_CTRL_ENAUTOCLR_USBCLKGATE |
+                       BM_USBPHY_CTRL_ENAUTOCLR_PHY_PWD |
+                       BM_USBPHY_CTRL_ENAUTOCLR_CLKGATE |
+                       BM_USBPHY_CTRL_ENAUTO_PWRON_PLL;
+
+       writel(value, phy->io_priv + HW_USBPHY_CTRL_CLR);
+       writel(0xffffffff, phy->io_priv + HW_USBPHY_PWD);
 
        writel(BM_USBPHY_CTRL_CLKGATE,
               phy->io_priv + HW_USBPHY_CTRL_SET);
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to