Merge tag 'v3.14.25' into backport/v3.14.24-ltsi-rc1+v3.14.25/snapshot-merge.wip
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / media / v4l2-core / v4l2-of.c
index 42e3e8a..b4ed9a9 100644 (file)
@@ -127,17 +127,9 @@ static void v4l2_of_parse_parallel_bus(const struct device_node *node,
 int v4l2_of_parse_endpoint(const struct device_node *node,
                           struct v4l2_of_endpoint *endpoint)
 {
-       struct device_node *port_node = of_get_parent(node);
-
-       memset(endpoint, 0, offsetof(struct v4l2_of_endpoint, head));
-
-       endpoint->local_node = node;
-       /*
-        * It doesn't matter whether the two calls below succeed.
-        * If they don't then the default value 0 is used.
-        */
-       of_property_read_u32(port_node, "reg", &endpoint->port);
-       of_property_read_u32(node, "reg", &endpoint->id);
+       of_graph_parse_endpoint(node, &endpoint->base);
+       endpoint->bus_type = 0;
+       memset(&endpoint->bus, 0, sizeof(endpoint->bus));
 
        v4l2_of_parse_csi_bus(node, endpoint);
        /*
@@ -147,125 +139,6 @@ int v4l2_of_parse_endpoint(const struct device_node *node,
        if (endpoint->bus.mipi_csi2.flags == 0)
                v4l2_of_parse_parallel_bus(node, endpoint);
 
-       of_node_put(port_node);
-
        return 0;
 }
 EXPORT_SYMBOL(v4l2_of_parse_endpoint);
-
-/**
- * v4l2_of_get_next_endpoint() - get next endpoint node
- * @parent: pointer to the parent device node
- * @prev: previous endpoint node, or NULL to get first
- *
- * Return: An 'endpoint' node pointer with refcount incremented. Refcount
- * of the passed @prev node is not decremented, the caller have to use
- * of_node_put() on it when done.
- */
-struct device_node *v4l2_of_get_next_endpoint(const struct device_node *parent,
-                                       struct device_node *prev)
-{
-       struct device_node *endpoint;
-       struct device_node *port = NULL;
-
-       if (!parent)
-               return NULL;
-
-       if (!prev) {
-               struct device_node *node;
-               /*
-                * It's the first call, we have to find a port subnode
-                * within this node or within an optional 'ports' node.
-                */
-               node = of_get_child_by_name(parent, "ports");
-               if (node)
-                       parent = node;
-
-               port = of_get_child_by_name(parent, "port");
-
-               if (port) {
-                       /* Found a port, get an endpoint. */
-                       endpoint = of_get_next_child(port, NULL);
-                       of_node_put(port);
-               } else {
-                       endpoint = NULL;
-               }
-
-               if (!endpoint)
-                       pr_err("%s(): no endpoint nodes specified for %s\n",
-                              __func__, parent->full_name);
-               of_node_put(node);
-       } else {
-               port = of_get_parent(prev);
-               if (!port)
-                       /* Hm, has someone given us the root node ?... */
-                       return NULL;
-
-               /* Avoid dropping prev node refcount to 0. */
-               of_node_get(prev);
-               endpoint = of_get_next_child(port, prev);
-               if (endpoint) {
-                       of_node_put(port);
-                       return endpoint;
-               }
-
-               /* No more endpoints under this port, try the next one. */
-               do {
-                       port = of_get_next_child(parent, port);
-                       if (!port)
-                               return NULL;
-               } while (of_node_cmp(port->name, "port"));
-
-               /* Pick up the first endpoint in this port. */
-               endpoint = of_get_next_child(port, NULL);
-               of_node_put(port);
-       }
-
-       return endpoint;
-}
-EXPORT_SYMBOL(v4l2_of_get_next_endpoint);
-
-/**
- * v4l2_of_get_remote_port_parent() - get remote port's parent node
- * @node: pointer to a local endpoint device_node
- *
- * Return: Remote device node associated with remote endpoint node linked
- *        to @node. Use of_node_put() on it when done.
- */
-struct device_node *v4l2_of_get_remote_port_parent(
-                              const struct device_node *node)
-{
-       struct device_node *np;
-       unsigned int depth;
-
-       /* Get remote endpoint node. */
-       np = of_parse_phandle(node, "remote-endpoint", 0);
-
-       /* Walk 3 levels up only if there is 'ports' node. */
-       for (depth = 3; depth && np; depth--) {
-               np = of_get_next_parent(np);
-               if (depth == 2 && of_node_cmp(np->name, "ports"))
-                       break;
-       }
-       return np;
-}
-EXPORT_SYMBOL(v4l2_of_get_remote_port_parent);
-
-/**
- * v4l2_of_get_remote_port() - get remote port node
- * @node: pointer to a local endpoint device_node
- *
- * Return: Remote port node associated with remote endpoint node linked
- *        to @node. Use of_node_put() on it when done.
- */
-struct device_node *v4l2_of_get_remote_port(const struct device_node *node)
-{
-       struct device_node *np;
-
-       /* Get remote endpoint node. */
-       np = of_parse_phandle(node, "remote-endpoint", 0);
-       if (!np)
-               return NULL;
-       return of_get_next_parent(np);
-}
-EXPORT_SYMBOL(v4l2_of_get_remote_port);