Re: [PATCH 2/2] usb: typec: mux: Remove requirement for the "orientation-switch" device property

From: Heikki Krogerus
Date: Mon May 31 2021 - 03:57:13 EST


On Mon, May 31, 2021 at 10:24:35AM +0300, Heikki Krogerus wrote:
> On Fri, May 28, 2021 at 07:26:43AM +0000, Jun Li wrote:
> > Hi,
> > > -----Original Message-----
> > > From: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> > > Sent: Wednesday, May 26, 2021 11:36 PM
> > > To: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>; Hans de Goede
> > > <hdegoede@xxxxxxxxxx>; Jun Li <jun.li@xxxxxxx>
> > > Cc: linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> > > Subject: [PATCH 2/2] usb: typec: mux: Remove requirement for the
> > > "orientation-switch" device property
> > >
> > > The additional boolean device property "orientation-switch"
> > > is not needed when the connection is described with device graph, so removing
> > > the check and the requirement for it.
> > >
> > > Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> > > ---
> > > drivers/usb/typec/mux.c | 3 ---
> > > 1 file changed, 3 deletions(-)
> > >
> > > diff --git a/drivers/usb/typec/mux.c b/drivers/usb/typec/mux.c index
> > > e40a555724fb6..603f3e698cc0b 100644
> > > --- a/drivers/usb/typec/mux.c
> > > +++ b/drivers/usb/typec/mux.c
> > > @@ -30,9 +30,6 @@ static void *typec_switch_match(struct fwnode_handle
> > > *fwnode, const char *id, {
> > > struct device *dev;
> > >
> > > - if (id && !fwnode_property_present(fwnode, id))
> > > - return NULL;
> > > -
> >
> > May this change the result of fwnode_connection_find_match()
> > if there are multiple remote-endpoint node?
> >
> > After the 2 patches change, typec_switch_match() will never
> > return NULL, so
> >
> > 17 static void *
> > 18 fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
> > 19 void *data, devcon_match_fn_t match)
> > 20 {
> > 21 struct fwnode_handle *node;
> > 22 struct fwnode_handle *ep;
> > 23 void *ret;
> > 24
> > 25 fwnode_graph_for_each_endpoint(fwnode, ep) {
> > 26 node = fwnode_graph_get_remote_port_parent(ep);
> > 27 if (!fwnode_device_is_available(node))
> > 28 continue;
> > 29
> > 30 ret = match(node, con_id, data);// ret can't be NULL;
> > 31 fwnode_handle_put(node);
> > 32 if (ret) {
> > /*
> > * So loop will go to here and stop
> > * checking next ep, even this ep
> > * actually is not for typec_switch
> > */
> > 33 fwnode_handle_put(ep);
> > 34 return ret;
> > 35 }
> > 36 }
> > 37 return NULL;
> > 38 }
> >
> > fwnode_graph_devcon_match() Will return ERR_PTR(-EPROBE_DEFER)
> > even this ep's remote parent already probed but it's not for
> > typec_switch.
>
> You are correct. With device graph I guess we really always need the
> extra device property after all.
>
> So let's forget about this one.

Oh no. This patch just landed into Greg's usb-next. I'll prepare the
revert. I'm sorry about this.

thanks,

--
heikki