Loading drivers/usb/dwc3/core.h +4 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,8 @@ #define DWC3_DEVICE_EVENT_WAKEUP 4 #define DWC3_DEVICE_EVENT_HIBER_REQ 5 #define DWC3_DEVICE_EVENT_EOPF 6 /* For version 2.30a and above */ #define DWC3_DEVICE_EVENT_SUSPEND 6 #define DWC3_DEVICE_EVENT_SOF 7 #define DWC3_DEVICE_EVENT_ERRATIC_ERROR 9 #define DWC3_DEVICE_EVENT_CMD_CMPL 10 Loading Loading @@ -289,6 +291,8 @@ #define DWC3_DEVTEN_ERRTICERREN (1 << 9) #define DWC3_DEVTEN_SOFEN (1 << 7) #define DWC3_DEVTEN_EOPFEN (1 << 6) /* For version 2.30a and above*/ #define DWC3_DEVTEN_SUSPEND (1 << 6) #define DWC3_DEVTEN_HIBERNATIONREQEVTEN (1 << 5) #define DWC3_DEVTEN_WKUPEVTEN (1 << 4) #define DWC3_DEVTEN_ULSTCNGEN (1 << 3) Loading drivers/usb/dwc3/dwc3-msm.c +9 −3 Original line number Diff line number Diff line Loading @@ -1114,13 +1114,19 @@ static void dwc3_block_reset_usb_work(struct work_struct *w) DWC3_DEVTEN_CMDCMPLTEN | DWC3_DEVTEN_ERRTICERREN | DWC3_DEVTEN_WKUPEVTEN | DWC3_DEVTEN_ULSTCNGEN | DWC3_DEVTEN_CONNECTDONEEN | DWC3_DEVTEN_USBRSTEN | DWC3_DEVTEN_DISCONNEVTEN); dwc3_msm_write_reg(mdwc->base, DWC3_DEVTEN, reg); /* * Enable SUSPENDEVENT(BIT:6) for version 230A and above * else enable USB Link change event (BIT:3) for older version */ if (dwc3_msm_read_reg(mdwc->base, DWC3_GSNPSID) < DWC3_REVISION_230A) reg |= DWC3_DEVTEN_ULSTCNGEN; else reg |= DWC3_DEVTEN_SUSPEND; dwc3_msm_write_reg(mdwc->base, DWC3_DEVTEN, reg); } static void dwc3_chg_enable_secondary_det(struct dwc3_msm *mdwc) Loading drivers/usb/dwc3/gadget.c +28 −10 Original line number Diff line number Diff line Loading @@ -1725,11 +1725,19 @@ static void dwc3_gadget_enable_irq(struct dwc3 *dwc) DWC3_DEVTEN_CMDCMPLTEN | DWC3_DEVTEN_ERRTICERREN | DWC3_DEVTEN_WKUPEVTEN | DWC3_DEVTEN_ULSTCNGEN | DWC3_DEVTEN_CONNECTDONEEN | DWC3_DEVTEN_USBRSTEN | DWC3_DEVTEN_DISCONNEVTEN); /* * Enable SUSPENDEVENT(BIT:6) for version 230A and above * else enable USB Link change event (BIT:3) for older version */ if (dwc->revision < DWC3_REVISION_230A) reg |= DWC3_DEVTEN_ULSTCNGEN; else reg |= DWC3_DEVTEN_SUSPEND; dwc3_writel(dwc->regs, DWC3_DEVTEN, reg); } Loading Loading @@ -2801,18 +2809,22 @@ static void dwc3_gadget_linksts_change_interrupt(struct dwc3 *dwc, } } if (next == DWC3_LINK_STATE_U0) { if (dwc->link_state == DWC3_LINK_STATE_U3) { dbg_event(0xFF, "RESUME", 0); dwc->gadget_driver->resume(&dwc->gadget); dwc->link_state = next; dev_vdbg(dwc->dev, "%s link %d\n", __func__, dwc->link_state); } } else if (next == DWC3_LINK_STATE_U3) { static void dwc3_gadget_suspend_interrupt(struct dwc3 *dwc, unsigned int evtinfo) { enum dwc3_link_state next = evtinfo & DWC3_LINK_STATE_MASK; if (next == DWC3_LINK_STATE_U3) { dbg_event(0xFF, "SUSPEND", 0); dwc->gadget_driver->suspend(&dwc->gadget); } dwc->link_state = next; dev_vdbg(dwc->dev, "%s link %d\n", __func__, dwc->link_state); } Loading Loading @@ -2861,8 +2873,14 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc, case DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE: dwc3_gadget_linksts_change_interrupt(dwc, event->event_info); break; case DWC3_DEVICE_EVENT_EOPF: case DWC3_DEVICE_EVENT_SUSPEND: if (dwc->revision < DWC3_REVISION_230A) { dev_vdbg(dwc->dev, "End of Periodic Frame\n"); } else { dev_vdbg(dwc->dev, "U3/L1-L2 Suspend Event\n"); dbg_event(0xFF, "SUSPEND", 0); dwc3_gadget_suspend_interrupt(dwc, event->event_info); } break; case DWC3_DEVICE_EVENT_SOF: dev_vdbg(dwc->dev, "Start of Periodic Frame\n"); Loading Loading
drivers/usb/dwc3/core.h +4 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,8 @@ #define DWC3_DEVICE_EVENT_WAKEUP 4 #define DWC3_DEVICE_EVENT_HIBER_REQ 5 #define DWC3_DEVICE_EVENT_EOPF 6 /* For version 2.30a and above */ #define DWC3_DEVICE_EVENT_SUSPEND 6 #define DWC3_DEVICE_EVENT_SOF 7 #define DWC3_DEVICE_EVENT_ERRATIC_ERROR 9 #define DWC3_DEVICE_EVENT_CMD_CMPL 10 Loading Loading @@ -289,6 +291,8 @@ #define DWC3_DEVTEN_ERRTICERREN (1 << 9) #define DWC3_DEVTEN_SOFEN (1 << 7) #define DWC3_DEVTEN_EOPFEN (1 << 6) /* For version 2.30a and above*/ #define DWC3_DEVTEN_SUSPEND (1 << 6) #define DWC3_DEVTEN_HIBERNATIONREQEVTEN (1 << 5) #define DWC3_DEVTEN_WKUPEVTEN (1 << 4) #define DWC3_DEVTEN_ULSTCNGEN (1 << 3) Loading
drivers/usb/dwc3/dwc3-msm.c +9 −3 Original line number Diff line number Diff line Loading @@ -1114,13 +1114,19 @@ static void dwc3_block_reset_usb_work(struct work_struct *w) DWC3_DEVTEN_CMDCMPLTEN | DWC3_DEVTEN_ERRTICERREN | DWC3_DEVTEN_WKUPEVTEN | DWC3_DEVTEN_ULSTCNGEN | DWC3_DEVTEN_CONNECTDONEEN | DWC3_DEVTEN_USBRSTEN | DWC3_DEVTEN_DISCONNEVTEN); dwc3_msm_write_reg(mdwc->base, DWC3_DEVTEN, reg); /* * Enable SUSPENDEVENT(BIT:6) for version 230A and above * else enable USB Link change event (BIT:3) for older version */ if (dwc3_msm_read_reg(mdwc->base, DWC3_GSNPSID) < DWC3_REVISION_230A) reg |= DWC3_DEVTEN_ULSTCNGEN; else reg |= DWC3_DEVTEN_SUSPEND; dwc3_msm_write_reg(mdwc->base, DWC3_DEVTEN, reg); } static void dwc3_chg_enable_secondary_det(struct dwc3_msm *mdwc) Loading
drivers/usb/dwc3/gadget.c +28 −10 Original line number Diff line number Diff line Loading @@ -1725,11 +1725,19 @@ static void dwc3_gadget_enable_irq(struct dwc3 *dwc) DWC3_DEVTEN_CMDCMPLTEN | DWC3_DEVTEN_ERRTICERREN | DWC3_DEVTEN_WKUPEVTEN | DWC3_DEVTEN_ULSTCNGEN | DWC3_DEVTEN_CONNECTDONEEN | DWC3_DEVTEN_USBRSTEN | DWC3_DEVTEN_DISCONNEVTEN); /* * Enable SUSPENDEVENT(BIT:6) for version 230A and above * else enable USB Link change event (BIT:3) for older version */ if (dwc->revision < DWC3_REVISION_230A) reg |= DWC3_DEVTEN_ULSTCNGEN; else reg |= DWC3_DEVTEN_SUSPEND; dwc3_writel(dwc->regs, DWC3_DEVTEN, reg); } Loading Loading @@ -2801,18 +2809,22 @@ static void dwc3_gadget_linksts_change_interrupt(struct dwc3 *dwc, } } if (next == DWC3_LINK_STATE_U0) { if (dwc->link_state == DWC3_LINK_STATE_U3) { dbg_event(0xFF, "RESUME", 0); dwc->gadget_driver->resume(&dwc->gadget); dwc->link_state = next; dev_vdbg(dwc->dev, "%s link %d\n", __func__, dwc->link_state); } } else if (next == DWC3_LINK_STATE_U3) { static void dwc3_gadget_suspend_interrupt(struct dwc3 *dwc, unsigned int evtinfo) { enum dwc3_link_state next = evtinfo & DWC3_LINK_STATE_MASK; if (next == DWC3_LINK_STATE_U3) { dbg_event(0xFF, "SUSPEND", 0); dwc->gadget_driver->suspend(&dwc->gadget); } dwc->link_state = next; dev_vdbg(dwc->dev, "%s link %d\n", __func__, dwc->link_state); } Loading Loading @@ -2861,8 +2873,14 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc, case DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE: dwc3_gadget_linksts_change_interrupt(dwc, event->event_info); break; case DWC3_DEVICE_EVENT_EOPF: case DWC3_DEVICE_EVENT_SUSPEND: if (dwc->revision < DWC3_REVISION_230A) { dev_vdbg(dwc->dev, "End of Periodic Frame\n"); } else { dev_vdbg(dwc->dev, "U3/L1-L2 Suspend Event\n"); dbg_event(0xFF, "SUSPEND", 0); dwc3_gadget_suspend_interrupt(dwc, event->event_info); } break; case DWC3_DEVICE_EVENT_SOF: dev_vdbg(dwc->dev, "Start of Periodic Frame\n"); Loading