|
@@ -406,8 +406,11 @@ static inline u32 hw_test_and_write(struct ci_hdrc *ci, enum ci_hw_regs reg,
|
|
|
static inline bool ci_otg_is_fsm_mode(struct ci_hdrc *ci)
|
|
|
{
|
|
|
#ifdef CONFIG_USB_OTG_FSM
|
|
|
+ struct usb_otg_caps *otg_caps = &ci->platdata->ci_otg_caps;
|
|
|
+
|
|
|
return ci->is_otg && ci->roles[CI_ROLE_HOST] &&
|
|
|
- ci->roles[CI_ROLE_GADGET];
|
|
|
+ ci->roles[CI_ROLE_GADGET] && (otg_caps->srp_support ||
|
|
|
+ otg_caps->hnp_support || otg_caps->adp_support);
|
|
|
#else
|
|
|
return false;
|
|
|
#endif
|