usb: dwc2: host: fix the data toggle error in full speed descriptor dma
There will be data toggle error happen for full speed buld-out transfer. The data toggle bit is saved in qh for non-control transfers, it is wrong to check the qtd for that case. Also fix one static analysis tool issue after fix the data toggle error. John Youn: * Added WARN() to warn on improper usage of the dwc2_hcd_save_data_toggle() function. Signed-off-by: Dyson Lee <dyson.lee@intel.com> Signed-off-by: Tang, Jianqiang <jianqiang.tang@intel.com> Signed-off-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Felipe Balbi <balbi@kernel.org>
This commit is contained in:
parent
3142a16b98
commit
62943b7dfa
|
@ -1257,7 +1257,7 @@ stop_scan:
|
|||
*/
|
||||
if (halt_status == DWC2_HC_XFER_STALL)
|
||||
qh->data_toggle = DWC2_HC_PID_DATA0;
|
||||
else if (qtd)
|
||||
else
|
||||
dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd);
|
||||
}
|
||||
|
||||
|
|
|
@ -525,11 +525,19 @@ void dwc2_hcd_save_data_toggle(struct dwc2_hsotg *hsotg,
|
|||
u32 pid = (hctsiz & TSIZ_SC_MC_PID_MASK) >> TSIZ_SC_MC_PID_SHIFT;
|
||||
|
||||
if (chan->ep_type != USB_ENDPOINT_XFER_CONTROL) {
|
||||
if (WARN(!chan || !chan->qh,
|
||||
"chan->qh must be specified for non-control eps\n"))
|
||||
return;
|
||||
|
||||
if (pid == TSIZ_SC_MC_PID_DATA0)
|
||||
chan->qh->data_toggle = DWC2_HC_PID_DATA0;
|
||||
else
|
||||
chan->qh->data_toggle = DWC2_HC_PID_DATA1;
|
||||
} else {
|
||||
if (WARN(!qtd,
|
||||
"qtd must be specified for control eps\n"))
|
||||
return;
|
||||
|
||||
if (pid == TSIZ_SC_MC_PID_DATA0)
|
||||
qtd->data_toggle = DWC2_HC_PID_DATA0;
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue