From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] EHCI: zero out QH transfer overlay in ehci_submit_async()
Date: Fri, 25 Jun 2010 23:08:08 +0400 [thread overview]
Message-ID: <201006252308.08209.sshtylyov@ru.mvista.com> (raw)
ehci_submit_async() doesn't really zero out the QH transfer overlay (as the EHCI
specification suggests) which leads to the controller seeing the 'token' field
as the previous call has left it, i.e.:
- if a timeout occured on the previous call (Active bit left as 1), controller
incorrectly tries to complete a previous transaction on a newly programmed
endpoint;
- if a halt occured on the previous call (Halted bit set to 1), controller just
ignores the newly programmed TD(s) and the function then keeps returning error
ad infinitum.
This turned out to be caused by the wrong orger of the arguments to the memset()
call in ehci_alloc(), so the allocated TDs weren't cleared either.
While at it, stop needlessly initializing the "next" pointers in the QH transfer
overlay...
Signed-off-by: Sergei Shtylyov <sshtylyov@mvista.com>
---
This is quite serious error, so would be good to have the patch in v2010.06...
drivers/usb/host/ehci-hcd.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
Index: u-boot/drivers/usb/host/ehci-hcd.c
===================================================================
--- u-boot.orig/drivers/usb/host/ehci-hcd.c
+++ u-boot/drivers/usb/host/ehci-hcd.c
@@ -275,7 +275,7 @@ static void *ehci_alloc(size_t sz, size_
return NULL;
}
- memset(p, sz, 0);
+ memset(p, 0, sz);
return p;
}
@@ -349,8 +349,6 @@ ehci_submit_async(struct usb_device *dev
(dev->portnr << 23) |
(dev->parent->devnum << 16) | (0 << 8) | (0 << 0);
qh->qh_endpt2 = cpu_to_hc32(endpt);
- qh->qh_overlay.qt_next = cpu_to_hc32(QT_NEXT_TERMINATE);
- qh->qh_overlay.qt_altnext = cpu_to_hc32(QT_NEXT_TERMINATE);
td = NULL;
tdp = &qh->qh_overlay.qt_next;
next reply other threads:[~2010-06-25 19:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-25 19:08 Sergei Shtylyov [this message]
2010-06-25 19:44 ` [U-Boot] [PATCH] EHCI: zero out QH transfer overlay in ehci_submit_async() Remy Bohmer
2010-06-28 17:23 ` Sergei Shtylyov
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=201006252308.08209.sshtylyov@ru.mvista.com \
--to=sshtylyov@ru.mvista.com \
--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