All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-acpi@vger.kernel.org
Cc: mika.westerberg@linux.intel.com, rafael@kernel.org
Subject: [RFC 12/15] device property: Add support for fwnode endpoints
Date: Wed,  5 Oct 2016 01:45:45 +0300	[thread overview]
Message-ID: <1475621148-21427-13-git-send-email-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <1475621148-21427-1-git-send-email-sakari.ailus@linux.intel.com>

Similar to OF endpoints, endpoint type nodes can be also supported on
ACPI. In order to make it possible for drivers to ignore the matter,
add a type for fwnode_endpoint and a function to parse them.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/property.c  | 33 +++++++++++++++++++++++++++++++++
 include/linux/fwnode.h   |  6 ++++++
 include/linux/property.h |  3 +++
 3 files changed, 42 insertions(+)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index 1ade4b7..d173960 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1244,3 +1244,36 @@ fwnode_graph_get_remote_endpoint(struct fwnode_handle *fwnode)
 	return endpoint;
 }
 EXPORT_SYMBOL_GPL(fwnode_graph_get_remote_endpoint);
+
+/*
+ * fwnode_graph_parse_endpoint() - parse common endpoint node properties
+ * @node: pointer to endpoint device_node
+ * @endpoint: pointer to the fwnode endpoint data structure
+ *
+ * The caller should hold a reference to @node.
+ */
+int fwnode_graph_parse_endpoint(struct fwnode_handle *fwnode,
+				struct fwnode_endpoint *endpoint)
+{
+	struct fwnode_handle *port_fwnode = fwnode_get_parent(fwnode);
+
+	memset(endpoint, 0, sizeof(*endpoint));
+
+	endpoint->local_fwnode = fwnode;
+	/*
+	 * It doesn't matter whether the two calls below succeed.
+	 * If they don't then the default value 0 is used.
+	 */
+	if (is_acpi_node(port_fwnode)) {
+		fwnode_property_read_u32(port_fwnode, "port", &endpoint->port);
+		fwnode_property_read_u32(fwnode, "endpoint", &endpoint->id);
+	} else {
+		fwnode_property_read_u32(port_fwnode, "reg", &endpoint->port);
+		fwnode_property_read_u32(fwnode, "reg", &endpoint->id);
+	}
+
+	fwnode_handle_put(port_fwnode);
+
+	return 0;
+}
+EXPORT_SYMBOL(fwnode_graph_parse_endpoint);
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 8516717..7940b79 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -26,4 +26,10 @@ struct fwnode_handle {
 	struct fwnode_handle *secondary;
 };
 
+struct fwnode_endpoint {
+	unsigned int port;
+	unsigned int id;
+	const struct fwnode_handle *local_fwnode;
+};
+
 #endif
diff --git a/include/linux/property.h b/include/linux/property.h
index b1c5365c..33fbca6 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -284,4 +284,7 @@ static inline struct fwnode_handle *device_fwnode_handle(struct device *dev)
 		return dev->fwnode;
 }
 
+int fwnode_graph_parse_endpoint(struct fwnode_handle *fwnode,
+				struct fwnode_endpoint *endpoint);
+
 #endif /* _LINUX_PROPERTY_H_ */
-- 
2.7.4


  parent reply	other threads:[~2016-10-04 22:47 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-04 22:45 [RFC 00/15] ACPI graph support Sakari Ailus
2016-10-04 22:45 ` [RFC 01/15] ACPI / property: Add possiblity to retrieve parent firmware node Sakari Ailus
2016-10-04 22:45 ` [RFC 02/15] device property: Add fwnode_get_parent() Sakari Ailus
2016-10-04 22:45 ` [RFC 03/15] ACPI / property: Add fwnode_get_next_child_node() Sakari Ailus
2016-10-04 22:45 ` [RFC 04/15] device property: Add fwnode_get_named_child_node() Sakari Ailus
2016-10-04 22:45 ` [RFC 05/15] ACPI / property: Add support for remote endpoints Sakari Ailus
2016-10-04 22:45 ` [RFC 06/15] device " Sakari Ailus
2016-10-04 22:45 ` [RFC 07/15] device property: Add fwnode_handle_get() Sakari Ailus
2016-10-04 22:45 ` [RFC 08/15] of: Add of_fwnode_handle() to convert device nodes to fwnode_handle Sakari Ailus
2016-10-04 22:45 ` [RFC 09/15] driver core: Arrange headers alphabetically Sakari Ailus
2016-10-04 22:45 ` [RFC 10/15] of: No need to include property.h, fwnode.h is sufficient Sakari Ailus
2016-10-04 22:45 ` [RFC 11/15] device property: Obtain device's fwnode independently of FW type Sakari Ailus
2016-10-04 22:45 ` Sakari Ailus [this message]
2016-10-04 22:45 ` [RFC 13/15] of: Add nop implementation of of_get_next_parent() Sakari Ailus
2016-10-04 22:45 ` [RFC 14/15] device property: Add fwnode_get_next_parent() Sakari Ailus
2016-10-04 22:45 ` [RFC 15/15] ACPI / DSD: Document references, ports and endpoints Sakari Ailus
2016-10-05  9:22 ` [RFC 00/15] ACPI graph support Lorenzo Pieralisi
2016-10-05 11:41   ` Mika Westerberg
2016-10-05 15:06     ` Lorenzo Pieralisi
2016-10-05 15:32       ` Mika Westerberg
2016-10-05 16:18         ` Lorenzo Pieralisi
2016-10-05 20:33           ` Rafael J. Wysocki
2016-10-06  8:57             ` Lorenzo Pieralisi
2016-10-06  9:11               ` Mika Westerberg
2016-10-06  9:57                 ` Lorenzo Pieralisi
2016-10-06 11:19                   ` Mika Westerberg
2016-10-06 15:31                     ` Mark Brown
2016-10-06 16:00                       ` Rafael J. Wysocki
2016-10-06 16:14                         ` Mark Brown
2016-10-06 17:02                           ` Rafael J. Wysocki
2016-10-11 12:44                         ` Mark Rutland
2016-10-12  0:19                           ` Rafael J. Wysocki
2016-10-06 12:30                   ` Rafael J. Wysocki
2016-10-06 10:40                 ` Mark Brown
2016-10-06 12:26                   ` Mika Westerberg
2016-10-06 13:15                   ` Rafael J. Wysocki
2016-10-06 15:23                     ` Mark Brown
2016-10-06 15:56                       ` Rafael J. Wysocki
2016-10-06 15:57                       ` Sudeep Holla
2016-10-06 12:26               ` Rafael J. Wysocki
2016-10-06 21:37                 ` Mark Brown
2016-10-10 23:44                   ` Rafael J. Wysocki
2016-10-11 12:11                     ` Rafael J. Wysocki
2016-10-11 13:05                       ` Mark Brown
2016-10-11 12:44                     ` Mark Brown
2016-10-11 13:32                       ` Mark Rutland
2016-10-12  0:32                       ` Rafael J. Wysocki
2016-10-12 12:05                         ` Mark Brown
2016-10-12 12:26                           ` Rafael J. Wysocki
2016-10-11 13:01                   ` Mark Rutland
2016-10-11 13:26                     ` Mark Brown
2016-10-11 12:56                 ` Mark Rutland
2016-10-06 22:02             ` Sakari Ailus
2016-10-11 12:35         ` Mark Rutland
2016-10-12  9:00           ` Mika Westerberg
2016-10-12 10:28             ` Mark Brown
2016-10-12 11:12               ` Mika Westerberg
2016-10-12 11:25                 ` Rafael J. Wysocki
2016-10-12 16:00                   ` Mark Brown
2016-10-12 11:14               ` Rafael J. Wysocki
2016-10-12 12:32                 ` Mark Brown
2016-10-12 12:42                   ` Rafael J. Wysocki
2016-10-12 14:59                     ` Mark Brown
2016-10-12 17:50                       ` Rafael J. Wysocki
2016-10-06 21:58       ` Sakari Ailus
2016-10-05 15:21     ` Mark Brown
2016-10-05 15:30     ` Sudeep Holla
2016-10-05 18:14       ` Mika Westerberg
2016-10-05 20:18       ` Rafael J. Wysocki
2016-10-06 10:29         ` Sudeep Holla
2016-10-06 13:04           ` Rafael J. Wysocki
2016-10-06 14:20             ` Sudeep Holla
2016-10-06 17:05               ` Rafael J. Wysocki
2016-10-06 17:20                 ` Sudeep Holla
2016-10-11  0:05                   ` Rafael J. Wysocki
2016-10-11  8:57                     ` Sudeep Holla
2016-10-11 11:59                       ` Rafael J. Wysocki
2016-10-11 13:15                         ` Mark Brown
2016-10-12  0:35                           ` Rafael J. Wysocki
2016-10-06 17:20               ` Al Stone
2016-10-06 20:14                 ` Mark Brown
2016-10-06 20:54                   ` Al Stone
2016-10-11 12:28     ` Mark Rutland
2016-10-12  1:18       ` Rafael J. Wysocki
2016-10-06 21:10   ` Sakari Ailus
2016-10-11 13:30     ` Mark Rutland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1475621148-21427-13-git-send-email-sakari.ailus@linux.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rafael@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.