On Thu, Dec 20, 2012 at 8:20 AM, Fabio Estevam <festevam@xxxxxxxxx> wrote: > Hi Peter, > > On Thu, Dec 20, 2012 at 2:39 AM, Peter Chen <peter.chen@xxxxxxxxxxxxx> 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) -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html