public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-06-23 21:25 [U-Boot] [PATCH 1/2] usb: host: xhci: make sure to power up PHY Felipe Balbi
@ 2014-06-23 21:25 ` Felipe Balbi
  2014-06-23 21:28   ` Michael Trimarchi
  0 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-06-23 21:25 UTC (permalink / raw)
  To: u-boot

Newer AM437x silicon requires us to explicitly power up
the USB2 PHY. By implementing usb_phy_power() we can
achieve that.

Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 drivers/usb/phy/omap_usb_phy.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/phy/omap_usb_phy.c b/drivers/usb/phy/omap_usb_phy.c
index af46db2..0ed3e70 100644
--- a/drivers/usb/phy/omap_usb_phy.c
+++ b/drivers/usb/phy/omap_usb_phy.c
@@ -222,7 +222,22 @@ static void am437x_enable_usb2_phy2(struct omap_xhci *omap)
 
 void usb_phy_power(int on)
 {
-	return;
+	u32 val;
+
+	/* USB1_CTRL */
+	val = readl(0x44e10628);
+	if (on) {
+		/*
+		 * these bits are re-used on AM437x to power up/down the USB
+		 * CM and OTG PHYs, if we don't toggle them, USB will not be
+		 * functional on newer silicon revisions
+		 */
+		val &= ~0x3;
+	} else {
+		val |= 0x3;
+	}
+
+	writel(val, 0x44e10628);
 }
 #endif /* CONFIG_AM437X_USB2PHY2_HOST */
 
-- 
2.0.0.390.gcb682f8

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-06-23 21:25 ` [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x Felipe Balbi
@ 2014-06-23 21:28   ` Michael Trimarchi
  2014-06-23 21:58     ` Felipe Balbi
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Trimarchi @ 2014-06-23 21:28 UTC (permalink / raw)
  To: u-boot

Hi

Il 23/giu/2014 23:26 "Felipe Balbi" <balbi@ti.com> ha scritto:
>
> Newer AM437x silicon requires us to explicitly power up
> the USB2 PHY. By implementing usb_phy_power() we can
> achieve that.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
>  drivers/usb/phy/omap_usb_phy.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/phy/omap_usb_phy.c
b/drivers/usb/phy/omap_usb_phy.c
> index af46db2..0ed3e70 100644
> --- a/drivers/usb/phy/omap_usb_phy.c
> +++ b/drivers/usb/phy/omap_usb_phy.c
> @@ -222,7 +222,22 @@ static void am437x_enable_usb2_phy2(struct omap_xhci
*omap)
>
>  void usb_phy_power(int on)
>  {
> -       return;
> +       u32 val;
> +
> +       /* USB1_CTRL */
> +       val = readl(0x44e10628);

Can you please describe 0x44e...

> +       if (on) {
> +               /*
> +                * these bits are re-used on AM437x to power up/down the
USB
> +                * CM and OTG PHYs, if we don't toggle them, USB will not
be
> +                * functional on newer silicon revisions
> +                */
> +               val &= ~0x3;
> +       } else {
> +               val |= 0x3;

ditto

> +       }
> +
> +       writel(val, 0x44e10628);

ditto

>  }
>  #endif /* CONFIG_AM437X_USB2PHY2_HOST */
>

Michael

> --
> 2.0.0.390.gcb682f8
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-06-23 21:28   ` Michael Trimarchi
@ 2014-06-23 21:58     ` Felipe Balbi
  2014-06-23 22:02       ` Michael Trimarchi
  0 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-06-23 21:58 UTC (permalink / raw)
  To: u-boot

Hi,

On Mon, Jun 23, 2014 at 11:28:30PM +0200, Michael Trimarchi wrote:
> > @@ -222,7 +222,22 @@ static void am437x_enable_usb2_phy2(struct omap_xhci
> *omap)
> >
> >  void usb_phy_power(int on)
> >  {
> > -       return;
> > +       u32 val;
> > +
> > +       /* USB1_CTRL */
> > +       val = readl(0x44e10628);
> 
> Can you please describe 0x44e...

describe in what way ? The comment right above it, tells you what it is,
so does the comment in the if block. Now, if what you're asking is for
#defines for those constants, sure, I can do that.

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140623/7204a2ad/attachment.pgp>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-06-23 21:58     ` Felipe Balbi
@ 2014-06-23 22:02       ` Michael Trimarchi
  0 siblings, 0 replies; 8+ messages in thread
From: Michael Trimarchi @ 2014-06-23 22:02 UTC (permalink / raw)
  To: u-boot

Hi

Il 23/giu/2014 23:58 "Felipe Balbi" <balbi@ti.com> ha scritto:
>
> Hi,
>
> On Mon, Jun 23, 2014 at 11:28:30PM +0200, Michael Trimarchi wrote:
> > > @@ -222,7 +222,22 @@ static void am437x_enable_usb2_phy2(struct
omap_xhci
> > *omap)
> > >
> > >  void usb_phy_power(int on)
> > >  {
> > > -       return;
> > > +       u32 val;
> > > +
> > > +       /* USB1_CTRL */
> > > +       val = readl(0x44e10628);
> >
> > Can you please describe 0x44e...
>
> describe in what way ? The comment right above it, tells you what it is,
> so does the comment in the if block. Now, if what you're asking is for
> #defines for those constants, sure, I can do that.

Yes, this was the suggestione

>
> --
> balbi

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 1/2] usb: host: xhci: make sure to power up PHY
@ 2014-07-10  4:02 Felipe Balbi
  2014-07-10  4:02 ` [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x Felipe Balbi
  0 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-07-10  4:02 UTC (permalink / raw)
  To: u-boot

some boards won't work if the PHY isn't explicitly
powered up.

Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 drivers/usb/host/xhci-omap.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/host/xhci-omap.c b/drivers/usb/host/xhci-omap.c
index e667810..912b2bd 100644
--- a/drivers/usb/host/xhci-omap.c
+++ b/drivers/usb/host/xhci-omap.c
@@ -98,6 +98,7 @@ static int omap_xhci_core_init(struct omap_xhci *omap)
 {
 	int ret = 0;
 
+	usb_phy_power(1);
 	omap_enable_phy(omap);
 
 	ret = dwc3_core_init(omap->dwc3_reg);
-- 
2.0.0.390.gcb682f8

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-07-10  4:02 [U-Boot] [PATCH 1/2] usb: host: xhci: make sure to power up PHY Felipe Balbi
@ 2014-07-10  4:02 ` Felipe Balbi
  2014-07-10  4:06   ` Felipe Balbi
  0 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-07-10  4:02 UTC (permalink / raw)
  To: u-boot

Newer AM437x silicon requires us to explicitly power up
the USB2 PHY. By implementing usb_phy_power() we can
achieve that.

Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 arch/arm/include/asm/arch-am33xx/hardware_am43xx.h |  5 +++++
 drivers/usb/phy/omap_usb_phy.c                     | 11 ++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h b/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
index b470319..efdecf4 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
@@ -43,6 +43,11 @@
 #define VTP0_CTRL_ADDR			0x44E10E0C
 #define VTP1_CTRL_ADDR			0x48140E10
 
+/* USB CTRL Base Address */
+#define USB1_CTRL			0x44e10628
+#define USB1_CTRL_CM_PWRDN		BIT(0)
+#define USB1_CTRL_OTG_PWRDN		BIT(1)
+
 /* DDR Base address */
 #define DDR_PHY_CMD_ADDR		0x44E12000
 #define DDR_PHY_DATA_ADDR		0x44E120C8
diff --git a/drivers/usb/phy/omap_usb_phy.c b/drivers/usb/phy/omap_usb_phy.c
index af46db2..53778b3 100644
--- a/drivers/usb/phy/omap_usb_phy.c
+++ b/drivers/usb/phy/omap_usb_phy.c
@@ -222,7 +222,16 @@ static void am437x_enable_usb2_phy2(struct omap_xhci *omap)
 
 void usb_phy_power(int on)
 {
-	return;
+	/*
+	 * In order to get USB working on newer AM43xx silicon, we must
+	 * explicitly power the USB PHYs.
+	 */
+	if (on)
+		clrbits_le32(USB1_CTRL, USB1_CTRL_CM_PWRDN |
+				USB1_CTRL_OTG_PWRDN);
+	else
+		setbits_le32(USB1_CTRL, USB1_CTRL_CM_PWRDN |
+				USB1_CTRL_OTG_PWRDN);
 }
 #endif /* CONFIG_AM437X_USB2PHY2_HOST */
 
-- 
2.0.0.390.gcb682f8

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-07-10  4:02 ` [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x Felipe Balbi
@ 2014-07-10  4:06   ` Felipe Balbi
  2014-07-10  7:44     ` Marek Vasut
  0 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-07-10  4:06 UTC (permalink / raw)
  To: u-boot

On Wed, Jul 09, 2014 at 11:02:43PM -0500, Felipe Balbi wrote:
> Newer AM437x silicon requires us to explicitly power up
> the USB2 PHY. By implementing usb_phy_power() we can
> achieve that.
> 
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---

the only change here is the use of {set,clr}bits_le32()

>  arch/arm/include/asm/arch-am33xx/hardware_am43xx.h |  5 +++++
>  drivers/usb/phy/omap_usb_phy.c                     | 11 ++++++++++-
>  2 files changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h b/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
> index b470319..efdecf4 100644
> --- a/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
> +++ b/arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
> @@ -43,6 +43,11 @@
>  #define VTP0_CTRL_ADDR			0x44E10E0C
>  #define VTP1_CTRL_ADDR			0x48140E10
>  
> +/* USB CTRL Base Address */
> +#define USB1_CTRL			0x44e10628
> +#define USB1_CTRL_CM_PWRDN		BIT(0)
> +#define USB1_CTRL_OTG_PWRDN		BIT(1)
> +
>  /* DDR Base address */
>  #define DDR_PHY_CMD_ADDR		0x44E12000
>  #define DDR_PHY_DATA_ADDR		0x44E120C8
> diff --git a/drivers/usb/phy/omap_usb_phy.c b/drivers/usb/phy/omap_usb_phy.c
> index af46db2..53778b3 100644
> --- a/drivers/usb/phy/omap_usb_phy.c
> +++ b/drivers/usb/phy/omap_usb_phy.c
> @@ -222,7 +222,16 @@ static void am437x_enable_usb2_phy2(struct omap_xhci *omap)
>  
>  void usb_phy_power(int on)
>  {
> -	return;
> +	/*
> +	 * In order to get USB working on newer AM43xx silicon, we must
> +	 * explicitly power the USB PHYs.
> +	 */
> +	if (on)
> +		clrbits_le32(USB1_CTRL, USB1_CTRL_CM_PWRDN |
> +				USB1_CTRL_OTG_PWRDN);
> +	else
> +		setbits_le32(USB1_CTRL, USB1_CTRL_CM_PWRDN |
> +				USB1_CTRL_OTG_PWRDN);
>  }
>  #endif /* CONFIG_AM437X_USB2PHY2_HOST */
>  
> -- 
> 2.0.0.390.gcb682f8
> 

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140709/972a12aa/attachment.pgp>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x
  2014-07-10  4:06   ` Felipe Balbi
@ 2014-07-10  7:44     ` Marek Vasut
  0 siblings, 0 replies; 8+ messages in thread
From: Marek Vasut @ 2014-07-10  7:44 UTC (permalink / raw)
  To: u-boot

On Thursday, July 10, 2014 at 06:06:06 AM, Felipe Balbi wrote:
> On Wed, Jul 09, 2014 at 11:02:43PM -0500, Felipe Balbi wrote:
> > Newer AM437x silicon requires us to explicitly power up
> > the USB2 PHY. By implementing usb_phy_power() we can
> > achieve that.
> > 
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > ---
> 
> the only change here is the use of {set,clr}bits_le32()

Well, given the pressure before release, I picked the previous one (without 
clrsetbits). I think the original will also generate less code, so let's keep it 
at that. Sorry I've been pushing you around.

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-07-10  7:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-10  4:02 [U-Boot] [PATCH 1/2] usb: host: xhci: make sure to power up PHY Felipe Balbi
2014-07-10  4:02 ` [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x Felipe Balbi
2014-07-10  4:06   ` Felipe Balbi
2014-07-10  7:44     ` Marek Vasut
  -- strict thread matches above, loose matches on Subject: below --
2014-06-23 21:25 [U-Boot] [PATCH 1/2] usb: host: xhci: make sure to power up PHY Felipe Balbi
2014-06-23 21:25 ` [U-Boot] [PATCH 2/2] usb: phy: omap_usb_phy: implement usb_phy_power() for AM437x Felipe Balbi
2014-06-23 21:28   ` Michael Trimarchi
2014-06-23 21:58     ` Felipe Balbi
2014-06-23 22:02       ` Michael Trimarchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox