mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
UPSTREAM: 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.
Change-Id: I9d0efcbf96aa65e7255397aa54af15d8b99d06a5
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>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 62943b7dfa)
This commit is contained in:
committed by
Huang, Tao
parent
b1f6eec761
commit
5e15b8c2ed
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user