From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Date: Fri, 07 Feb 2014 09:44:58 -0700 Subject: [U-Boot] [PATCH 1/2] ush: ehci: initialize altnext pointers in QH In-Reply-To: <201402071450.28929.marex@denx.de> References: <1391717586-5086-1-git-send-email-swarren@wwwdotorg.org> <201402070353.08713.marex@denx.de> <52F48172.7010800@wwwdotorg.org> <201402071450.28929.marex@denx.de> Message-ID: <52F50D8A.3030507@wwwdotorg.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 02/07/2014 06:50 AM, Marek Vasut wrote: > 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 >>>> >>>> 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. ... >>>> 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. Looking at section 3.5.1 "Next qTD Pointer", this bit is in fact named Terminate (hence it's referred to as the T bit), so this naming seems to be ingrained in the EHCI specification, so I'm uninclined to change it in U-Boot.