Re: [PATCH v2 1/1] usb: host: ehci: always enable interrupt for qtd completion at test mode

2018-02-05 Thread Alan Stern
On Mon, 5 Feb 2018, Peter Chen wrote:

> At former code, the SETUP stage does not enable interrupt
> for qtd completion, it relies on IAA watchdog to complete
> interrupt, then the transcation would be considered timeout
> if the flag need_io_watchdog is cleared by platform code.
> 
> In this commit, we always add enable interrupt for qtd completion,
> then the qtd completion can be notified by hardware interrupt.
> 
> Signed-off-by: Peter Chen 
> ---
> Changes for v2:
> - Add flag "QTD_IOC" in parameter for qtd_fill

Acked-by: Alan Stern 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 1/1] usb: host: ehci: always enable interrupt for qtd completion at test mode

2018-02-04 Thread Peter Chen
At former code, the SETUP stage does not enable interrupt
for qtd completion, it relies on IAA watchdog to complete
interrupt, then the transcation would be considered timeout
if the flag need_io_watchdog is cleared by platform code.

In this commit, we always add enable interrupt for qtd completion,
then the qtd completion can be notified by hardware interrupt.

Signed-off-by: Peter Chen 
---
Changes for v2:
- Add flag "QTD_IOC" in parameter for qtd_fill

 drivers/usb/host/ehci-q.c | 12 
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 8815832..3276304 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -1188,10 +1188,10 @@ static int submit_single_step_set_feature(
 * 15 secs after the setup
 */
if (is_setup) {
-   /* SETUP pid */
+   /* SETUP pid, and interrupt after SETUP completion */
qtd_fill(ehci, qtd, urb->setup_dma,
sizeof(struct usb_ctrlrequest),
-   token | (2 /* "setup" */ << 8), 8);
+   QTD_IOC | token | (2 /* "setup" */ << 8), 8);
 
submit_async(ehci, urb, _list, GFP_ATOMIC);
return 0; /*Return now; we shall come back after 15 seconds*/
@@ -1228,12 +1228,8 @@ static int submit_single_step_set_feature(
qtd_prev->hw_next = QTD_NEXT(ehci, qtd->qtd_dma);
list_add_tail(>qtd_list, head);
 
-   /* dont fill any data in such packets */
-   qtd_fill(ehci, qtd, 0, 0, token, 0);
-
-   /* by default, enable interrupt on urb completion */
-   if (likely(!(urb->transfer_flags & URB_NO_INTERRUPT)))
-   qtd->hw_token |= cpu_to_hc32(ehci, QTD_IOC);
+   /* Interrupt after STATUS completion */
+   qtd_fill(ehci, qtd, 0, 0, token | QTD_IOC, 0);
 
submit_async(ehci, urb, _list, GFP_KERNEL);
 
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html