Commit 4aebc4f8 authored by Heikki Krogerus's avatar Heikki Krogerus Committed by Greg Kroah-Hartman

usb: typec: mux: Clean up mux_fwnode_match()

Removing the "svid" and "accessory" device property checks.
Those properties are not supported on any platform.
Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/lkml/20230522215348.uoyboow26n2o3tel@ripper/Reviewed-by: default avatarBjorn Andersson <andersson@kernel.org>
Tested-by: default avatarBjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230526131434.46920-2-heikki.krogerus@linux.intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3c90c5a7
......@@ -265,60 +265,19 @@ static int mux_fwnode_match(struct device *dev, const void *fwnode)
static void *typec_mux_match(const struct fwnode_handle *fwnode,
const char *id, void *data)
{
const struct typec_altmode_desc *desc = data;
struct device *dev;
bool match;
int nval;
u16 *val;
int ret;
int i;
/*
* Check has the identifier already been "consumed". If it
* has, no need to do any extra connection identification.
* Device graph (OF graph) does not give any means to identify the
* device type or the device class of the remote port parent that @fwnode
* represents, so in order to identify the type or the class of @fwnode
* an additional device property is needed. With typec muxes the
* property is named "mode-switch" (@id). The value of the device
* property is ignored.
*/
match = !id;
if (match)
goto find_mux;
if (!desc) {
/*
* Accessory Mode muxes & muxes which explicitly specify
* the required identifier can avoid SVID matching.
*/
match = fwnode_property_present(fwnode, "accessory") ||
fwnode_property_present(fwnode, id);
if (match)
goto find_mux;
return NULL;
}
/* Alternate Mode muxes */
nval = fwnode_property_count_u16(fwnode, "svid");
if (nval <= 0)
if (id && !fwnode_property_present(fwnode, id))
return NULL;
val = kcalloc(nval, sizeof(*val), GFP_KERNEL);
if (!val)
return ERR_PTR(-ENOMEM);
ret = fwnode_property_read_u16_array(fwnode, "svid", val, nval);
if (ret < 0) {
kfree(val);
return ERR_PTR(ret);
}
for (i = 0; i < nval; i++) {
match = val[i] == desc->svid;
if (match) {
kfree(val);
goto find_mux;
}
}
kfree(val);
return NULL;
find_mux:
dev = class_find_device(&typec_mux_class, NULL, fwnode,
mux_fwnode_match);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment