+Prabhakar Prabhakar,
Please include USB IP owner to take a look. On 01/05/2017 08:27 PM, Marek Vasut wrote: > 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 ? :) > Yes, our team will look into it. I am not the expert on USB. York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot