Re: [PATCH 2/3] usb: phy: introduce ->set_vbus() method

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 08, 2013 at 05:56:11PM +0200, Felipe Balbi wrote:
> Hi,
> 
> On Fri, Mar 08, 2013 at 08:37:00PM +0800, Peter Chen wrote:
> > On Fri, Mar 08, 2013 at 01:30:52PM +0200, Felipe Balbi wrote:
> > > this method will be used to enable or disable
> > > the charge pump.
> > > 
> > > Whenever we have DRD devices, we need to be
> > > able to turn VBUS on or off whenever we want.
> > > 
> > > Note that in the ideal case, this would be
> > > controlled by the ID-pin Interrupt, but not
> > > all devices have ID-pin properly routed since
> > > manufacturers can choose to save that trace
> > > if they're building a host-only product out
> > > of a DRD IP.
> > > 
> > > This is also useful during debugging where
> > > we might not have the proper cable hanging
> > > around.
> > > 
> > > Signed-off-by: Felipe Balbi <balbi@xxxxxx>
> > > ---
> > >  include/linux/usb/phy.h | 21 +++++++++++++++++++++
> > >  1 file changed, 21 insertions(+)
> > > 
> > > diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h
> > > index b001dc3..b7c2217 100644
> > > --- a/include/linux/usb/phy.h
> > > +++ b/include/linux/usb/phy.h
> > > @@ -91,6 +91,9 @@ struct usb_phy {
> > >  	int	(*init)(struct usb_phy *x);
> > >  	void	(*shutdown)(struct usb_phy *x);
> > >  
> > > +	/* enable/disable VBUS */
> > > +	int	(*set_vbus)(struct usb_phy *x, int on);
> > > +
> > >  	/* effective for B devices, ignored for A-peripheral */
> > >  	int	(*set_power)(struct usb_phy *x,
> > >  				unsigned mA);
> > > @@ -160,6 +163,24 @@ usb_phy_shutdown(struct usb_phy *x)
> > >  		x->shutdown(x);
> > >  }
> > >  
> > > +static inline int
> > > +usb_phy_vbus_on(struct usb_phy *x)
> > > +{
> > > +	if (!x->set_vbus)
> > > +		return 0;
> > > +
> > > +	return x->set_vbus(x, true);
> > > +}
> > > +
> > > +static inline int
> > > +usb_phy_vbus_off(struct usb_phy *x)
> > > +{
> > > +	if (!x->set_vbus)
> > > +		return 0;
> > > +
> > > +	return x->set_vbus(x, false);
> > > +}
> > > +
> > 
> > What's plan for otg's set_vbus? I suggest using phy's to instead of
> > otg's.
> 

When I think it more, does it work like below:

- If PHY supplies vbus_setting function (like ulpi.c), the callback
is assigned at PHY driver.
- If board supplies vbus on/off function (through gpio), the callback
is assigned at controller driver.
Here vbus setting is USB staff, no limited to PHY.

-- 

Best Regards,
Peter Chen

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux