mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 13:54:57 +08:00
powerpc/usb: fix bug of kernel hang when initializing usb
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@freescale.com> Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e90fc3cb08
commit
28c56ea143
@ -216,6 +216,8 @@ static void ehci_fsl_setup_phy(struct ehci_hcd *ehci,
|
|||||||
unsigned int port_offset)
|
unsigned int port_offset)
|
||||||
{
|
{
|
||||||
u32 portsc;
|
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 = ehci_readl(ehci, &ehci->regs->port_status[port_offset]);
|
||||||
portsc &= ~(PORT_PTS_MSK | PORT_PTS_PTW);
|
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;
|
portsc |= PORT_PTS_PTW;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case FSL_USB2_PHY_UTMI:
|
case FSL_USB2_PHY_UTMI:
|
||||||
|
/* enable UTMI PHY */
|
||||||
|
setbits32(non_ehci + FSL_SOC_USB_CTRL, CTRL_UTMI_PHY_EN);
|
||||||
portsc |= PORT_PTS_UTMI;
|
portsc |= PORT_PTS_UTMI;
|
||||||
break;
|
break;
|
||||||
case FSL_USB2_PHY_NONE:
|
case FSL_USB2_PHY_NONE:
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#define FSL_SOC_USB_PRICTRL 0x40c /* NOTE: big-endian */
|
#define FSL_SOC_USB_PRICTRL 0x40c /* NOTE: big-endian */
|
||||||
#define FSL_SOC_USB_SICTRL 0x410 /* NOTE: big-endian */
|
#define FSL_SOC_USB_SICTRL 0x410 /* NOTE: big-endian */
|
||||||
#define FSL_SOC_USB_CTRL 0x500 /* 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 CTRL_PHY_CLK_VALID (1 << 17)
|
||||||
#define SNOOP_SIZE_2GB 0x1e
|
#define SNOOP_SIZE_2GB 0x1e
|
||||||
#endif /* _EHCI_FSL_H */
|
#endif /* _EHCI_FSL_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user