From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] ush: ehci: initialize altnext pointers in QH
Date: Fri, 7 Feb 2014 14:50:28 +0100 [thread overview]
Message-ID: <201402071450.28929.marex@denx.de> (raw)
In-Reply-To: <52F48172.7010800@wwwdotorg.org>
On Friday, February 07, 2014 at 07:47:14 AM, Stephen Warren wrote:
> On 02/06/2014 07:53 PM, Marek Vasut wrote:
> > On Thursday, February 06, 2014 at 09:13:05 PM, Stephen Warren wrote:
> >> From: Stephen Warren <swarren@nvidia.com>
> >>
> >> A QH's overlay QTD altnext pointer should be explicitly marked invalid
> >> so that the EHCI controller knows to look at the QTD next pointer.
> >> Update the driver to do this.
> >
> > Can you please add a reference to the spec where this is stated ?
>
> Section 4.10.2 "Advance Queue". Are you simply asking me to repost with
> that added to the commit description, or justify the change?
Justify it. Of course, clear and helpful commit message like so would be very
nice, so feel free to repost this please.
> FWIW, the situation is that the QH set up by ehci_submit_async() does
> not have the active or halt bits set the first time around, so after the
> "Fetch Queue Head" state, the "Advance Queue" state is entered, and this
> is when the T bits of the Alternate Next qTD Pointer and Next qTD
> Pointer are checked. I guess since I can download the PDF from Intel's
> website without agreeing to any kind of license, I can quote it:
>
> If the field Bytes to Transfer is not zero and the T-bit in the
> Alternate Next qTD Pointer is set to zero, then the host controller uses
> the Alternate Next qTD Pointer. Otherwise, the host controller uses the
> Next qTD Pointer. If Next qTD Pointer?s T-bit is set to a one, then the
> host controller exits this state and uses the horizontal pointer to the
> next schedule data structure.
>
> >> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> >>
> >> @@ -1186,6 +1187,7 @@ create_int_queue(struct usb_device *dev, unsigned
> >> long pipe, int queuesize, qh->qh_link = QH_LINK_TERMINATE;
> >>
> >> qh->qh_overlay.qt_next = (uint32_t)td;
> >>
> >> + qh->qh_overlay.qt_altnext = QT_NEXT_TERMINATE;
> >
> > So next is td and altnext is terminate here ?
>
> Yes. TERMINATE really just means INVALID, so the EHCI controller gets
> the pointer from qt_next rather than qt_altnext.
Hmmmm ... not really clear or self-explaining, is it. If you have time to
produce a RFC to clean this up, I'm all for checking it.
Best regards,
Marek Vasut
next prev parent reply other threads:[~2014-02-07 13:50 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-06 20:13 [U-Boot] [PATCH 1/2] ush: ehci: initialize altnext pointers in QH Stephen Warren
2014-02-06 20:13 ` [U-Boot] [PATCH 2/2] usb: ehci: fully align interrupt QHs/QTDs Stephen Warren
2014-02-07 2:53 ` Marek Vasut
2014-02-07 6:48 ` Stephen Warren
2014-02-07 13:48 ` Marek Vasut
2014-02-07 16:24 ` Stephen Warren
2014-02-08 14:01 ` Marek Vasut
2014-02-21 4:17 ` Stephen Warren
2014-02-07 2:53 ` [U-Boot] [PATCH 1/2] ush: ehci: initialize altnext pointers in QH Marek Vasut
2014-02-07 6:47 ` Stephen Warren
2014-02-07 13:50 ` Marek Vasut [this message]
2014-02-07 16:44 ` Stephen Warren
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=201402071450.28929.marex@denx.de \
--to=marex@denx.de \
--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