mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 05:02:12 +00:00
USB: fsl/ehci: fix failure of checking PHY_CLK_VALID during reinitialization
In case of usb phy reinitialization: e.g. insmod usb-module(usb works well) -> rmmod usb-module -> insmod usb-module It found the PHY_CLK_VALID bit didn't work if it's not with the power-on reset. So we just check PHY_CLK_VALID bit during the stage with POR, this can be met by the tricky of checking FSL_SOC_USB_PRICTRL register. Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2606b28aab
commit
eee41b49b8
@ -264,8 +264,9 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
|
|||||||
if (pdata->have_sysif_regs && pdata->controller_ver &&
|
if (pdata->have_sysif_regs && pdata->controller_ver &&
|
||||||
(phy_mode == FSL_USB2_PHY_ULPI)) {
|
(phy_mode == FSL_USB2_PHY_ULPI)) {
|
||||||
/* check PHY_CLK_VALID to get phy clk valid */
|
/* check PHY_CLK_VALID to get phy clk valid */
|
||||||
if (!spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
|
if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
|
||||||
PHY_CLK_VALID, FSL_USB_PHY_CLK_TIMEOUT, 0)) {
|
PHY_CLK_VALID, FSL_USB_PHY_CLK_TIMEOUT, 0) ||
|
||||||
|
in_be32(non_ehci + FSL_SOC_USB_PRICTRL))) {
|
||||||
printk(KERN_WARNING "fsl-ehci: USB PHY clock invalid\n");
|
printk(KERN_WARNING "fsl-ehci: USB PHY clock invalid\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user