mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 19:47:08 +02:00
usb: dwc3: dwc3-msm-core: Bail out early when there is no change in role
If the same role as the current role is requested, bail out early. Change-Id: I42dc3f6759800926a4a98254a2ff30f932394704 Signed-off-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
This commit is contained in:
parent
92a1df0fef
commit
ca9fb9573e
|
|
@ -4741,7 +4741,7 @@ static bool dwc3_msm_role_allowed(struct dwc3_msm *mdwc, enum usb_role role)
|
|||
{
|
||||
dev_dbg(mdwc->dev, "%s: dr_mode=%s role_requested=%s\n",
|
||||
__func__, usb_dr_modes[mdwc->dr_mode],
|
||||
usb_role_string(role));
|
||||
dwc3_msm_usb_role_string(role));
|
||||
|
||||
if (role == USB_ROLE_HOST && mdwc->dr_mode == USB_DR_MODE_PERIPHERAL)
|
||||
return false;
|
||||
|
|
@ -4779,6 +4779,20 @@ static int dwc3_msm_usb_set_role(struct usb_role_switch *sw, enum usb_role role)
|
|||
mutex_lock(&mdwc->role_switch_mutex);
|
||||
cur_role = dwc3_msm_usb_get_role(sw);
|
||||
|
||||
dbg_log_string("cur_role:%s new_role:%s\n", dwc3_msm_usb_role_string(cur_role),
|
||||
dwc3_msm_usb_role_string(role));
|
||||
|
||||
/*
|
||||
* For boot up without USB cable connected case, don't check
|
||||
* previous role value to allow resetting USB controller and
|
||||
* PHYs.
|
||||
*/
|
||||
if (mdwc->drd_state != DRD_STATE_UNDEFINED && cur_role == role) {
|
||||
dbg_log_string("no USB role change");
|
||||
mutex_unlock(&mdwc->role_switch_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (role) {
|
||||
case USB_ROLE_HOST:
|
||||
mdwc->vbus_active = false;
|
||||
|
|
@ -4797,19 +4811,6 @@ static int dwc3_msm_usb_set_role(struct usb_role_switch *sw, enum usb_role role)
|
|||
}
|
||||
mutex_unlock(&mdwc->role_switch_mutex);
|
||||
|
||||
dbg_log_string("cur_role:%s new_role:%s\n", dwc3_msm_usb_role_string(cur_role),
|
||||
dwc3_msm_usb_role_string(role));
|
||||
|
||||
/*
|
||||
* For boot up without USB cable connected case, don't check
|
||||
* previous role value to allow resetting USB controller and
|
||||
* PHYs.
|
||||
*/
|
||||
if (mdwc->drd_state != DRD_STATE_UNDEFINED && cur_role == role) {
|
||||
dbg_log_string("no USB role change");
|
||||
return 0;
|
||||
}
|
||||
|
||||
dwc3_ext_event_notify(mdwc);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user