dwc3-msm: Move override usb speed functionality outside edev check

Currently usb speed override functionality doesn't work as expected
when usb role switch based notification is used. Hence move usb speed
override functionality out side edev check within dwc3_resume_work()
API. Also update maximum_speed as max hw supported speed out side
edev check.

Change-Id: I69b066721490277b77333d2caf820b6c87703501
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
This commit is contained in:
Mayank Rana 2020-05-27 16:18:04 -07:00
commit a05993824c

View file

@ -3238,26 +3238,15 @@ static void dwc3_resume_work(struct work_struct *w)
goto skip_update;
}
dwc->maximum_speed = dwc->max_hw_supp_speed;
/* Check speed and Type-C polarity values in order to configure PHY */
if (edev && extcon_get_state(edev, extcon_id)) {
dwc->maximum_speed = dwc->max_hw_supp_speed;
ret = extcon_get_property(edev, extcon_id,
EXTCON_PROP_USB_SS, &val);
if (!ret && val.intval == 0)
dwc->maximum_speed = USB_SPEED_HIGH;
if (mdwc->override_usb_speed &&
mdwc->override_usb_speed <= dwc->maximum_speed) {
dwc->maximum_speed = mdwc->override_usb_speed;
dwc->gadget.max_speed = dwc->maximum_speed;
dbg_event(0xFF, "override_speed",
mdwc->override_usb_speed);
}
dbg_event(0xFF, "speed", dwc->maximum_speed);
ret = extcon_get_property(edev, extcon_id,
EXTCON_PROP_USB_TYPEC_POLARITY, &val);
if (ret)
@ -3270,6 +3259,17 @@ static void dwc3_resume_work(struct work_struct *w)
}
skip_update:
dbg_log_string("max_speed:%d hw_supp_speed:%d override_speed:%d",
dwc->maximum_speed, dwc->max_hw_supp_speed,
mdwc->override_usb_speed);
if (mdwc->override_usb_speed &&
mdwc->override_usb_speed <= dwc->maximum_speed) {
dwc->maximum_speed = mdwc->override_usb_speed;
dwc->gadget.max_speed = dwc->maximum_speed;
}
dbg_event(0xFF, "speed", dwc->maximum_speed);
/*
* Skip scheduling sm work if no work is pending. When boot-up
* with USB cable connected, usb state m/c is skipped to avoid