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) {
        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) {
 
 struct typec_switch_desc {
        struct fwnode_handle *fwnode;
        typec_switch_set_fn_t set;
+       const char *name;
        void *drvdata;
 };
 
 struct typec_mux_desc {
        struct fwnode_handle *fwnode;
        typec_mux_set_fn_t set;
+       const char *name;
        void *drvdata;
 };