On 01/06/2017 03:40 AM, york sun wrote:
> On 01/05/2017 06:19 PM, Marek Vasut wrote:
>> On 01/06/2017 03:13 AM, Tony O'Brien wrote:
>>> Hi -
>>>
>>>
>>> We recently updated our U-Boot release to v2016.11 and now our USB devices 
>>> don't work.  When usb start is executed with a device inserted it hangs at 
>>> 'scanning bus 0 for devices...' and doesn't recover.  Our product uses an 
>>> NXP T2081 and I can reproduce this issue on the T2080RDB development board 
>>> using the tip of U-Boot.  For testing I am using both an EMTEC 16GB USB 
>>> thumb drive and an Edimax Fast Ethernet adapter.  The code always hangs at 
>>> drivers/usb/host/ehci-hcd.c:557 in ehci_submit_async, just before the call 
>>> to handshake.
>>>
>>>
>>> I have traced the issue to 'Commit cb1629f91a48 powerpc: Disable flush or 
>>> invalidate dcache by range for some SoCs', which is prior to the v2016.07 
>>> release.  Commit ac337168ad81 mentioned in this patch removes the original 
>>> empty functions for the MPC85xx (and others), allowing the functions to be 
>>> used, but I don't know how they would have worked before this.
>>>
>>>
>>> Either reverting cb1629f91a48 or adding '|| defined(MPC85xx) ' to the #if 
>>> statements makes usb work again.
>>>
>>>
>>> diff --git a/arch/powerpc/lib/ppccache.S b/arch/powerpc/lib/ppccache.S
>>> index 66cf02dbd0..ad28c7c369 100644
>>> --- a/arch/powerpc/lib/ppccache.S
>>> +++ b/arch/powerpc/lib/ppccache.S
>>> @@ -65,7 +65,7 @@ ppcSync:
>>>  * flush_dcache_range(unsigned long start, unsigned long stop)
>>>  */
>>> _GLOBAL(flush_dcache_range)
>>> -#if defined(CONFIG_4xx) || defined(CONFIG_MPC86xx)
>>> +#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || 
>>> defined(CONFIG_MPC86xx)
>>>        li      r5,L1_CACHE_BYTES-1
>>>        andc    r3,r3,r5
>>>        subf    r4,r3,r4
>>> @@ -89,7 +89,7 @@ _GLOBAL(flush_dcache_range)
>>>  * invalidate_dcache_range(unsigned long start, unsigned long stop)
>>>  */
>>> _GLOBAL(invalidate_dcache_range)
>>> -#if defined(CONFIG_4xx) || defined(CONFIG_MPC86xx)
>>> +#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || 
>>> defined(CONFIG_MPC86xx)
>>>        li      r5,L1_CACHE_BYTES-1
>>>        andc    r3,r3,r5
>>>        subf    r4,r3,r4
>>>
>>> Do you have any thoughts on this before I submit the patch?
>>
>> Seems like the right thing to do, but I'd like York to double-check this.
>>
> 
> Tony,
> 
> I put in commit cb1629f91a48 for a very similar reason. Those flushing 
> functions were no-op for 85xx. After commit ac337168a, the extra 
> flushing made things worse. I don't quite remember which drivers broke 
> but I had to exclude 85xx from those function. The code looks correct 
> though. Without further information, I cannot reject your idea to enable 
> these functions for 85xx. But I am afraid we will see something broken 
> again.

Maybe you can look into it some more ? It's NXP chip after all, so
should be doable, no ? :)

-- 
Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to