]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/acpi/property.c
device property: Move fwnode graph ops to firmware specific locations
[mirror_ubuntu-bionic-kernel.git] / drivers / acpi / property.c
index 14013f635db61768258ab95975b2bccbd6e7a6ba..a24ca61294eb5b30b32a72ffc431151dc8e44fa1 100644 (file)
@@ -1179,6 +1179,42 @@ acpi_fwnode_get_named_child_node(struct fwnode_handle *fwnode,
        return NULL;
 }
 
+static struct fwnode_handle *
+acpi_fwnode_graph_get_next_endpoint(struct fwnode_handle *fwnode,
+                                   struct fwnode_handle *prev)
+{
+       struct fwnode_handle *endpoint;
+
+       endpoint = acpi_graph_get_next_endpoint(fwnode, prev);
+       if (IS_ERR(endpoint))
+               return NULL;
+
+       return endpoint;
+}
+
+static struct fwnode_handle *
+acpi_fwnode_graph_get_remote_endpoint(struct fwnode_handle *fwnode)
+{
+       struct fwnode_handle *endpoint = NULL;
+
+       acpi_graph_get_remote_endpoint(fwnode, NULL, NULL, &endpoint);
+
+       return endpoint;
+}
+
+static int acpi_fwnode_graph_parse_endpoint(struct fwnode_handle *fwnode,
+                                           struct fwnode_endpoint *endpoint)
+{
+       struct fwnode_handle *port_fwnode = fwnode_get_parent(fwnode);
+
+       endpoint->local_fwnode = fwnode;
+
+       fwnode_property_read_u32(port_fwnode, "port", &endpoint->port);
+       fwnode_property_read_u32(fwnode, "endpoint", &endpoint->id);
+
+       return 0;
+}
+
 const struct fwnode_operations acpi_fwnode_ops = {
        .property_present = acpi_fwnode_property_present,
        .property_read_int_array = acpi_fwnode_property_read_int_array,
@@ -1186,4 +1222,8 @@ const struct fwnode_operations acpi_fwnode_ops = {
        .get_parent = acpi_node_get_parent,
        .get_next_child_node = acpi_get_next_subnode,
        .get_named_child_node = acpi_fwnode_get_named_child_node,
+       .graph_get_next_endpoint = acpi_fwnode_graph_get_next_endpoint,
+       .graph_get_remote_endpoint = acpi_fwnode_graph_get_remote_endpoint,
+       .graph_get_port_parent = acpi_node_get_parent,
+       .graph_parse_endpoint = acpi_fwnode_graph_parse_endpoint,
 };