usb: gadget: tegra-xudc: Use phy_set_mode() to set/unset device mode
authorNagarjuna Kristam <nkristam@nvidia.com>
Mon, 10 Feb 2020 08:11:37 +0000 (13:41 +0530)
committerThierry Reding <treding@nvidia.com>
Thu, 19 Mar 2020 13:18:57 +0000 (14:18 +0100)
When device mode is set/unset, VBUS override activity is done via
exported functions from padctl driver. Use phy_set_mode() instead.

Signed-off-by: Nagarjuna Kristam <nkristam@nvidia.com>
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/usb/gadget/udc/tegra-xudc.c

index 1ee6138..7faabfc 100644 (file)
@@ -612,7 +612,7 @@ static void tegra_xudc_device_mode_on(struct tegra_xudc *xudc)
 
        dev_dbg(xudc->dev, "device mode on\n");
 
-       tegra_xusb_padctl_set_vbus_override(xudc->padctl, true);
+       phy_set_mode_ext(xudc->utmi_phy, PHY_MODE_USB_OTG, USB_ROLE_DEVICE);
 }
 
 static void tegra_xudc_device_mode_off(struct tegra_xudc *xudc)
@@ -627,7 +627,7 @@ static void tegra_xudc_device_mode_off(struct tegra_xudc *xudc)
 
        reinit_completion(&xudc->disconnect_complete);
 
-       tegra_xusb_padctl_set_vbus_override(xudc->padctl, false);
+       phy_set_mode_ext(xudc->utmi_phy, PHY_MODE_USB_OTG, USB_ROLE_NONE);
 
        pls = (xudc_readl(xudc, PORTSC) & PORTSC_PLS_MASK) >>
                PORTSC_PLS_SHIFT;
@@ -714,9 +714,11 @@ static void tegra_xudc_plc_reset_work(struct work_struct *work)
 
                if (pls == PORTSC_PLS_INACTIVE) {
                        dev_info(xudc->dev, "PLS = Inactive. Toggle VBUS\n");
-                       tegra_xusb_padctl_set_vbus_override(xudc->padctl,
-                                                             false);
-                       tegra_xusb_padctl_set_vbus_override(xudc->padctl, true);
+                       phy_set_mode_ext(xudc->utmi_phy, PHY_MODE_USB_OTG,
+                                        USB_ROLE_NONE);
+                       phy_set_mode_ext(xudc->utmi_phy, PHY_MODE_USB_OTG,
+                                        USB_ROLE_DEVICE);
+
                        xudc->wait_csc = false;
                }
        }