On Fri, 2012-02-17 at 09:58 +1100, Benjamin Herrenschmidt wrote: > On Thu, 2012-02-16 at 18:02 +0800, Shengzhou Liu wrote: > > If USB UTMI PHY is not enable, writing to portsc register will lead to > > kernel hang during boot up. > > > > Signed-off-by: Shengzhou Liu <Shengzhou.Liu@xxxxxxxxxxxxx> > > --- > > Apply for master branch of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git > > Tested on P5020DS, the issue was reported by Benjamin Herrenschmidt. > > This fixes the hang, but sadly doesn't make USB work. I now get: .../... Ok, found the problem. First, the SDK kernel had a delay after setting that bit, I added that back in. This is not what fixed it but it looks like the right thing to do, though please, use msleep rather than udelay here if possible (not in atomic context). Then, the real culprit is (CC'ing Kumar and Scott to figure out why) this statement: #if defined(CONFIG_PPC32) && !defined(CONFIG_NOT_COHERENT_CACHE) /* * Turn on cache snooping hardware, since some PowerPC platforms * wholly rely on hardware to deal with cache coherent */ /* Setup Snooping for all the 4GB space */ /* SNOOP1 starts from 0x0, size 2G */ out_be32(non_ehci + FSL_SOC_USB_SNOOP1, 0x0 | SNOOP_SIZE_2GB); /* SNOOP2 starts from 0x80000000, size 2G */ out_be32(non_ehci + FSL_SOC_USB_SNOOP2, 0x80000000 | SNOOP_SIZE_2GB); #endif I'm building a 64-bit kernel so this isn't compiled and it looks like the EHCI is thus not snooping. By removing the defined(CONFIG_PPC32) part of the statement, my problem goes away. Cheers, Ben. -- 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