|
@@ -103,7 +103,7 @@ qh_update (struct ehci_hcd *ehci, struct ehci_qh *qh, struct ehci_qtd *qtd)
|
|
|
if (!(hw->hw_info1 & cpu_to_hc32(ehci, 1 << 14))) {
|
|
|
unsigned is_out, epnum;
|
|
|
|
|
|
- is_out = !(qtd->hw_token & cpu_to_hc32(ehci, 1 << 8));
|
|
|
+ is_out = qh->is_out;
|
|
|
epnum = (hc32_to_cpup(ehci, &hw->hw_info1) >> 8) & 0x0f;
|
|
|
if (unlikely (!usb_gettoggle (qh->dev, epnum, is_out))) {
|
|
|
hw->hw_token &= ~cpu_to_hc32(ehci, QTD_TOGGLE);
|
|
@@ -946,6 +946,7 @@ done:
|
|
|
hw = qh->hw;
|
|
|
hw->hw_info1 = cpu_to_hc32(ehci, info1);
|
|
|
hw->hw_info2 = cpu_to_hc32(ehci, info2);
|
|
|
+ qh->is_out = !is_input;
|
|
|
usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe), !is_input, 1);
|
|
|
qh_refresh (ehci, qh);
|
|
|
return qh;
|