* [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c
@ 2020-09-07 12:05 Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 1/2] device property: " Heikki Krogerus
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Heikki Krogerus @ 2020-09-07 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Rafael J. Wysocki, linux-kernel, linux-acpi
This is second version of this series. I forgot to remove the file
from Documentation/driver-api/index.rst. Hopefully these are now OK.
The original cover letter:
Hi,
This was the last patch in my series that removed struct
device_connection [1]. It's now split into two separate patches.
[1] https://lore.kernel.org/lkml/20200904125123.83725-1-heikki.krogerus@linux.intel.com/
thanks,
*** BLURB HERE ***
Heikki Krogerus (2):
device property: Move fwnode_connection_find_match() under
drivers/base/property.c
Documentation: Remove device connection documentation
.../driver-api/device_connection.rst | 43 --------
Documentation/driver-api/index.rst | 1 -
drivers/base/Makefile | 2 +-
drivers/base/devcon.c | 101 ------------------
drivers/base/property.c | 73 +++++++++++++
include/linux/device.h | 9 --
include/linux/property.h | 14 +++
7 files changed, 88 insertions(+), 155 deletions(-)
delete mode 100644 Documentation/driver-api/device_connection.rst
delete mode 100644 drivers/base/devcon.c
--
2.28.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] device property: Move fwnode_connection_find_match() under drivers/base/property.c
2020-09-07 12:05 [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Heikki Krogerus
@ 2020-09-07 12:05 ` Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 2/2] Documentation: Remove device connection documentation Heikki Krogerus
2020-09-07 12:23 ` [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Greg Kroah-Hartman
2 siblings, 0 replies; 4+ messages in thread
From: Heikki Krogerus @ 2020-09-07 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Rafael J. Wysocki, linux-kernel, linux-acpi
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>
---
drivers/base/Makefile | 2 +-
drivers/base/devcon.c | 101 ---------------------------------------
drivers/base/property.c | 73 ++++++++++++++++++++++++++++
include/linux/device.h | 9 ----
include/linux/property.h | 14 ++++++
5 files changed, 88 insertions(+), 111 deletions(-)
delete mode 100644 drivers/base/devcon.c
diff --git a/drivers/base/Makefile b/drivers/base/Makefile
index 157452080f3d7..41369fc7004fd 100644
--- a/drivers/base/Makefile
+++ b/drivers/base/Makefile
@@ -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
index 1790e84dbe7c2..0000000000000
--- a/drivers/base/devcon.c
+++ /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);
diff --git a/drivers/base/property.c b/drivers/base/property.c
index d58aa98fe9645..4c43d30145c6b 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -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);
diff --git a/include/linux/device.h b/include/linux/device.h
index c3ced17d91ee6..6f76c1f38e116 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -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.
diff --git a/include/linux/property.h b/include/linux/property.h
index 9f805c4428195..aedae94dcf41d 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -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 */
--
2.28.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] Documentation: Remove device connection documentation
2020-09-07 12:05 [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 1/2] device property: " Heikki Krogerus
@ 2020-09-07 12:05 ` Heikki Krogerus
2020-09-07 12:23 ` [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Greg Kroah-Hartman
2 siblings, 0 replies; 4+ messages in thread
From: Heikki Krogerus @ 2020-09-07 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Rafael J. Wysocki, linux-kernel, linux-acpi
The API that allowed device connection descriptions to
be added is now removed, so removing also the documentation
for it.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
.../driver-api/device_connection.rst | 43 -------------------
Documentation/driver-api/index.rst | 1 -
2 files changed, 44 deletions(-)
delete mode 100644 Documentation/driver-api/device_connection.rst
diff --git a/Documentation/driver-api/device_connection.rst b/Documentation/driver-api/device_connection.rst
deleted file mode 100644
index ba364224c349b..0000000000000
--- a/Documentation/driver-api/device_connection.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-==================
-Device connections
-==================
-
-Introduction
-------------
-
-Devices often have connections to other devices that are outside of the direct
-child/parent relationship. A serial or network communication controller, which
-could be a PCI device, may need to be able to get a reference to its PHY
-component, which could be attached for example to the I2C bus. Some device
-drivers need to be able to control the clocks or the GPIOs for their devices,
-and so on.
-
-Device connections are generic descriptions of any type of connection between
-two separate devices.
-
-Device connections alone do not create a dependency between the two devices.
-They are only descriptions which are not tied to either of the devices directly.
-A dependency between the two devices exists only if one of the two endpoint
-devices requests a reference to the other. The descriptions themselves can be
-defined in firmware (not yet supported) or they can be built-in.
-
-Usage
------
-
-Device connections should exist before device ``->probe`` callback is called for
-either endpoint device in the description. If the connections are defined in
-firmware, this is not a problem. It should be considered if the connection
-descriptions are "built-in", and need to be added separately.
-
-The connection description consists of the names of the two devices with the
-connection, i.e. the endpoints, and unique identifier for the connection which
-is needed if there are multiple connections between the two devices.
-
-After a description exists, the devices in it can request reference to the other
-endpoint device, or they can request the description itself.
-
-API
----
-
-.. kernel-doc:: drivers/base/devcon.c
- :functions: device_connection_find_match device_connection_find device_connection_add device_connection_remove
diff --git a/Documentation/driver-api/index.rst b/Documentation/driver-api/index.rst
index 5ef2cfe3a16b3..6e7c702e0268d 100644
--- a/Documentation/driver-api/index.rst
+++ b/Documentation/driver-api/index.rst
@@ -22,7 +22,6 @@ available subsections can be seen below.
pm/index
clk
device-io
- device_connection
dma-buf
device_link
component
--
2.28.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c
2020-09-07 12:05 [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 1/2] device property: " Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 2/2] Documentation: Remove device connection documentation Heikki Krogerus
@ 2020-09-07 12:23 ` Greg Kroah-Hartman
2 siblings, 0 replies; 4+ messages in thread
From: Greg Kroah-Hartman @ 2020-09-07 12:23 UTC (permalink / raw)
To: Heikki Krogerus; +Cc: Rafael J. Wysocki, linux-kernel, linux-acpi
On Mon, Sep 07, 2020 at 03:05:30PM +0300, Heikki Krogerus wrote:
> This is second version of this series. I forgot to remove the file
> from Documentation/driver-api/index.rst. Hopefully these are now OK.
>
> The original cover letter:
>
> Hi,
>
> This was the last patch in my series that removed struct
> device_connection [1]. It's now split into two separate patches.
>
> [1] https://lore.kernel.org/lkml/20200904125123.83725-1-heikki.krogerus@linux.intel.com/
>
> thanks,
>
> *** BLURB HERE ***
But you do have a blurb! :)
Anyway, thanks for the update, both now applied.
greg k-h
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-09-07 17:51 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-07 12:05 [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 1/2] device property: " Heikki Krogerus
2020-09-07 12:05 ` [PATCH v2 2/2] Documentation: Remove device connection documentation Heikki Krogerus
2020-09-07 12:23 ` [PATCH v2 0/2] Move fwnode_connection_find_match() under drivers/base/property.c Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).