Revert "usb: dwc3: core: Stop processing of pending events if controller is halted"
This reverts commit c2a8d1e8ba
.
This commit is contained in:
parent
1e8a8b3db9
commit
9156188795
3 changed files with 18 additions and 19 deletions
|
@ -459,7 +459,6 @@ static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
|
|||
int dwc3_event_buffers_setup(struct dwc3 *dwc)
|
||||
{
|
||||
struct dwc3_event_buffer *evt;
|
||||
u32 reg;
|
||||
|
||||
if (!dwc->ev_buf)
|
||||
return 0;
|
||||
|
@ -472,10 +471,8 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc)
|
|||
upper_32_bits(evt->dma));
|
||||
dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(0),
|
||||
DWC3_GEVNTSIZ_SIZE(evt->length));
|
||||
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0);
|
||||
|
||||
/* Clear any stale event */
|
||||
reg = dwc3_readl(dwc->regs, DWC3_GEVNTCOUNT(0));
|
||||
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), reg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -502,10 +499,7 @@ void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
|
|||
dwc3_writel(dwc->regs, DWC3_GEVNTADRHI(0), 0);
|
||||
dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(0), DWC3_GEVNTSIZ_INTMASK
|
||||
| DWC3_GEVNTSIZ_SIZE(0));
|
||||
|
||||
/* Clear any stale event */
|
||||
reg = dwc3_readl(dwc->regs, DWC3_GEVNTCOUNT(0));
|
||||
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), reg);
|
||||
dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0);
|
||||
}
|
||||
|
||||
static int dwc3_alloc_scratch_buffers(struct dwc3 *dwc)
|
||||
|
@ -2008,11 +2002,7 @@ static int dwc3_runtime_resume(struct device *dev)
|
|||
|
||||
switch (dwc->current_dr_role) {
|
||||
case DWC3_GCTL_PRTCAP_DEVICE:
|
||||
if (dwc->pending_events) {
|
||||
pm_runtime_put(dwc->dev);
|
||||
dwc->pending_events = false;
|
||||
enable_irq(dwc->irq_gadget);
|
||||
}
|
||||
dwc3_gadget_process_pending_events(dwc);
|
||||
break;
|
||||
case DWC3_GCTL_PRTCAP_HOST:
|
||||
default:
|
||||
|
@ -2106,12 +2096,6 @@ static void dwc3_complete(struct device *dev)
|
|||
static const struct dev_pm_ops dwc3_dev_pm_ops = {
|
||||
SET_SYSTEM_SLEEP_PM_OPS(dwc3_suspend, dwc3_resume)
|
||||
.complete = dwc3_complete,
|
||||
|
||||
/*
|
||||
* Runtime suspend halts the controller on disconnection. It relies on
|
||||
* platforms with custom connection notification to start the controller
|
||||
* again.
|
||||
*/
|
||||
SET_RUNTIME_PM_OPS(dwc3_runtime_suspend, dwc3_runtime_resume,
|
||||
dwc3_runtime_idle)
|
||||
};
|
||||
|
|
|
@ -1621,6 +1621,7 @@ static inline void dwc3_otg_host_init(struct dwc3 *dwc)
|
|||
#if !IS_ENABLED(CONFIG_USB_DWC3_HOST)
|
||||
int dwc3_gadget_suspend(struct dwc3 *dwc);
|
||||
int dwc3_gadget_resume(struct dwc3 *dwc);
|
||||
void dwc3_gadget_process_pending_events(struct dwc3 *dwc);
|
||||
#else
|
||||
static inline int dwc3_gadget_suspend(struct dwc3 *dwc)
|
||||
{
|
||||
|
@ -1632,6 +1633,9 @@ static inline int dwc3_gadget_resume(struct dwc3 *dwc)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void dwc3_gadget_process_pending_events(struct dwc3 *dwc)
|
||||
{
|
||||
}
|
||||
#endif /* !IS_ENABLED(CONFIG_USB_DWC3_HOST) */
|
||||
|
||||
#if IS_ENABLED(CONFIG_USB_DWC3_ULPI)
|
||||
|
|
|
@ -4735,3 +4735,14 @@ err1:
|
|||
err0:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void dwc3_gadget_process_pending_events(struct dwc3 *dwc)
|
||||
{
|
||||
if (dwc->pending_events) {
|
||||
dwc3_interrupt(dwc->irq_gadget, dwc->ev_buf);
|
||||
dwc3_thread_interrupt(dwc->irq_gadget, dwc->ev_buf);
|
||||
pm_runtime_put(dwc->dev);
|
||||
dwc->pending_events = false;
|
||||
enable_irq(dwc->irq_gadget);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue