From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Murphy Date: Thu, 11 Jul 2013 10:29:54 -0500 Subject: [U-Boot] [[PATCH v2 5/6] USB: ehci: Add a weak function for resetting devices In-Reply-To: <51DEBFEC.60408@ti.com> References: <1373486709-13015-1-git-send-email-dmurphy@ti.com> <51DDEB31.40806@ti.com> <51DE68A0.5080302@ti.com> <201307111435.32813.marex@denx.de> <51DEBFEC.60408@ti.com> Message-ID: <51DECF72.8050606@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Roger On 07/11/2013 09:23 AM, Roger Quadros wrote: > Hi Marek, > > On 07/11/2013 03:35 PM, Marek Vasut wrote: >> Dear Roger Quadros, >> >>> On 07/11/2013 02:16 AM, Dan Murphy wrote: >>>> On 07/10/2013 05:20 PM, Marek Vasut wrote: >>>>> Dear Dan Murphy, >>>>> >>>>>> Add a __weak function that can be overridden to reset devices >>>>>> attached to an ehci devices after the FEAT_POWER has been submitted >>>>>> >>>>>> Signed-off-by: Dan Murphy >>>>>> --- >>>>>> >>>>>> drivers/usb/host/ehci-hcd.c | 7 +++++++ >>>>>> 1 file changed, 7 insertions(+) >>>>>> >>>>>> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c >>>>>> index 706cf0c..fdd3994 100644 >>>>>> --- a/drivers/usb/host/ehci-hcd.c >>>>>> +++ b/drivers/usb/host/ehci-hcd.c >>>>>> @@ -616,6 +616,11 @@ __weak uint32_t *ehci_get_portsc_register(struct >>>>>> ehci_hcor *hcor, int port) return (uint32_t *)&hcor->or_portsc[port]; >>>>>> >>>>>> } >>>>>> >>>>>> +__weak void ehci_reset_attached_devices(int port) >>>>>> +{ >>>>>> + return; >>>>>> +} >>> Does this function need to be ehci specific? Other USB controllers might >>> also need such a function. >> You'd need to implement this for each of the xHCIs > OK. I can move the API to the usb-hub to call this after the FEAT_POWER is completed >>>>>> + >>>>> Can the reset not happen elsewhere? >>>> I have tried to move this around and keep this out of this file >>>> completely but nothing else seems to work. >>>> >>>> For port 2 where the USB3530 is we don't have the issue the 3530 >>>> enumerates properly. >>>> >>>> I did not see any information in the data sheet eluding to a timing >>>> issue. >>> This is the information I had received earlier from SMSC about USB3503A hub This has nothing to do with the 3503A this is the LAN9730. The 3503 works just fine without the additional reset. >>> >>> "You need the host up and running, and ready to go, THEN negate RESET_N. >>> That is probably 95% of the issues." >>> >>> Please make sure the following sequence is done. >>> >>> - power up hub (RESET is active at this point). >>> - start USB controller >>> - wait a few ms >>> - release hub RESET. >>> >>> giving a quick look at the u-boot code it seems you need to release the hub >>> reset after usb_lowlevel_init() _OR_ usb_init() returns. >> Then it would also work in usb_lowlevel_init() ? > It should as long as we place the "release reset" after EHCI controller > has started. Maybe safer to put it in the end of usb_lowlevel_init(). > > cheers, > -roger I moved the reset to the usb_lowlevel_init and it did not work. I tried holding the 9730 in reset until after ehci hcd init is complete and pulled it out of reset once the hcd is initialized but still no enumeration. Dan -- ------------------ Dan Murphy