Re: [PATCH v2 06/22] usb: common: add API to get usb otg features from device tree

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

 




On Tue, 9 Jun 2015 22:15:53 +0800
Li Jun <b47624@xxxxxxxxxxxxx> wrote:

> On Tue, Jun 09, 2015 at 03:55:29PM +0300, Roger Quadros wrote:
> > Hi,
> > 
> > On Mon, 8 Jun 2015 23:02:01 +0800
> > Li Jun <jun.li@xxxxxxxxxxxxx> wrote:
> > 
> > > Check property of usb hardware to get otg version and if SRP, HNP and ADP
> > > are supported.
> > > 
> > > Signed-off-by: Li Jun <jun.li@xxxxxxxxxxxxx>
> > > ---
> > >  drivers/usb/common/common.c | 64 +++++++++++++++++++++++++++++++++++++++++++++
> > >  include/linux/usb/of.h      | 20 ++++++++++++++
> > >  2 files changed, 84 insertions(+)
> > > 
> > > diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
> > > index b530fd4..7b0594b 100644
> > > --- a/drivers/usb/common/common.c
> > > +++ b/drivers/usb/common/common.c
> > > @@ -154,6 +154,70 @@ bool of_usb_host_tpl_support(struct device_node *np)
> > >  	return false;
> > >  }
> > >  EXPORT_SYMBOL_GPL(of_usb_host_tpl_support);
> > > +
> > > +/**
> > > + * of_usb_otg_srp_support -  to get if otg srp is supported by the otg controller
> > 
> > This is not really about otg controller supporting SRP but whether
> > the DT user wants it enabled or not.
> > 
> Sorry, correct my precious answer, this is about if otg controller can support
> SRP. Meanwhile DT user can disable it via this property even the HW has this
> capability.

Whether controller supports any capability shouldn't come from DT but from its
hardware capability registers.

If you want to disable any feature from DT the DT property will have to be called
disable-<foo> rather than <foo>-support.

cheers,
-roger

> 
> Li Jun
> > IMO this function should be named of_usb_get_otg_srp_enable()
> > 
> > > + * @np: Pointer to the given device_node
> > > + *
> > > + * The function gets if the otg port supports SRP
> > > + */
> > > +bool of_usb_otg_srp_support(struct device_node *np)
> > > +{
> > > +	if (of_find_property(np, "srp-support", NULL))
> > > +		return true;
> > > +
> > > +	return false;
> > > +}
> > > +EXPORT_SYMBOL_GPL(of_usb_otg_srp_support);
> > > +
> > > +/**
> > > + * of_usb_otg_hnp_support -  to get if otg hnp is supported by the otg controller
> > > + * @np: Pointer to the given device_node
> > > + *
> > > + * The function gets if the otg port supports HNP
> > > + */
> > > +bool of_usb_otg_hnp_support(struct device_node *np)
> > > +{
> > > +	if (of_find_property(np, "hnp-support", NULL))
> > > +		return true;
> > > +
> > > +	return false;
> > > +}
> > > +EXPORT_SYMBOL_GPL(of_usb_otg_hnp_support);
> > > +
> > > +/**
> > > + * of_usb_otg_adp_support -  to get if otg adp is supported by the otg controller
> > > + * @np: Pointer to the given device_node
> > > + *
> > > + * The function gets if the otg port supports ADP
> > > + */
> > > +bool of_usb_otg_adp_support(struct device_node *np)
> > > +{
> > > +	if (of_find_property(np, "adp-support", NULL))
> > > +		return true;
> > > +
> > > +	return false;
> > > +}
> > > +EXPORT_SYMBOL_GPL(of_usb_otg_adp_support);
> > > +
> > > +/**
> > > + * of_usb_otg_rev_number -  to get the otg release number the device is
> > > + * compliant with.
> > > + * @np: Pointer to the given device_node
> > > + *
> > > + * The function gets OTG and EH supplement release number in binary-coded
> > > + * decimal (i.e. 2.0 is 0200H).
> > > + */
> > > +int of_usb_otg_rev_number(struct device_node *np)
> > 
> > how about of_usb_get_otg_rev()?
> > 
> > > +{
> > > +	u32 otg_rev;
> > > +
> > > +	if (!of_property_read_u32(np, "otg-rev", &otg_rev))
> > > +		return otg_rev;
> > > +
> > > +	return 0;
> > > +}
> > > +EXPORT_SYMBOL_GPL(of_usb_otg_rev_number);
> > >  #endif
> > >  
> > 
> > cheers,
> > -roger

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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux