public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: "Pali Rohár" <pali@kernel.org>
To: u-boot@lists.denx.de
Subject: [RESEND v2 PATCH 09/16] usb: musb: Fix handling interrupts for EP0 and SET ADDRESS commmand
Date: Sun,  7 Feb 2021 14:50:09 +0100	[thread overview]
Message-ID: <20210207135016.3500-10-pali@kernel.org> (raw)
In-Reply-To: <20210207135016.3500-1-pali@kernel.org>

Interrupt for EP0 is indicated in intrtx register via first bit. This bit
is set for both RX and TX despite register has only TX in its name. First
bit in intrrx register is reserved, not used and never set.

So remove calling musb_peri_ep0() function at every iteration of udc_irq()
and musb_peri_rx() and call it only from musb_peri_tx() when correct
interrupt bit in initrtx it set.

Address from SET ADDRESS command must be set to faddr register only after
acknowledging SERV_RXPKTRDY followed by received EP0 interrupt. So prior
calling musb_peri_ep0_set_address() check for EP0 interrupt instead of
(incorrect) MUSB_INTR_SOF interrupt.

This patch fixes issue that host (computer) cannot register U-Boot USB
device and is failing with errors:

    usb 1-1: new full-speed USB device number 86 using xhci_hcd
    usb 1-1: Device not responding to setup address.
    usb 1-1: Device not responding to setup address.
    usb 1-1: device not accepting address 86, error -71

U-Boot was writing address to faddr register too early and did not wait for
correct interrupt after which should update address.

Signed-off-by: Pali Roh?r <pali@kernel.org>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Acked-by: Pavel Machek <pavel@ucw.cz>
---
 drivers/usb/musb/musb_udc.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/musb/musb_udc.c b/drivers/usb/musb/musb_udc.c
index 41fff94df4..8d48056f08 100644
--- a/drivers/usb/musb/musb_udc.c
+++ b/drivers/usb/musb/musb_udc.c
@@ -707,9 +707,7 @@ static void musb_peri_rx(u16 intr)
 {
 	unsigned int ep;
 
-	/* Check for EP0 */
-	if (0x01 & intr)
-		musb_peri_ep0();
+	/* First bit is reserved and does not indicate interrupt for EP0 */
 
 	for (ep = 1; ep < 16; ep++) {
 		if ((1 << ep) & intr)
@@ -721,9 +719,9 @@ static void musb_peri_tx(u16 intr)
 {
 	unsigned int ep;
 
-	/* Check for EP0 */
+	/* Check for EP0: first bit indicates interrupt for both RX and TX */
 	if (0x01 & intr)
-		musb_peri_ep0_tx();
+		musb_peri_ep0();
 
 	for (ep = 1; ep < 16; ep++) {
 		if ((1 << ep) & intr)
@@ -750,8 +748,6 @@ void udc_irq(void)
 			musb_peri_resume();
 		}
 
-		musb_peri_ep0();
-
 		if (MUSB_INTR_RESET & intrusb) {
 			usbd_device_event_irq(udc_device, DEVICE_RESET, 0);
 			musb_peri_reset();
@@ -790,7 +786,7 @@ void udc_irq(void)
 			if (intrtx)
 				musb_peri_tx(intrtx);
 		} else {
-			if (MUSB_INTR_SOF & intrusb) {
+			if (readw(&musbr->intrtx) & 0x1) {
 				u8 faddr;
 				faddr = readb(&musbr->faddr);
 				/*
-- 
2.20.1

  parent reply	other threads:[~2021-02-07 13:50 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-05 19:11 [RESEND PATCH 00/16] Nokia RX-51: Fix USB TTY console and enable it Pali Rohár
2021-02-05 19:11 ` [RESEND PATCH 01/16] serial: usbtty: Fix puts function Pali Rohár
2021-02-06 13:49   ` Lukasz Majewski
2021-02-05 19:11 ` [RESEND PATCH 02/16] serial: usbtty: Send urb data in correct order Pali Rohár
2021-02-06 13:56   ` Lukasz Majewski
2021-02-05 19:11 ` [RESEND PATCH 03/16] usb: musb: Fix compilation of gadget code Pali Rohár
2021-02-06 13:57   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 04/16] usb: musb: Always clear the data toggle bit when configuring ep Pali Rohár
2021-02-06 13:58   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 05/16] usb: musb: Fix configuring FIFO for endpoints Pali Rohár
2021-02-06  8:58   ` Pavel Machek
2021-02-06 14:01   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 06/16] usb: musb: Read value of PERI_RXCSR to 16bit variable Pali Rohár
2021-02-06 14:01   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 07/16] usb: musb: Fix transmission of bigger buffers Pali Rohár
2021-02-06 14:07   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 08/16] usb: musb: Fix receiving " Pali Rohár
2021-02-06 14:15   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 09/16] usb: musb: Fix handling interrupts for EP0 and SET ADDRESS commmand Pali Rohár
2021-02-06 14:17   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 10/16] usb: musb: Ensure that we set musb dynamic FIFO buffer for every endpoint Pali Rohár
2021-02-06  9:04   ` Pavel Machek
2021-02-06 15:18   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 11/16] usb: gadget: Use dbg_ep0() macro instead of serial_printf() Pali Rohár
2021-02-06 15:19   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 12/16] arm: omap3: Compile lowlevel_init() function only when it is used Pali Rohár
2021-02-06 15:21   ` Lukasz Majewski
2021-02-06 15:40   ` Marek Vasut
2021-02-06 15:45     ` Pali Rohár
2021-02-06 16:50       ` Marek Vasut
2021-02-07 13:50         ` Pali Rohár
2021-02-07 14:33           ` Marek Vasut
2021-02-05 19:12 ` [RESEND PATCH 13/16] arm: omap3: Compile s_init() " Pali Rohár
2021-02-06 15:21   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 14/16] Nokia RX-51: Remove function set_muxconf_regs() Pali Rohár
2021-02-06 15:22   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 15/16] Nokia RX-51: Move content of rx51.h to rx51.c Pali Rohár
2021-02-06 15:23   ` Lukasz Majewski
2021-02-05 19:12 ` [RESEND PATCH 16/16] Nokia RX-51: Enable usbtty serial console by default Pali Rohár
2021-02-06  9:10   ` Pavel Machek
2021-02-06 15:24   ` Lukasz Majewski
2021-02-07 13:50 ` [RESEND v2 PATCH 00/16] Nokia RX-51: Fix USB TTY console and enable it Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 01/16] serial: usbtty: Fix puts function Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 02/16] serial: usbtty: Send urb data in correct order Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 03/16] usb: musb: Fix compilation of gadget code Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 04/16] usb: musb: Always clear the data toggle bit when configuring ep Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 05/16] usb: musb: Fix configuring FIFO for endpoints Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 06/16] usb: musb: Read value of PERI_RXCSR to 16bit variable Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 07/16] usb: musb: Fix transmission of bigger buffers Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 08/16] usb: musb: Fix receiving " Pali Rohár
2021-02-07 13:50   ` Pali Rohár [this message]
2021-02-07 13:50   ` [RESEND v2 PATCH 10/16] usb: musb: Ensure that we set musb dynamic FIFO buffer for every endpoint Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 11/16] usb: gadget: Use dbg_ep0() macro instead of serial_printf() Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 12/16] arm: omap3: Compile lowlevel_init() function only when it is used Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 13/16] arm: omap3: Compile s_init() " Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 14/16] Nokia RX-51: Remove function set_muxconf_regs() Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 15/16] Nokia RX-51: Move content of rx51.h to rx51.c Pali Rohár
2021-02-07 13:50   ` [RESEND v2 PATCH 16/16] Nokia RX-51: Enable usbtty serial console by default Pali Rohár
2021-02-20 10:50     ` [AZURE FIX RESEND " Pali Rohár
2021-02-08 22:15   ` [RESEND v2 PATCH 00/16] Nokia RX-51: Fix USB TTY console and enable it Lukasz Majewski
2021-02-08 22:21     ` Pali Rohár
2021-02-08 22:34       ` Pali Rohár
2021-02-08 22:45         ` Marek Vasut
2021-02-08 22:54           ` Pali Rohár
2021-02-13 10:20         ` Pali Rohár
2021-02-16  8:28           ` Lukasz Majewski
2021-02-19  0:38             ` Pali Rohár
2021-02-20  8:20               ` Lukasz Majewski
2021-02-20 10:54                 ` Pali Rohár

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210207135016.3500-10-pali@kernel.org \
    --to=pali@kernel.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox