|
|
@@ -550,6 +550,7 @@ static void sun4i_usb_phy0_id_vbus_det_scan(struct work_struct *work)
|
|
|
struct sun4i_usb_phy_data *data =
|
|
|
container_of(work, struct sun4i_usb_phy_data, detect.work);
|
|
|
struct phy *phy0 = data->phys[0].phy;
|
|
|
+ struct sun4i_usb_phy *phy = phy_get_drvdata(phy0);
|
|
|
bool force_session_end, id_notify = false, vbus_notify = false;
|
|
|
int id_det, vbus_det;
|
|
|
|
|
|
@@ -606,6 +607,9 @@ static void sun4i_usb_phy0_id_vbus_det_scan(struct work_struct *work)
|
|
|
mutex_unlock(&phy0->mutex);
|
|
|
}
|
|
|
|
|
|
+ /* Enable PHY0 passby for host mode only. */
|
|
|
+ sun4i_usb_phy_passby(phy, !id_det);
|
|
|
+
|
|
|
/* Re-route PHY0 if necessary */
|
|
|
if (data->cfg->phy0_dual_route)
|
|
|
sun4i_usb_phy0_reroute(data, id_det);
|