usb: dwc3: warn on once when no trbs
Seems last time we hit few issues where we get trb_left = 0, mainly because of HWO bit still set in previous TRB. Add warn on once to catch/fix such problems much faster. Signed-off-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:

committed by
Felipe Balbi

parent
87aba10639
commit
f2694a93e0
@@ -937,6 +937,7 @@ static struct dwc3_trb *dwc3_ep_prev_trb(struct dwc3_ep *dep, u8 index)
|
|||||||
static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
|
static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
|
||||||
{
|
{
|
||||||
struct dwc3_trb *tmp;
|
struct dwc3_trb *tmp;
|
||||||
|
struct dwc3 *dwc = dep->dwc;
|
||||||
u8 trbs_left;
|
u8 trbs_left;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -948,7 +949,8 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
|
|||||||
*/
|
*/
|
||||||
if (dep->trb_enqueue == dep->trb_dequeue) {
|
if (dep->trb_enqueue == dep->trb_dequeue) {
|
||||||
tmp = dwc3_ep_prev_trb(dep, dep->trb_enqueue);
|
tmp = dwc3_ep_prev_trb(dep, dep->trb_enqueue);
|
||||||
if (tmp->ctrl & DWC3_TRB_CTRL_HWO)
|
if (dev_WARN_ONCE(dwc->dev, tmp->ctrl & DWC3_TRB_CTRL_HWO,
|
||||||
|
"%s No TRBS left\n", dep->name))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return DWC3_TRB_NUM - 1;
|
return DWC3_TRB_NUM - 1;
|
||||||
|
Reference in New Issue
Block a user