|
@@ -1596,8 +1596,11 @@ static int ci_udc_pullup(struct usb_gadget *_gadget, int is_on)
|
|
{
|
|
{
|
|
struct ci_hdrc *ci = container_of(_gadget, struct ci_hdrc, gadget);
|
|
struct ci_hdrc *ci = container_of(_gadget, struct ci_hdrc, gadget);
|
|
|
|
|
|
- /* Data+ pullup controlled by OTG state machine in OTG fsm mode */
|
|
|
|
- if (ci_otg_is_fsm_mode(ci))
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Data+ pullup controlled by OTG state machine in OTG fsm mode;
|
|
|
|
+ * and don't touch Data+ in host mode for dual role config.
|
|
|
|
+ */
|
|
|
|
+ if (ci_otg_is_fsm_mode(ci) || ci->role == CI_ROLE_HOST)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
pm_runtime_get_sync(&ci->gadget.dev);
|
|
pm_runtime_get_sync(&ci->gadget.dev);
|