Re: [cip-dev] [PATCH 4.19.y-cip 05/23] usb: typec: Find the ports by also matching against the device node

Marian-Cristian Rotariu
2020-02-20T10:44:54Z

> -----Original Message-----
> From: Pavel Machek <pavel@denx.de>
> Sent: 19 February 2020 07:57
> To: Marian-Cristian Rotariu <marian-cristian.rotariu.rb@bp.renesas.com>
> Cc: cip-dev@lists.cip-project.org
> Subject: Re: [cip-dev] [PATCH 4.19.y-cip 05/23] usb: typec: Find the ports by
> also matching against the device node
>
> Hi!
>
> > From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> >
> > commit 6a0bbcf96b2273f110a14d11a5952527c5921191 upstream.
> >
> > When the connections are defined in firmware, struct device_connection
> > will have the fwnode member pointing to the device node (struct
> > fwnode_handle) of the requested device, and the endpoint will not be
> > used at all in that case.
>
> > static void *typec_port_match(struct device_connection *con, int ep,
> > void *data) {
> > - return class_find_device(typec_class, NULL, con->endpoint[ep],
> > - __typec_port_match);
> ...
> > + dev = class_find_device(typec_class, NULL, con->endpoint[ep],
> > + typec_port_name_match);
> > +
> > + return dev ? dev : ERR_PTR(-EPROBE_DEFER);
> > }
>
> So... this adds handling in fwnode != NULL (expected, okay with me), but it
> also changes behaviour in fwnode == NULL case: return value changed from
> NULL to ERR_PTR(-EPROBE_DEFER). Are all callers ready to handle the
> changed situation in -cip? Could we get some explanation why it is
> neccessary/good idea?

This is part of the Type-C Alternate Modes. This callback is used only by the
typec_altmode_register_notifier() that should be called by the upper driver
that uses the USB Type-C port in the Alternate Mode. In this way it can receive
notifications from it.

In its initial form, this function explores the graph child nodes and finds the
adequate USB port controller device. But, this device might not be ready/probed
yet. Hence, the EPROBE_DEFER addition of this patch.

Strangely enough, no one is using this notification chain so far, not even in
mainstream. I guess Type-C is still in its infancy.
_______________________________________________
cip-dev mailing list
cip-dev@lists.cip-project.org