* [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 @ 2012-08-10 10:48 Shengzhou Liu 2012-08-10 10:48 ` [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock Shengzhou Liu 2012-08-10 12:57 ` [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 Kumar Gala 0 siblings, 2 replies; 8+ messages in thread From: Shengzhou Liu @ 2012-08-10 10:48 UTC (permalink / raw) To: linuxppc-dev, linux-usb; +Cc: Shengzhou Liu Add the missing usb controller version info and port0, which is required during setup usb phy. Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> --- arch/powerpc/boot/dts/fsl/p4080si-post.dtsi | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi index 8d35d2c..4f9c9f6 100644 --- a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi @@ -345,6 +345,13 @@ /include/ "qoriq-duart-1.dtsi" /include/ "qoriq-gpio-0.dtsi" /include/ "qoriq-usb2-mph-0.dtsi" + usb@210000 { + compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; + port0; + }; /include/ "qoriq-usb2-dr-0.dtsi" + usb@211000 { + compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; + }; /include/ "qoriq-sec4.0-0.dtsi" }; -- 1.6.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-08-10 10:48 [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 Shengzhou Liu @ 2012-08-10 10:48 ` Shengzhou Liu 2012-08-10 13:50 ` Kumar Gala 2012-08-21 2:31 ` Tabi Timur-B04825 2012-08-10 12:57 ` [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 Kumar Gala 1 sibling, 2 replies; 8+ messages in thread From: Shengzhou Liu @ 2012-08-10 10:48 UTC (permalink / raw) To: linuxppc-dev, linux-usb; +Cc: Shengzhou Liu when missing USB PHY clock, kernel booting up will hang during USB initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid CPU hanging in this case. Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> --- drivers/usb/host/ehci-fsl.c | 63 ++++++++++++++++++++++++++++++------------ drivers/usb/host/ehci-fsl.h | 1 + 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index b7451b2..aeb6d03 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -210,11 +210,11 @@ static void usb_hcd_fsl_remove(struct usb_hcd *hcd, usb_put_hcd(hcd); } -static void ehci_fsl_setup_phy(struct usb_hcd *hcd, +static int ehci_fsl_setup_phy(struct usb_hcd *hcd, enum fsl_usb2_phy_modes phy_mode, unsigned int port_offset) { - u32 portsc, temp; + u32 portsc, timeout; struct ehci_hcd *ehci = hcd_to_ehci(hcd); void __iomem *non_ehci = hcd->regs; struct device *dev = hcd->self.controller; @@ -232,9 +232,15 @@ static void ehci_fsl_setup_phy(struct usb_hcd *hcd, case FSL_USB2_PHY_ULPI: if (pdata->controller_ver) { /* controller version 1.6 or above */ - temp = in_be32(non_ehci + FSL_SOC_USB_CTRL); - out_be32(non_ehci + FSL_SOC_USB_CTRL, temp | - USB_CTRL_USB_EN | ULPI_PHY_CLK_SEL); + setbits32(non_ehci + FSL_SOC_USB_CTRL, + ULPI_PHY_CLK_SEL); + /* + * Due to controller issue of PHY_CLK_VALID in ULPI + * mode, we set USB_CTRL_USB_EN before checking + * PHY_CLK_VALID, otherwise PHY_CLK_VALID doesn't work. + */ + clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL, + UTMI_PHY_EN, USB_CTRL_USB_EN); } portsc |= PORT_PTS_ULPI; break; @@ -247,9 +253,7 @@ static void ehci_fsl_setup_phy(struct usb_hcd *hcd, case FSL_USB2_PHY_UTMI: if (pdata->controller_ver) { /* controller version 1.6 or above */ - temp = in_be32(non_ehci + FSL_SOC_USB_CTRL); - out_be32(non_ehci + FSL_SOC_USB_CTRL, temp | - UTMI_PHY_EN | USB_CTRL_USB_EN); + setbits32(non_ehci + FSL_SOC_USB_CTRL, UTMI_PHY_EN); mdelay(FSL_UTMI_PHY_DLY); /* Delay for UTMI PHY CLK to become stable - 10ms*/ } @@ -262,23 +266,39 @@ static void ehci_fsl_setup_phy(struct usb_hcd *hcd, case FSL_USB2_PHY_NONE: break; } + + if ((pdata->controller_ver) && ((phy_mode == FSL_USB2_PHY_ULPI) || + (phy_mode == FSL_USB2_PHY_UTMI))) { + for (timeout = 1000; timeout > 0; timeout--) { + /* check PHY_CLK_VALID to get phy clk valid */ + if (in_be32(non_ehci + FSL_SOC_USB_CTRL) + & PHY_CLK_VALID) + break; + udelay(1); + } + if (timeout == 0) { + printk(KERN_WARNING "fsl-ehci: USB PHY clock invalid\n"); + return -EINVAL; + } + } + ehci_writel(ehci, portsc, &ehci->regs->port_status[port_offset]); + + if (phy_mode != FSL_USB2_PHY_ULPI) + setbits32(non_ehci + FSL_SOC_USB_CTRL, USB_CTRL_USB_EN); + + return 0; } -static void ehci_fsl_usb_setup(struct ehci_hcd *ehci) +static int ehci_fsl_usb_setup(struct ehci_hcd *ehci) { struct usb_hcd *hcd = ehci_to_hcd(ehci); struct fsl_usb2_platform_data *pdata; void __iomem *non_ehci = hcd->regs; - u32 temp; pdata = hcd->self.controller->platform_data; - /* Enable PHY interface in the control reg. */ if (pdata->have_sysif_regs) { - temp = in_be32(non_ehci + FSL_SOC_USB_CTRL); - out_be32(non_ehci + FSL_SOC_USB_CTRL, temp | 0x00000004); - /* * Turn on cache snooping hardware, since some PowerPC platforms * wholly rely on hardware to deal with cache coherent @@ -293,7 +313,8 @@ static void ehci_fsl_usb_setup(struct ehci_hcd *ehci) if ((pdata->operating_mode == FSL_USB2_DR_HOST) || (pdata->operating_mode == FSL_USB2_DR_OTG)) - ehci_fsl_setup_phy(hcd, pdata->phy_mode, 0); + if (ehci_fsl_setup_phy(hcd, pdata->phy_mode, 0)) + return -EINVAL; if (pdata->operating_mode == FSL_USB2_MPH_HOST) { unsigned int chip, rev, svr; @@ -307,9 +328,12 @@ static void ehci_fsl_usb_setup(struct ehci_hcd *ehci) ehci->has_fsl_port_bug = 1; if (pdata->port_enables & FSL_USB2_PORT0_ENABLED) - ehci_fsl_setup_phy(hcd, pdata->phy_mode, 0); + if (ehci_fsl_setup_phy(hcd, pdata->phy_mode, 0)) + return -EINVAL; + if (pdata->port_enables & FSL_USB2_PORT1_ENABLED) - ehci_fsl_setup_phy(hcd, pdata->phy_mode, 1); + if (ehci_fsl_setup_phy(hcd, pdata->phy_mode, 1)) + return -EINVAL; } if (pdata->have_sysif_regs) { @@ -322,12 +346,15 @@ static void ehci_fsl_usb_setup(struct ehci_hcd *ehci) #endif out_be32(non_ehci + FSL_SOC_USB_SICTRL, 0x00000001); } + + return 0; } /* called after powerup, by probe or system-pm "wakeup" */ static int ehci_fsl_reinit(struct ehci_hcd *ehci) { - ehci_fsl_usb_setup(ehci); + if (ehci_fsl_usb_setup(ehci)) + return -EINVAL; ehci_port_power(ehci, 0); return 0; diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h index 8840368..dbd292e 100644 --- a/drivers/usb/host/ehci-fsl.h +++ b/drivers/usb/host/ehci-fsl.h @@ -61,4 +61,5 @@ #define PLL_RESET (1<<8) #define UTMI_PHY_EN (1<<9) #define ULPI_PHY_CLK_SEL (1<<10) +#define PHY_CLK_VALID (1<<17) #endif /* _EHCI_FSL_H */ -- 1.6.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-08-10 10:48 ` [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock Shengzhou Liu @ 2012-08-10 13:50 ` Kumar Gala 2012-08-13 3:01 ` Liu Shengzhou-B36685 2012-08-21 2:31 ` Tabi Timur-B04825 1 sibling, 1 reply; 8+ messages in thread From: Kumar Gala @ 2012-08-10 13:50 UTC (permalink / raw) To: Shengzhou Liu; +Cc: gregkh, linux-usb, linuxppc-dev@lists.ozlabs.org list On Aug 10, 2012, at 5:48 AM, Shengzhou Liu wrote: > when missing USB PHY clock, kernel booting up will hang during USB > initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid > CPU hanging in this case. >=20 > Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> > --- > drivers/usb/host/ehci-fsl.c | 63 = ++++++++++++++++++++++++++++++------------ > drivers/usb/host/ehci-fsl.h | 1 + > 2 files changed, 46 insertions(+), 18 deletions(-) I assume this should be considered a bug fix and be looked at for = inclusion in v3.6? - k= ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-08-10 13:50 ` Kumar Gala @ 2012-08-13 3:01 ` Liu Shengzhou-B36685 2012-08-21 1:22 ` Kumar Gala 0 siblings, 1 reply; 8+ messages in thread From: Liu Shengzhou-B36685 @ 2012-08-13 3:01 UTC (permalink / raw) To: Kumar Gala Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org list > -----Original Message----- > From: Kumar Gala [mailto:galak@kernel.crashing.org] > Sent: Friday, August 10, 2012 9:50 PM > To: Liu Shengzhou-B36685 > Cc: linuxppc-dev@lists.ozlabs.org list; linux-usb@vger.kernel.org; > gregkh@linuxfoundation.org > Subject: Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing US= B PHY > clock >=20 >=20 > On Aug 10, 2012, at 5:48 AM, Shengzhou Liu wrote: >=20 > > when missing USB PHY clock, kernel booting up will hang during USB > > initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid CPU > > hanging in this case. > > > > Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> > > --- > > drivers/usb/host/ehci-fsl.c | 63 ++++++++++++++++++++++++++++++------= ----- > - > > drivers/usb/host/ehci-fsl.h | 1 + > > 2 files changed, 46 insertions(+), 18 deletions(-) >=20 > I assume this should be considered a bug fix and be looked at for inclusi= on in > v3.6? >=20 > - k [Shengzhou] Yes.=20 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-08-13 3:01 ` Liu Shengzhou-B36685 @ 2012-08-21 1:22 ` Kumar Gala 2012-08-21 14:33 ` Alan Stern 0 siblings, 1 reply; 8+ messages in thread From: Kumar Gala @ 2012-08-21 1:22 UTC (permalink / raw) To: gregkh; +Cc: Liu Shengzhou-B36685, linux-usb, linuxppc-dev@lists.ozlabs.org list On Aug 12, 2012, at 10:01 PM, Liu Shengzhou-B36685 wrote: >=20 >=20 >> -----Original Message----- >> From: Kumar Gala [mailto:galak@kernel.crashing.org] >> Sent: Friday, August 10, 2012 9:50 PM >> To: Liu Shengzhou-B36685 >> Cc: linuxppc-dev@lists.ozlabs.org list; linux-usb@vger.kernel.org; >> gregkh@linuxfoundation.org >> Subject: Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when = missing USB PHY >> clock >>=20 >>=20 >> On Aug 10, 2012, at 5:48 AM, Shengzhou Liu wrote: >>=20 >>> when missing USB PHY clock, kernel booting up will hang during USB >>> initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid = CPU >>> hanging in this case. >>>=20 >>> Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> >>> --- >>> drivers/usb/host/ehci-fsl.c | 63 = ++++++++++++++++++++++++++++++----------- >> - >>> drivers/usb/host/ehci-fsl.h | 1 + >>> 2 files changed, 46 insertions(+), 18 deletions(-) >>=20 >> I assume this should be considered a bug fix and be looked at for = inclusion in >> v3.6? >>=20 >> - k > [Shengzhou] Yes.=20 Greg, ping? - k ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-08-21 1:22 ` Kumar Gala @ 2012-08-21 14:33 ` Alan Stern 0 siblings, 0 replies; 8+ messages in thread From: Alan Stern @ 2012-08-21 14:33 UTC (permalink / raw) To: Kumar Gala Cc: gregkh, linux-usb, linuxppc-dev@lists.ozlabs.org list, Liu Shengzhou-B36685 On Mon, 20 Aug 2012, Kumar Gala wrote: > >> Subject: Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY > >> clock > >> > >> > >> On Aug 10, 2012, at 5:48 AM, Shengzhou Liu wrote: > >> > >>> when missing USB PHY clock, kernel booting up will hang during USB > >>> initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid CPU > >>> hanging in this case. > >>> > >>> Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> > >>> --- > >>> drivers/usb/host/ehci-fsl.c | 63 ++++++++++++++++++++++++++++++----------- > >> - > >>> drivers/usb/host/ehci-fsl.h | 1 + > >>> 2 files changed, 46 insertions(+), 18 deletions(-) > >> > >> I assume this should be considered a bug fix and be looked at for inclusion in > >> v3.6? > >> > >> - k > > [Shengzhou] Yes. > > Greg, > > ping? Greg is away on vacation for the rest of this week. Alan Stern ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-08-10 10:48 ` [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock Shengzhou Liu 2012-08-10 13:50 ` Kumar Gala @ 2012-08-21 2:31 ` Tabi Timur-B04825 1 sibling, 0 replies; 8+ messages in thread From: Tabi Timur-B04825 @ 2012-08-21 2:31 UTC (permalink / raw) To: Liu Shengzhou-B36685 Cc: linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org On Fri, Aug 10, 2012 at 5:48 AM, Shengzhou Liu <Shengzhou.Liu@freescale.com> wrote: > + for (timeout =3D 1000; timeout > 0; timeout--) { > + /* check PHY_CLK_VALID to get phy clk valid */ > + if (in_be32(non_ehci + FSL_SOC_USB_CTRL) > + & PHY_CLK_VALID) > + break; > + udelay(1); > + } Use spin_event_timeout() instead. --=20 Timur Tabi Linux kernel developer at Freescale= ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 2012-08-10 10:48 [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 Shengzhou Liu 2012-08-10 10:48 ` [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock Shengzhou Liu @ 2012-08-10 12:57 ` Kumar Gala 1 sibling, 0 replies; 8+ messages in thread From: Kumar Gala @ 2012-08-10 12:57 UTC (permalink / raw) To: Shengzhou Liu; +Cc: linux-usb, linuxppc-dev On Aug 10, 2012, at 5:48 AM, Shengzhou Liu wrote: > Add the missing usb controller version info and port0, which is > required during setup usb phy. > > Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> > --- > arch/powerpc/boot/dts/fsl/p4080si-post.dtsi | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) applied to merge - k ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-08-21 14:40 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-10 10:48 [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 Shengzhou Liu 2012-08-10 10:48 ` [PATCH 2/2] powerpc/usb: fix bug of CPU hang when missing USB PHY clock Shengzhou Liu 2012-08-10 13:50 ` Kumar Gala 2012-08-13 3:01 ` Liu Shengzhou-B36685 2012-08-21 1:22 ` Kumar Gala 2012-08-21 14:33 ` Alan Stern 2012-08-21 2:31 ` Tabi Timur-B04825 2012-08-10 12:57 ` [PATCH 1/2] powerpc/p4080ds: dts - add usb controller version info and port0 Kumar Gala
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).