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. Thanks, I'll try that tomorrow. Greg, you're picking that up or should I ? Cheers, Ben. > 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. > > drivers/usb/host/ehci-fsl.c | 4 ++++ > drivers/usb/host/ehci-fsl.h | 1 + > 2 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c > index c26a82e..0090ed2 100644 > --- a/drivers/usb/host/ehci-fsl.c > +++ b/drivers/usb/host/ehci-fsl.c > @@ -216,6 +216,8 @@ static void ehci_fsl_setup_phy(struct ehci_hcd *ehci, > unsigned int port_offset) > { > u32 portsc; > + struct usb_hcd *hcd = ehci_to_hcd(ehci); > + void __iomem *non_ehci = hcd->regs; > > portsc = ehci_readl(ehci, &ehci->regs->port_status[port_offset]); > portsc &= ~(PORT_PTS_MSK | PORT_PTS_PTW); > @@ -231,6 +233,8 @@ static void ehci_fsl_setup_phy(struct ehci_hcd *ehci, > portsc |= PORT_PTS_PTW; > /* fall through */ > case FSL_USB2_PHY_UTMI: > + /* enable UTMI PHY */ > + setbits32(non_ehci + FSL_SOC_USB_CTRL, CTRL_UTMI_PHY_EN); > portsc |= PORT_PTS_UTMI; > break; > case FSL_USB2_PHY_NONE: > diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h > index bdf43e2..0e400c2 100644 > --- a/drivers/usb/host/ehci-fsl.h > +++ b/drivers/usb/host/ehci-fsl.h > @@ -45,6 +45,7 @@ > #define FSL_SOC_USB_PRICTRL 0x40c /* NOTE: big-endian */ > #define FSL_SOC_USB_SICTRL 0x410 /* NOTE: big-endian */ > #define FSL_SOC_USB_CTRL 0x500 /* NOTE: big-endian */ > +#define CTRL_UTMI_PHY_EN (1<<9) > #define CTRL_PHY_CLK_VALID (1 << 17) > #define SNOOP_SIZE_2GB 0x1e > #endif /* _EHCI_FSL_H */ -- 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