linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Guenter Roeck <linux@roeck-us.net>,
	Rob Herring <robh+dt@kernel.org>,
	Tobias Schramm <t.schramm@manjaro.org>,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH 2/4] usb: typec: Add typec_port_register_altmodes_from_fwnode()
Date: Wed, 12 Aug 2020 15:49:55 +0300	[thread overview]
Message-ID: <20200812124955.GB1169992@kuha.fi.intel.com> (raw)
In-Reply-To: <6c223f20-cf63-392e-f694-869cb231c46d@redhat.com>

On Wed, Aug 12, 2020 at 10:36:32AM +0200, Hans de Goede wrote:
> Hi,
> 
> On 8/11/20 4:38 PM, Heikki Krogerus wrote:
> > Hi,
> > 
> > > > > +void typec_port_register_altmodes_from_fwnode(struct typec_port *port,
> > > > > +	const struct typec_altmode_ops *ops, void *drvdata,
> > > > > +	struct typec_altmode **altmodes, size_t n,
> > > > > +	struct fwnode_handle *fwnode)
> > > > > +{
> > > > > +	struct fwnode_handle *altmodes_node, *child;
> > > > > +	struct typec_altmode_desc desc;
> > > > > +	struct typec_altmode *alt;
> > > > > +	size_t index = 0;
> > > > > +	u32 svid, vdo;
> > > > > +	int ret;
> > > > > +
> > > > > +	altmodes_node = fwnode_get_named_child_node(fwnode, "altmodes");
> > > > > +	if (!altmodes_node)
> > > > > +		return;
> > > > 
> > > > Do we need that? Why not just make the sub-nodes describing the
> > > > alternate modes direct children of the connector node instead of
> > > > grouping them under a special sub-node?
> > > 
> > > If you envision how this will look in e.g. DTS sources then I think
> > > you will see that this grouping keeps the DTS source code more
> > > readable. Grouping things together like this is somewhat normal in
> > > devicetree files. E.g. PMIC's or other regulator providers typical
> > > have a "regulators" node grouping all their regulators; and also the OF
> > > graph bindings which are used in the USB-connector node start with a
> > > "ports" parent / grouping node.
> > > 
> > > > If the child node of the connector has device properties "svid" and
> > > > "vdo" then it is an alt mode that the connector supports, and it can't
> > > > be anything else, no?
> > > 
> > > If you want to get rid of the altmodes parent/grouping node, then the
> > > usual way to do this would be to add a compatible string to the nodes,
> > > rather then check for the existence of some properties.
> > 
> > I'm looking at this from ACPI PoW. We do not have compatible string in
> > ACPI (and in case you are wondering, the _HID PRP0001 is not a
> > reliable solution for that).
> 
> Note my main use-case for this is the ACPI case too, remember the
> infamous drivers/platform/x86/intel_cht_int33fe_typec.c that is my
> main consumer for this patch. Although there the info is lacking in ACPI
> so I need to inject it with c-code.
> 
> > If you wish to group the altmodes under a subnode, then that's fine, but
> > the "altmodes" node will need to be optional, just like the "ports"
> > OF-graph node is optional. So we need to be able to support systems
> > where the alternate mode subnodes are directly under the connector as
> > well.
> 
> So for the ports case, AFAIK not having a ports subnode to group them
> is only used in the case there are no other type of subnodes.
> 
> With the existing usb-connector devicetree-bindings we will have both
> ports subnodes and altmode subnodes. The usb-connector devicetree-bindings
> already specify that the port subnodes *must* be grouped together under
> a single ports subnode (for usb-connector nodes).
> 
> So it seems logical and much cleaner to me to also group the altmodes
> together under an altmodes subnode. This also solves the problem of
> having to due heuristics to tell different kinds of subnodes apart.
> 
> Question: why do you write: "we need to be able to support systems
> where the alternate mode subnodes are directly under the connector as
> well" are there already systems out there (or on their way) which
> contain ACPI table which contain a fwnode adhering to the usb-connector
> bindings + having subnodes which set a svid + vdo ?

There are indeed platforms on their way, but I'll see if I can still
influence what goes into the ACPI tables of those platforms.

> Because unless such systems already exist I don't see why we need to
> be able to support them ?  New systems can use whatever scheme we
> can come-up with and unless existing systems already have what we
> need, except for the altmodes grouping node, then we will need some
> translating code which generates the expected swnodes anyways and
> then the translator can easily inject the grouping node.
> 
> So I do not see why we would " need to be able to support systems
> where the alternate mode subnodes are directly under the connector as
> well" ?
> 
> If you insist I can make the altmodes node optional and simply
> skip any child nodes which do not have both a svid and a vdo
> property, but having the subnode (and then logging an error on
> missing svid or vdo props) seems cleaner to me.

I'm trying to get the way the USB Type-C connectors are described
in ACPI (including the alternate modes) documented somewhere. I think
I already mentioned that to you already. There is now a discussion
with our Windows folks how to move forward with that. In any case,
additional nodes like that "altmodes" node are really problematic in
Windows because of way they handle the nodes, and to be honest, I
don't see any way I could convince those guys to accept it.

But all that is really not your problem. I have now a feeling that the
way we will end up describing the alternate modes in ACPI will not be
compatible with DT :-(. So I guess we can just go ahead with this, and
then add support for ACPI later?

thanks,

-- 
heikki

  reply	other threads:[~2020-08-12 12:50 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-14 11:36 PATCH 0/4] usbd: typec: fusb302: Add support for specifying supported alternate-modes through devicetree/fwnodes Hans de Goede
2020-07-14 11:36 ` [PATCH 1/4] dt-bindings: usb-connector: Add support for Type-C alternate-modes Hans de Goede
2020-07-21  2:26   ` Rob Herring
2020-07-21  5:49     ` Prashant Malani
2020-07-22  7:18     ` Hans de Goede
2021-12-10 22:06       ` Prashant Malani
2020-07-14 11:36 ` [PATCH 2/4] usb: typec: Add typec_port_register_altmodes_from_fwnode() Hans de Goede
2020-07-15 16:39   ` Guenter Roeck
2020-07-15 21:14     ` Hans de Goede
2020-07-16  0:01       ` Guenter Roeck
2020-07-27 13:05   ` Heikki Krogerus
2020-08-10  7:19     ` Hans de Goede
2020-08-11 14:38       ` Heikki Krogerus
2020-08-12  8:36         ` Hans de Goede
2020-08-12 12:49           ` Heikki Krogerus [this message]
2020-08-13 14:30             ` Hans de Goede
2020-08-26 12:37             ` Hans de Goede
2020-08-26 13:06               ` Heikki Krogerus
2020-08-26 13:17   ` Heikki Krogerus
2021-04-08 18:59     ` Hans de Goede
2020-07-14 11:36 ` [PATCH 3/4] usb: typec: tcpm: Add support for altmodes Hans de Goede
2020-07-15 16:41   ` Guenter Roeck
2020-07-14 11:36 ` [PATCH 4/4] platform/x86/intel_cht_int33fe: Add displayport altmode fwnode to the connector fwnode Hans de Goede
2021-12-02 19:29 ` PATCH 0/4] usbd: typec: fusb302: Add support for specifying supported alternate-modes through devicetree/fwnodes Prashant Malani
2021-12-03 10:13   ` Hans de Goede
2021-12-03 20:22     ` Prashant Malani
2021-12-07  9:56       ` Heikki Krogerus
2021-12-07 10:04         ` Hans de Goede

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=20200812124955.GB1169992@kuha.fi.intel.com \
    --to=heikki.krogerus@linux.intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=robh+dt@kernel.org \
    --cc=t.schramm@manjaro.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).