device property: Move fwnode_connection_find_match() under drivers/base/property.c
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Mon, 7 Sep 2020 12:05:31 +0000 (15:05 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Sep 2020 11:32:06 +0000 (13:32 +0200)
The function is now only a helper that searches the
connection from device graph and then by checking if the
supplied connection identifier matches a property that
contains reference.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20200907120532.37611-2-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/Makefile
drivers/base/devcon.c [deleted file]
drivers/base/property.c
include/linux/device.h
include/linux/property.h

index 1574520..41369fc 100644 (file)
@@ -6,7 +6,7 @@ obj-y                   := component.o core.o bus.o dd.o syscore.o \
                           cpu.o firmware.o init.o map.o devres.o \
                           attribute_container.o transport_class.o \
                           topology.o container.o property.o cacheinfo.o \
-                          devcon.o swnode.o
+                          swnode.o
 obj-$(CONFIG_DEVTMPFS) += devtmpfs.o
 obj-y                  += power/
 obj-$(CONFIG_ISA_BUS_API)      += isa.o
diff --git a/drivers/base/devcon.c b/drivers/base/devcon.c
deleted file mode 100644 (file)
index 1790e84..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/**
- * Device connections
- *
- * Copyright (C) 2018 Intel Corporation
- * Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
- */
-
-#include <linux/device.h>
-#include <linux/property.h>
-
-static void *
-fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
-                         void *data, devcon_match_fn_t match)
-{
-       struct fwnode_handle *node;
-       struct fwnode_handle *ep;
-       void *ret;
-
-       fwnode_graph_for_each_endpoint(fwnode, ep) {
-               node = fwnode_graph_get_remote_port_parent(ep);
-               if (!fwnode_device_is_available(node))
-                       continue;
-
-               ret = match(node, con_id, data);
-               fwnode_handle_put(node);
-               if (ret) {
-                       fwnode_handle_put(ep);
-                       return ret;
-               }
-       }
-       return NULL;
-}
-
-static void *
-fwnode_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
-                   void *data, devcon_match_fn_t match)
-{
-       struct fwnode_handle *node;
-       void *ret;
-       int i;
-
-       for (i = 0; ; i++) {
-               node = fwnode_find_reference(fwnode, con_id, i);
-               if (IS_ERR(node))
-                       break;
-
-               ret = match(node, NULL, data);
-               fwnode_handle_put(node);
-               if (ret)
-                       return ret;
-       }
-
-       return NULL;
-}
-
-/**
- * fwnode_connection_find_match - Find connection from a device node
- * @fwnode: Device node with the connection
- * @con_id: Identifier for the connection
- * @data: Data for the match function
- * @match: Function to check and convert the connection description
- *
- * Find a connection with unique identifier @con_id between @fwnode and another
- * device node. @match will be used to convert the connection description to
- * data the caller is expecting to be returned.
- */
-void *fwnode_connection_find_match(struct fwnode_handle *fwnode,
-                                  const char *con_id, void *data,
-                                  devcon_match_fn_t match)
-{
-       void *ret;
-
-       if (!fwnode || !match)
-               return NULL;
-
-       ret = fwnode_graph_devcon_match(fwnode, con_id, data, match);
-       if (ret)
-               return ret;
-
-       return fwnode_devcon_match(fwnode, con_id, data, match);
-}
-EXPORT_SYMBOL_GPL(fwnode_connection_find_match);
-
-/**
- * device_connection_find_match - Find physical connection to a device
- * @dev: Device with the connection
- * @con_id: Identifier for the connection
- * @data: Data for the match function
- * @match: Function to check and convert the connection description
- *
- * Find a connection with unique identifier @con_id between @dev and another
- * device. @match will be used to convert the connection description to data the
- * caller is expecting to be returned.
- */
-void *device_connection_find_match(struct device *dev, const char *con_id,
-                                  void *data, devcon_match_fn_t match)
-{
-       return fwnode_connection_find_match(dev_fwnode(dev), con_id, data, match);
-}
-EXPORT_SYMBOL_GPL(device_connection_find_match);
index d58aa98..4c43d30 100644 (file)
@@ -1184,3 +1184,76 @@ const void *device_get_match_data(struct device *dev)
        return fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data, dev);
 }
 EXPORT_SYMBOL_GPL(device_get_match_data);
+
+static void *
+fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
+                         void *data, devcon_match_fn_t match)
+{
+       struct fwnode_handle *node;
+       struct fwnode_handle *ep;
+       void *ret;
+
+       fwnode_graph_for_each_endpoint(fwnode, ep) {
+               node = fwnode_graph_get_remote_port_parent(ep);
+               if (!fwnode_device_is_available(node))
+                       continue;
+
+               ret = match(node, con_id, data);
+               fwnode_handle_put(node);
+               if (ret) {
+                       fwnode_handle_put(ep);
+                       return ret;
+               }
+       }
+       return NULL;
+}
+
+static void *
+fwnode_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
+                   void *data, devcon_match_fn_t match)
+{
+       struct fwnode_handle *node;
+       void *ret;
+       int i;
+
+       for (i = 0; ; i++) {
+               node = fwnode_find_reference(fwnode, con_id, i);
+               if (IS_ERR(node))
+                       break;
+
+               ret = match(node, NULL, data);
+               fwnode_handle_put(node);
+               if (ret)
+                       return ret;
+       }
+
+       return NULL;
+}
+
+/**
+ * fwnode_connection_find_match - Find connection from a device node
+ * @fwnode: Device node with the connection
+ * @con_id: Identifier for the connection
+ * @data: Data for the match function
+ * @match: Function to check and convert the connection description
+ *
+ * Find a connection with unique identifier @con_id between @fwnode and another
+ * device node. @match will be used to convert the connection description to
+ * data the caller is expecting to be returned.
+ */
+void *fwnode_connection_find_match(struct fwnode_handle *fwnode,
+                                  const char *con_id, void *data,
+                                  devcon_match_fn_t match)
+{
+       void *ret;
+
+       if (!fwnode || !match)
+               return NULL;
+
+       ret = fwnode_graph_devcon_match(fwnode, con_id, data, match);
+       if (ret)
+               return ret;
+
+       return fwnode_devcon_match(fwnode, con_id, data, match);
+}
+EXPORT_SYMBOL_GPL(fwnode_connection_find_match);
index 0b3dc72..bf480db 100644 (file)
@@ -292,15 +292,6 @@ struct device_dma_parameters {
        unsigned long segment_boundary_mask;
 };
 
-typedef void *(*devcon_match_fn_t)(struct fwnode_handle *fwnode, const char *id,
-                                  void *data);
-
-void *fwnode_connection_find_match(struct fwnode_handle *fwnode,
-                                  const char *con_id, void *data,
-                                  devcon_match_fn_t match);
-void *device_connection_find_match(struct device *dev, const char *con_id,
-                                  void *data, devcon_match_fn_t match);
-
 /**
  * enum device_link_state - Device link states.
  * @DL_STATE_NONE: The presence of the drivers is not being tracked.
index 9f805c4..aedae94 100644 (file)
@@ -418,6 +418,20 @@ fwnode_graph_get_endpoint_by_id(const struct fwnode_handle *fwnode,
 int fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
                                struct fwnode_endpoint *endpoint);
 
+typedef void *(*devcon_match_fn_t)(struct fwnode_handle *fwnode, const char *id,
+                                  void *data);
+
+void *fwnode_connection_find_match(struct fwnode_handle *fwnode,
+                                  const char *con_id, void *data,
+                                  devcon_match_fn_t match);
+
+static inline void *device_connection_find_match(struct device *dev,
+                                                const char *con_id, void *data,
+                                                devcon_match_fn_t match)
+{
+       return fwnode_connection_find_match(dev_fwnode(dev), con_id, data, match);
+}
+
 /* -------------------------------------------------------------------------- */
 /* Software fwnode support - when HW description is incomplete or missing */