3.7 kernel hangs when doing scp

Fabio Estevam festevam at gmail.com
Thu Dec 20 05:45:05 EST 2012


On Thu, Dec 20, 2012 at 8:20 AM, Fabio Estevam <festevam at gmail.com> wrote:
> Hi Peter,
>
> On Thu, Dec 20, 2012 at 2:39 AM, Peter Chen <peter.chen at freescale.com> wrote:
>
>> Please to see if the Stream mode disable (bit4, usbmode) is set or not?
>> If it is not, please try below patch
>>
>> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
>> index c97503b..258bc02 100644
>> --- a/drivers/usb/host/ehci-hcd.c
>> +++ b/drivers/usb/host/ehci-hcd.c
>> @@ -227,6 +227,7 @@ static void tdi_reset (struct ehci_hcd *ehci)
>>
>>         tmp = ehci_readl(ehci, &ehci->regs->usbmode);
>>         tmp |= USBMODE_CM_HC;
>> +       tmp |= (1 << 4); /* disable stream mode */
>>         /* The default byte access to MMR space is LE after
>>          * controller reset. Set the required endian mode
>>          * for transfer buffers to match the host microprocessor
>
> Excellent! Your suggestion made scp work with mx6 on 3.7.
>
> I assume that this "fix" or workaround would need a better place, right?
>
> Should this fix go into the chipidea host driver instead?
>
> Also, I wonder on how "standard" this USBMODE register is. i.e. there
> is a deviation from the FSL EHCI USBMODE register.
> I found it in include/linux/usb/ehci_def.h:
>
> #define USBMODE_SDIS            (1<<3)          /* Stream disable */
>
> , which is at a different bit position from the i.MX6 Reference Manual:
>
> 4 SDIS Stream Disable Mode. (0 - Inactive [default]; 1 - Active)

Would this be the correct fix?

--- a/include/linux/usb/chipidea.h
+++ b/include/linux/usb/chipidea.h
@@ -18,7 +18,7 @@ struct ci13xxx_platform_data {
 #define CI13XXX_REGS_SHARED            BIT(0)
 #define CI13XXX_REQUIRE_TRANSCEIVER    BIT(1)
 #define CI13XXX_PULLUP_ON_VBUS         BIT(2)
-#define CI13XXX_DISABLE_STREAMING      BIT(3)
+#define CI13XXX_DISABLE_STREAMING      BIT(4)



More information about the linux-arm-kernel mailing list