diff mbox

[8/9] usb: phy: am335x: call usb_gen_phy_init()/usb_gen_phy_shutdown() in am335x_init()/am335x_shutdown()

Message ID 1405675890-8802-9-git-send-email-LW@KARO-electronics.de
State New
Headers show

Commit Message

Lothar Waßmann July 18, 2014, 9:31 a.m. UTC
This patch makes it possible to use the musb driver with HW that
requires external regulators or clocks.

Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
---
 drivers/usb/phy/phy-am335x.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

Felipe Balbi July 18, 2014, 1:57 p.m. UTC | #1
Hi,

On Fri, Jul 18, 2014 at 11:31:29AM +0200, Lothar Waßmann wrote:
> This patch makes it possible to use the musb driver with HW that
> requires external regulators or clocks.

can you provide an example of such HW ? Are you not using the internal
PHYs ?

> Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
> ---
>  drivers/usb/phy/phy-am335x.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/usb/phy/phy-am335x.c b/drivers/usb/phy/phy-am335x.c
> index 6522fa7..de25674 100644
> --- a/drivers/usb/phy/phy-am335x.c
> +++ b/drivers/usb/phy/phy-am335x.c
> @@ -22,6 +22,7 @@ static int am335x_init(struct usb_phy *phy)
>  {
>  	struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
>  
> +	usb_gen_phy_init(phy);
>  	phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, true);
>  	return 0;
>  }
> @@ -31,6 +32,7 @@ static void am335x_shutdown(struct usb_phy *phy)
>  	struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
>  
>  	phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, false);
> +	usb_gen_phy_shutdown(phy);
>  }
>  
>  static int am335x_phy_probe(struct platform_device *pdev)
> -- 
> 1.7.10.4
>
Lothar Waßmann July 21, 2014, 8:03 a.m. UTC | #2
Hi,

> On Fri, Jul 18, 2014 at 11:31:29AM +0200, Lothar Waßmann wrote:
> > This patch makes it possible to use the musb driver with HW that
> > requires external regulators or clocks.
> 
> can you provide an example of such HW ? Are you not using the internal
> PHYs ?
> 
The Ka-Ro electronics TX48 module uses the mmc0_clk pin as VBUSEN
rathern than usb0_drvvbus. This patch makes it possible to use an
external regulator to handle the VBUS switch through the 'vcc-supply'
property of the underlying generic_phy device.

> > Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
> > ---
> >  drivers/usb/phy/phy-am335x.c |    2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/drivers/usb/phy/phy-am335x.c b/drivers/usb/phy/phy-am335x.c
> > index 6522fa7..de25674 100644
> > --- a/drivers/usb/phy/phy-am335x.c
> > +++ b/drivers/usb/phy/phy-am335x.c
> > @@ -22,6 +22,7 @@ static int am335x_init(struct usb_phy *phy)
> >  {
> >  	struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
> >  
> > +	usb_gen_phy_init(phy);
> >  	phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, true);
> >  	return 0;
> >  }
> > @@ -31,6 +32,7 @@ static void am335x_shutdown(struct usb_phy *phy)
> >  	struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
> >  
> >  	phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, false);
> > +	usb_gen_phy_shutdown(phy);
> >  }
> >  
> >  static int am335x_phy_probe(struct platform_device *pdev)
> > -- 
> > 1.7.10.4
> > 
>
Felipe Balbi July 21, 2014, 3:10 p.m. UTC | #3
Hi,,

On Mon, Jul 21, 2014 at 10:03:07AM +0200, Lothar Waßmann wrote:
> Hi,
> 
> > On Fri, Jul 18, 2014 at 11:31:29AM +0200, Lothar Waßmann wrote:
> > > This patch makes it possible to use the musb driver with HW that
> > > requires external regulators or clocks.
> > 
> > can you provide an example of such HW ? Are you not using the internal
> > PHYs ?
> > 
> The Ka-Ro electronics TX48 module uses the mmc0_clk pin as VBUSEN
> rathern than usb0_drvvbus. This patch makes it possible to use an
> external regulator to handle the VBUS switch through the 'vcc-supply'
> property of the underlying generic_phy device.

OK, I get it now. But why would not use usb0_drvvbus ? You could still
route usb0_drvvbus to the regulator enable pin and the regulator would
be enabled for you once correct values are written to the IP's mailbox.

I suppose this has something to do with layout constraints ?

cheers
Lothar Waßmann July 22, 2014, 8:06 a.m. UTC | #4
Hi,

Felipe Balbi wrote:
> Hi,,
> 
> On Mon, Jul 21, 2014 at 10:03:07AM +0200, Lothar Waßmann wrote:
> > Hi,
> > 
> > > On Fri, Jul 18, 2014 at 11:31:29AM +0200, Lothar Waßmann wrote:
> > > > This patch makes it possible to use the musb driver with HW that
> > > > requires external regulators or clocks.
> > > 
> > > can you provide an example of such HW ? Are you not using the internal
> > > PHYs ?
> > > 
> > The Ka-Ro electronics TX48 module uses the mmc0_clk pin as VBUSEN
> > rathern than usb0_drvvbus. This patch makes it possible to use an
> > external regulator to handle the VBUS switch through the 'vcc-supply'
> > property of the underlying generic_phy device.
> 
> OK, I get it now. But why would not use usb0_drvvbus ? You could still
> route usb0_drvvbus to the regulator enable pin and the regulator would
> be enabled for you once correct values are written to the IP's mailbox.
> 
> I suppose this has something to do with layout constraints ?
> 
Yes. The usb0_drvvbus is used for a different purpose.


Lothar Waßmann
Felipe Balbi July 22, 2014, 2:47 p.m. UTC | #5
On Tue, Jul 22, 2014 at 10:06:13AM +0200, Lothar Waßmann wrote:
> Hi,
> 
> Felipe Balbi wrote:
> > Hi,,
> > 
> > On Mon, Jul 21, 2014 at 10:03:07AM +0200, Lothar Waßmann wrote:
> > > Hi,
> > > 
> > > > On Fri, Jul 18, 2014 at 11:31:29AM +0200, Lothar Waßmann wrote:
> > > > > This patch makes it possible to use the musb driver with HW that
> > > > > requires external regulators or clocks.
> > > > 
> > > > can you provide an example of such HW ? Are you not using the internal
> > > > PHYs ?
> > > > 
> > > The Ka-Ro electronics TX48 module uses the mmc0_clk pin as VBUSEN
> > > rathern than usb0_drvvbus. This patch makes it possible to use an
> > > external regulator to handle the VBUS switch through the 'vcc-supply'
> > > property of the underlying generic_phy device.
> > 
> > OK, I get it now. But why would not use usb0_drvvbus ? You could still
> > route usb0_drvvbus to the regulator enable pin and the regulator would
> > be enabled for you once correct values are written to the IP's mailbox.
> > 
> > I suppose this has something to do with layout constraints ?
> > 
> Yes. The usb0_drvvbus is used for a different purpose.

alright, thanks for the info. I'll revisit this in a few days, quite
busy right now and my tree is closed for v3.17 anyway.

cheers
diff mbox

Patch

diff --git a/drivers/usb/phy/phy-am335x.c b/drivers/usb/phy/phy-am335x.c
index 6522fa7..de25674 100644
--- a/drivers/usb/phy/phy-am335x.c
+++ b/drivers/usb/phy/phy-am335x.c
@@ -22,6 +22,7 @@  static int am335x_init(struct usb_phy *phy)
 {
 	struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
 
+	usb_gen_phy_init(phy);
 	phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, true);
 	return 0;
 }
@@ -31,6 +32,7 @@  static void am335x_shutdown(struct usb_phy *phy)
 	struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
 
 	phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, false);
+	usb_gen_phy_shutdown(phy);
 }
 
 static int am335x_phy_probe(struct platform_device *pdev)