Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91b11935 authored by Peter Chen's avatar Peter Chen Committed by Greg Kroah-Hartman
Browse files

usb: host: ehci: always enable interrupt for qtd completion at test mode



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: default avatarPeter Chen <peter.chen@nxp.com>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 52ad2bd8
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -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, &qtd_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->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, &qtd_list, GFP_KERNEL);