device connection: Remove struct device_connection
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Fri, 4 Sep 2020 12:51:22 +0000 (15:51 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Sep 2020 09:14:09 +0000 (11:14 +0200)
Since the connection descriptors can't be stored into the
list anymore, there is no need for the data structure.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20200904125123.83725-4-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/devcon.c
drivers/usb/roles/class.c
drivers/usb/typec/mux.c
include/linux/device.h

index 94ab22a..1790e84 100644 (file)
@@ -13,17 +13,17 @@ static void *
 fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
                          void *data, devcon_match_fn_t match)
 {
-       struct device_connection con = { .id = con_id };
+       struct fwnode_handle *node;
        struct fwnode_handle *ep;
        void *ret;
 
        fwnode_graph_for_each_endpoint(fwnode, ep) {
-               con.fwnode = fwnode_graph_get_remote_port_parent(ep);
-               if (!fwnode_device_is_available(con.fwnode))
+               node = fwnode_graph_get_remote_port_parent(ep);
+               if (!fwnode_device_is_available(node))
                        continue;
 
-               ret = match(&con, -1, data);
-               fwnode_handle_put(con.fwnode);
+               ret = match(node, con_id, data);
+               fwnode_handle_put(node);
                if (ret) {
                        fwnode_handle_put(ep);
                        return ret;
@@ -36,17 +36,17 @@ static void *
 fwnode_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
                    void *data, devcon_match_fn_t match)
 {
-       struct device_connection con = { };
+       struct fwnode_handle *node;
        void *ret;
        int i;
 
        for (i = 0; ; i++) {
-               con.fwnode = fwnode_find_reference(fwnode, con_id, i);
-               if (IS_ERR(con.fwnode))
+               node = fwnode_find_reference(fwnode, con_id, i);
+               if (IS_ERR(node))
                        break;
 
-               ret = match(&con, -1, data);
-               fwnode_handle_put(con.fwnode);
+               ret = match(node, NULL, data);
+               fwnode_handle_put(node);
                if (ret)
                        return ret;
        }
index 27d92af..97f3707 100644 (file)
@@ -87,19 +87,15 @@ enum usb_role usb_role_switch_get_role(struct usb_role_switch *sw)
 }
 EXPORT_SYMBOL_GPL(usb_role_switch_get_role);
 
-static void *usb_role_switch_match(struct device_connection *con, int ep,
+static void *usb_role_switch_match(struct fwnode_handle *fwnode, const char *id,
                                   void *data)
 {
        struct device *dev;
 
-       if (con->fwnode) {
-               if (con->id && !fwnode_property_present(con->fwnode, con->id))
-                       return NULL;
+       if (id && !fwnode_property_present(fwnode, id))
+               return NULL;
 
-               dev = class_find_device_by_fwnode(role_class, con->fwnode);
-       } else {
-               dev = class_find_device_by_name(role_class, con->endpoint[ep]);
-       }
+       dev = class_find_device_by_fwnode(role_class, fwnode);
 
        return dev ? to_role_switch(dev) : ERR_PTR(-EPROBE_DEFER);
 }
index 52ad277..b069a51 100644 (file)
@@ -34,15 +34,15 @@ static int switch_fwnode_match(struct device *dev, const void *fwnode)
        return dev_fwnode(dev) == fwnode && dev_name_ends_with(dev, "-switch");
 }
 
-static void *typec_switch_match(struct device_connection *con, int ep,
+static void *typec_switch_match(struct fwnode_handle *fwnode, const char *id,
                                void *data)
 {
        struct device *dev;
 
-       if (con->id && !fwnode_property_present(con->fwnode, con->id))
+       if (id && !fwnode_property_present(fwnode, id))
                return NULL;
 
-       dev = class_find_device(&typec_mux_class, NULL, con->fwnode,
+       dev = class_find_device(&typec_mux_class, NULL, fwnode,
                                switch_fwnode_match);
 
        return dev ? to_typec_switch(dev) : ERR_PTR(-EPROBE_DEFER);
@@ -183,7 +183,8 @@ static int mux_fwnode_match(struct device *dev, const void *fwnode)
        return dev_fwnode(dev) == fwnode && dev_name_ends_with(dev, "-mux");
 }
 
-static void *typec_mux_match(struct device_connection *con, int ep, void *data)
+static void *typec_mux_match(struct fwnode_handle *fwnode, const char *id,
+                            void *data)
 {
        const struct typec_altmode_desc *desc = data;
        struct device *dev;
@@ -196,20 +197,20 @@ static void *typec_mux_match(struct device_connection *con, int ep, void *data)
         * Check has the identifier already been "consumed". If it
         * has, no need to do any extra connection identification.
         */
-       match = !con->id;
+       match = !id;
        if (match)
                goto find_mux;
 
        /* Accessory Mode muxes */
        if (!desc) {
-               match = fwnode_property_present(con->fwnode, "accessory");
+               match = fwnode_property_present(fwnode, "accessory");
                if (match)
                        goto find_mux;
                return NULL;
        }
 
        /* Alternate Mode muxes */
-       nval = fwnode_property_count_u16(con->fwnode, "svid");
+       nval = fwnode_property_count_u16(fwnode, "svid");
        if (nval <= 0)
                return NULL;
 
@@ -217,7 +218,7 @@ static void *typec_mux_match(struct device_connection *con, int ep, void *data)
        if (!val)
                return ERR_PTR(-ENOMEM);
 
-       nval = fwnode_property_read_u16_array(con->fwnode, "svid", val, nval);
+       nval = fwnode_property_read_u16_array(fwnode, "svid", val, nval);
        if (nval < 0) {
                kfree(val);
                return ERR_PTR(nval);
@@ -234,7 +235,7 @@ static void *typec_mux_match(struct device_connection *con, int ep, void *data)
        return NULL;
 
 find_mux:
-       dev = class_find_device(&typec_mux_class, NULL, con->fwnode,
+       dev = class_find_device(&typec_mux_class, NULL, fwnode,
                                mux_fwnode_match);
 
        return dev ? to_typec_switch(dev) : ERR_PTR(-EPROBE_DEFER);
index ea37deb..d4612ef 100644 (file)
@@ -292,23 +292,7 @@ struct device_dma_parameters {
        unsigned long segment_boundary_mask;
 };
 
-/**
- * struct device_connection - Device Connection Descriptor
- * @fwnode: The device node of the connected device
- * @endpoint: The names of the two devices connected together
- * @id: Unique identifier for the connection
- *
- * NOTE: @fwnode is not used together with @endpoint. @fwnode is used when
- * platform firmware defines the connection. When the connection is registered
- * with device_connection_add() @endpoint is used instead.
- */
-struct device_connection {
-       struct fwnode_handle    *fwnode;
-       const char              *endpoint[2];
-       const char              *id;
-};
-
-typedef void *(*devcon_match_fn_t)(struct device_connection *con, int ep,
+typedef void *(*devcon_match_fn_t)(struct fwnode_handle *fwnode, const char *id,
                                   void *data);
 
 void *fwnode_connection_find_match(struct fwnode_handle *fwnode,