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

From: Jun Li
Date: Fri May 28 2021 - 03:26:50 EST


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.

Li Jun

> dev = class_find_device(&typec_mux_class, NULL, fwnode,
> switch_fwnode_match);
>
> --
> 2.30.2