devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matt Porter <matt.porter-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Devicetree List
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Linux USB List
	<linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>,
	Matthijs Kooijman <matthijs-gZv8Wpyq0Kk@public.gmane.org>,
	Paul Zimmerman <paulz-HKixBCOQz3hWk0Htik3J/w@public.gmane.org>,
	Linux ARM Kernel List
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [RFC] Does PHY UTMI data width belong to DWC2 or PHY binding?
Date: Fri, 25 Oct 2013 09:33:01 -0400	[thread overview]
Message-ID: <20131025133301.GC29341@beef> (raw)
In-Reply-To: <5268AE67.8060902-l0cyMroinI0@public.gmane.org>

On Thu, Oct 24, 2013 at 10:51:43AM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Wednesday 23 October 2013 08:12 PM, Matt Porter wrote:
> > On Tue, Oct 22, 2013 at 04:38:52PM -0500, Rob Herring wrote:
> >> On 10/22/2013 06:25 AM, Matt Porter wrote:
> >>> On Tue, Oct 22, 2013 at 12:48:29PM +0200, Matthijs Kooijman wrote:
> >>>> Hi Kishon,
> >>>>
> >>>> On Mon, Oct 21, 2013 at 02:57:26PM +0530, Kishon Vijay Abraham I wrote:
> >>>>> I think it makes sense to keep the data width property in the dwc2 node itself.
> >>>>> I mean it describes how the dwc2 IP is configured in that particular SoC (given
> >>>>> that it can be either <8> or <16>).
> >>>> If I'm reading the RT3052 datasheet correctly (GHWCFG4 register), the IP
> >>>> can be configured for 8, 16 or 8 _and_ 16. In the latter case, the "8
> >>>> and 16 supported" would make sense as a property of dwc2 (though this
> >>>> value should be autodetectable through GHWCFG4), while the actual 8 or
> >>>> 16 supported by the PHY would make sense as property of a phy.
> >>>
> >>> There would be no value in adding a property for an already detectable
> >>> value to dwc2's binding. To be honest, it's pretty much useless
> >>> information due to the existence of the "8 and 16" option.
> >>>
> >>>> Note sure if this is really useful in practice as well, or if just
> >>>> setting the actual width to use on dwc2 makes more sense...
> >>>
> >>> The GHWCFG4 information itself is not useful in practice, as described
> >>> in the original thread: https://lkml.org/lkml/2013/10/10/477
> >>>
> >>> It's certainly useful in practice to have this width property in either
> >>> the dwc2 or the phy binding. One can make a case for either. As I
> >>> mentioned in the original post, if we put it in the phy binding we'll be
> >>> updating the generic phy binding. We'll then need an api added into the
> >>> generic phy framework to fetch the width of a phy.
> >>>
> >>> Both cases are doable and trivial, we just need the canonical decision
> >>> from a DT maintainer as to where the property belongs. Given that they
> >>> are in ARM ksummit, I'm not expecting to hear anything right this
> >>> moment. :)
> >>
> >> The host can support both, so it is not a property of the host and is a
> >> property of the phy. It is no different than what mode a SPI slave
> >> requires or whether an i2c slave supports 8 or 10-bit addressing. Those
> >> examples are all 1 to many rather than 1 to 1 where it doesn't really
> >> matter, but the same logic applies.
> > 
> > Makes good sense, thanks.
> > 
> > In this case, given the PHY ownership of width, we can completely avoid
> > any DT properties. The generic phy compliant BCM Kona phy driver can
> > report via the generic phy framework that it is 8-bit wide. There's no
> > support for this type of thing now but it's pretty trivial to add.
> > 
> > I went ahead and did a quick proof-of-concept that adds a free-form
> > phy attributes struct for the generic phy. Given that generic phys can
> > be for any transmission technology this could be filled with a jumble
> > unrelated and often unpopulated attributes over time. In any case, the
> > below patch allows the phy provider to choose to specify utmi_width and
> > a controller driver that cares can use phy_get_attrs() to fetch the
> > optional phy attributes and use the utmi_width field if applicable.
> > 
> > Kishon: I'll start a separate thread to discuss what approach you'd like
> > to see in the generic phy framework to manage this.
> > 
> > -Matt
> > 
> > diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> > index 6d72269..b763d7b 100644
> > --- a/include/linux/phy/phy.h
> > +++ b/include/linux/phy/phy.h
> > @@ -38,6 +38,14 @@ struct phy_ops {
> >  };
> > 
> >  /**
> > + * struct phy_attrs - represents phy attributes
> > + * @utmi_width: Data path width implemented by UTMI PHY
> > + */
> > +struct phy_attrs {
> > +	int			utmi_width;
> > +};
> > +
> > +/**
> >   * struct phy - represents the phy device
> >   * @dev: phy device
> >   * @id: id of the phy device
> > @@ -51,6 +59,7 @@ struct phy {
> >  	struct device		dev;
> >  	int			id;
> >  	const struct phy_ops	*ops;
> > +	struct phy_attrs	*attrs;
> >  	struct phy_init_data	*init_data;
> >  	struct mutex		mutex;
> >  	int			init_count;
> > @@ -127,6 +136,9 @@ int phy_init(struct phy *phy);
> >  int phy_exit(struct phy *phy);
> >  int phy_power_on(struct phy *phy);
> >  int phy_power_off(struct phy *phy);
> > +static inline struct phy_attrs *phy_get_attrs(struct phy *phy) {
> > +	return phy->attrs;
> > +};
> 
> I'd prefer to have phy_set_bus_width and phy_get_bus_width instead.

Ok, will incorporate this. Thanks.

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

      parent reply	other threads:[~2013-10-25 13:33 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-18 14:12 [RFC] Does PHY UTMI data width belong to DWC2 or PHY binding? Matt Porter
2013-10-21  9:27 ` Kishon Vijay Abraham I
     [not found]   ` <5264F37E.9060307-l0cyMroinI0@public.gmane.org>
2013-10-22 10:48     ` Matthijs Kooijman
     [not found]       ` <20131022104829.GF15425-tJobPqrNDpleFRaWBN1JIYg6o0x57dKM8/qWW+O4k6E@public.gmane.org>
2013-10-22 11:25         ` Matt Porter
2013-10-22 21:38           ` Rob Herring
     [not found]             ` <5266F06C.2080701-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-10-23 14:42               ` Matt Porter
2013-10-23 18:11                 ` Felipe Balbi
2013-10-23 20:07                   ` Matt Porter
2013-10-23 21:29                 ` Paul Zimmerman
     [not found]                   ` <A2CA0424C0A6F04399FB9E1CD98E030458E1DB5B-Yu2iAY70zvrYN67daEjeMPufCSb+aD3WLzEdoUbNIic@public.gmane.org>
2013-10-25 13:31                     ` Matt Porter
2013-10-24  5:21                 ` Kishon Vijay Abraham I
     [not found]                   ` <5268AE67.8060902-l0cyMroinI0@public.gmane.org>
2013-10-25 13:33                     ` Matt Porter [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131025133301.GC29341@beef \
    --to=matt.porter-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=balbi-l0cyMroinI0@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=kishon-l0cyMroinI0@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=matthijs-gZv8Wpyq0Kk@public.gmane.org \
    --cc=paulz-HKixBCOQz3hWk0Htik3J/w@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).