Driver currently notifies only USB3 PHY for mode change.
Extend this to USB3 PHY so that driver based on the mode
can release system resources - clocks, regulators etc.
and can even turn off PHY during runtime suspend.

Signed-off-by: Manu Gautam <mgau...@codeaurora.org>

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 326b302..1f6c51e 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -156,9 +156,8 @@ static void __dwc3_set_mode(struct work_struct *work)
                } else {
                        if (dwc->usb2_phy)
                                otg_set_vbus(dwc->usb2_phy->otg, true);
-                       if (dwc->usb2_generic_phy)
-                               phy_set_mode(dwc->usb2_generic_phy, 
PHY_MODE_USB_HOST);
-
+                       phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST);
+                       phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST);
                }
                break;
        case DWC3_GCTL_PRTCAP_DEVICE:
@@ -166,8 +165,8 @@ static void __dwc3_set_mode(struct work_struct *work)
 
                if (dwc->usb2_phy)
                        otg_set_vbus(dwc->usb2_phy->otg, false);
-               if (dwc->usb2_generic_phy)
-                       phy_set_mode(dwc->usb2_generic_phy, 
PHY_MODE_USB_DEVICE);
+               phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_DEVICE);
+               phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_DEVICE);
 
                ret = dwc3_gadget_init(dwc);
                if (ret)
@@ -931,8 +930,8 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
 
                if (dwc->usb2_phy)
                        otg_set_vbus(dwc->usb2_phy->otg, false);
-               if (dwc->usb2_generic_phy)
-                       phy_set_mode(dwc->usb2_generic_phy, 
PHY_MODE_USB_DEVICE);
+               phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_DEVICE);
+               phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_DEVICE);
 
                ret = dwc3_gadget_init(dwc);
                if (ret) {
@@ -946,8 +945,8 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
 
                if (dwc->usb2_phy)
                        otg_set_vbus(dwc->usb2_phy->otg, true);
-               if (dwc->usb2_generic_phy)
-                       phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST);
+               phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST);
+               phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST);
 
                ret = dwc3_host_init(dwc);
                if (ret) {
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,\na 
Linux Foundation Collaborative Project

Reply via email to