usb: typec: mux: Allow the muxes to be named
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Mon, 2 Mar 2020 13:53:45 +0000 (16:53 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Mar 2020 10:11:03 +0000 (11:11 +0100)
The mux devices have been named by using the name of the
parent device as base until now, but if for example the
parent device has multiple muxes that will not work. This
makes it possible to supply the name for a mux during
registration.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20200302135353.56659-2-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/mux.c
include/linux/usb/typec_mux.h

index b952fa2fff39db901a974845fd32c416952e3498..2a073614172a90f4cde092e3a59df7a96bc07b7e 100644 (file)
@@ -127,7 +127,8 @@ typec_switch_register(struct device *parent,
        sw->dev.class = &typec_mux_class;
        sw->dev.type = &typec_switch_dev_type;
        sw->dev.driver_data = desc->drvdata;
-       dev_set_name(&sw->dev, "%s-switch", dev_name(parent));
+       dev_set_name(&sw->dev, "%s-switch",
+                    desc->name ? desc->name : dev_name(parent));
 
        ret = device_add(&sw->dev);
        if (ret) {
@@ -309,7 +310,8 @@ typec_mux_register(struct device *parent, const struct typec_mux_desc *desc)
        mux->dev.class = &typec_mux_class;
        mux->dev.type = &typec_mux_dev_type;
        mux->dev.driver_data = desc->drvdata;
-       dev_set_name(&mux->dev, "%s-mux", dev_name(parent));
+       dev_set_name(&mux->dev, "%s-mux",
+                    desc->name ? desc->name : dev_name(parent));
 
        ret = device_add(&mux->dev);
        if (ret) {
index be7292c0be5e030ba36fe3e63925077bc50a0968..47ab5a828b07fd6b5b1c3cb61a4129b7b3306db9 100644 (file)
@@ -17,6 +17,7 @@ typedef int (*typec_switch_set_fn_t)(struct typec_switch *sw,
 struct typec_switch_desc {
        struct fwnode_handle *fwnode;
        typec_switch_set_fn_t set;
+       const char *name;
        void *drvdata;
 };
 
@@ -42,6 +43,7 @@ typedef int (*typec_mux_set_fn_t)(struct typec_mux *mux,
 struct typec_mux_desc {
        struct fwnode_handle *fwnode;
        typec_mux_set_fn_t set;
+       const char *name;
        void *drvdata;
 };