diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/platform/exynos4-is/media-dev.c | 10 | ||||
-rw-r--r-- | drivers/media/platform/exynos4-is/mipi-csis.c | 2 | ||||
-rw-r--r-- | drivers/media/v4l2-core/v4l2-of.c | 16 | ||||
-rw-r--r-- | drivers/of/base.c | 28 |
4 files changed, 37 insertions, 19 deletions
diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c index d0f82da59ac5..04d6ecdd314c 100644 --- a/drivers/media/platform/exynos4-is/media-dev.c +++ b/drivers/media/platform/exynos4-is/media-dev.c | |||
@@ -469,10 +469,10 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd, | |||
469 | return 0; | 469 | return 0; |
470 | 470 | ||
471 | v4l2_of_parse_endpoint(ep, &endpoint); | 471 | v4l2_of_parse_endpoint(ep, &endpoint); |
472 | if (WARN_ON(endpoint.port == 0) || index >= FIMC_MAX_SENSORS) | 472 | if (WARN_ON(endpoint.base.port == 0) || index >= FIMC_MAX_SENSORS) |
473 | return -EINVAL; | 473 | return -EINVAL; |
474 | 474 | ||
475 | pd->mux_id = (endpoint.port - 1) & 0x1; | 475 | pd->mux_id = (endpoint.base.port - 1) & 0x1; |
476 | 476 | ||
477 | rem = of_graph_get_remote_port_parent(ep); | 477 | rem = of_graph_get_remote_port_parent(ep); |
478 | of_node_put(ep); | 478 | of_node_put(ep); |
@@ -494,13 +494,13 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd, | |||
494 | return -EINVAL; | 494 | return -EINVAL; |
495 | } | 495 | } |
496 | 496 | ||
497 | if (fimc_input_is_parallel(endpoint.port)) { | 497 | if (fimc_input_is_parallel(endpoint.base.port)) { |
498 | if (endpoint.bus_type == V4L2_MBUS_PARALLEL) | 498 | if (endpoint.bus_type == V4L2_MBUS_PARALLEL) |
499 | pd->sensor_bus_type = FIMC_BUS_TYPE_ITU_601; | 499 | pd->sensor_bus_type = FIMC_BUS_TYPE_ITU_601; |
500 | else | 500 | else |
501 | pd->sensor_bus_type = FIMC_BUS_TYPE_ITU_656; | 501 | pd->sensor_bus_type = FIMC_BUS_TYPE_ITU_656; |
502 | pd->flags = endpoint.bus.parallel.flags; | 502 | pd->flags = endpoint.bus.parallel.flags; |
503 | } else if (fimc_input_is_mipi_csi(endpoint.port)) { | 503 | } else if (fimc_input_is_mipi_csi(endpoint.base.port)) { |
504 | /* | 504 | /* |
505 | * MIPI CSI-2: only input mux selection and | 505 | * MIPI CSI-2: only input mux selection and |
506 | * the sensor's clock frequency is needed. | 506 | * the sensor's clock frequency is needed. |
@@ -508,7 +508,7 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd, | |||
508 | pd->sensor_bus_type = FIMC_BUS_TYPE_MIPI_CSI2; | 508 | pd->sensor_bus_type = FIMC_BUS_TYPE_MIPI_CSI2; |
509 | } else { | 509 | } else { |
510 | v4l2_err(&fmd->v4l2_dev, "Wrong port id (%u) at node %s\n", | 510 | v4l2_err(&fmd->v4l2_dev, "Wrong port id (%u) at node %s\n", |
511 | endpoint.port, rem->full_name); | 511 | endpoint.base.port, rem->full_name); |
512 | } | 512 | } |
513 | /* | 513 | /* |
514 | * For FIMC-IS handled sensors, that are placed under i2c-isp device | 514 | * For FIMC-IS handled sensors, that are placed under i2c-isp device |
diff --git a/drivers/media/platform/exynos4-is/mipi-csis.c b/drivers/media/platform/exynos4-is/mipi-csis.c index fd1ae6549607..3678ba59725c 100644 --- a/drivers/media/platform/exynos4-is/mipi-csis.c +++ b/drivers/media/platform/exynos4-is/mipi-csis.c | |||
@@ -772,7 +772,7 @@ static int s5pcsis_parse_dt(struct platform_device *pdev, | |||
772 | /* Get port node and validate MIPI-CSI channel id. */ | 772 | /* Get port node and validate MIPI-CSI channel id. */ |
773 | v4l2_of_parse_endpoint(node, &endpoint); | 773 | v4l2_of_parse_endpoint(node, &endpoint); |
774 | 774 | ||
775 | state->index = endpoint.port - FIMC_INPUT_MIPI_CSI2_0; | 775 | state->index = endpoint.base.port - FIMC_INPUT_MIPI_CSI2_0; |
776 | if (state->index < 0 || state->index >= CSIS_MAX_ENTITIES) | 776 | if (state->index < 0 || state->index >= CSIS_MAX_ENTITIES) |
777 | return -ENXIO; | 777 | return -ENXIO; |
778 | 778 | ||
diff --git a/drivers/media/v4l2-core/v4l2-of.c b/drivers/media/v4l2-core/v4l2-of.c index f919db358bbe..b4ed9a955fbe 100644 --- a/drivers/media/v4l2-core/v4l2-of.c +++ b/drivers/media/v4l2-core/v4l2-of.c | |||
@@ -127,17 +127,9 @@ static void v4l2_of_parse_parallel_bus(const struct device_node *node, | |||
127 | int v4l2_of_parse_endpoint(const struct device_node *node, | 127 | int v4l2_of_parse_endpoint(const struct device_node *node, |
128 | struct v4l2_of_endpoint *endpoint) | 128 | struct v4l2_of_endpoint *endpoint) |
129 | { | 129 | { |
130 | struct device_node *port_node = of_get_parent(node); | 130 | of_graph_parse_endpoint(node, &endpoint->base); |
131 | 131 | endpoint->bus_type = 0; | |
132 | memset(endpoint, 0, offsetof(struct v4l2_of_endpoint, head)); | 132 | memset(&endpoint->bus, 0, sizeof(endpoint->bus)); |
133 | |||
134 | endpoint->local_node = node; | ||
135 | /* | ||
136 | * It doesn't matter whether the two calls below succeed. | ||
137 | * If they don't then the default value 0 is used. | ||
138 | */ | ||
139 | of_property_read_u32(port_node, "reg", &endpoint->port); | ||
140 | of_property_read_u32(node, "reg", &endpoint->id); | ||
141 | 133 | ||
142 | v4l2_of_parse_csi_bus(node, endpoint); | 134 | v4l2_of_parse_csi_bus(node, endpoint); |
143 | /* | 135 | /* |
@@ -147,8 +139,6 @@ int v4l2_of_parse_endpoint(const struct device_node *node, | |||
147 | if (endpoint->bus.mipi_csi2.flags == 0) | 139 | if (endpoint->bus.mipi_csi2.flags == 0) |
148 | v4l2_of_parse_parallel_bus(node, endpoint); | 140 | v4l2_of_parse_parallel_bus(node, endpoint); |
149 | 141 | ||
150 | of_node_put(port_node); | ||
151 | |||
152 | return 0; | 142 | return 0; |
153 | } | 143 | } |
154 | EXPORT_SYMBOL(v4l2_of_parse_endpoint); | 144 | EXPORT_SYMBOL(v4l2_of_parse_endpoint); |
diff --git a/drivers/of/base.c b/drivers/of/base.c index a8e47d37cc7f..715144af3a83 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -1985,6 +1985,34 @@ struct device_node *of_find_next_cache_node(const struct device_node *np) | |||
1985 | } | 1985 | } |
1986 | 1986 | ||
1987 | /** | 1987 | /** |
1988 | * of_graph_parse_endpoint() - parse common endpoint node properties | ||
1989 | * @node: pointer to endpoint device_node | ||
1990 | * @endpoint: pointer to the OF endpoint data structure | ||
1991 | * | ||
1992 | * The caller should hold a reference to @node. | ||
1993 | */ | ||
1994 | int of_graph_parse_endpoint(const struct device_node *node, | ||
1995 | struct of_endpoint *endpoint) | ||
1996 | { | ||
1997 | struct device_node *port_node = of_get_parent(node); | ||
1998 | |||
1999 | memset(endpoint, 0, sizeof(*endpoint)); | ||
2000 | |||
2001 | endpoint->local_node = node; | ||
2002 | /* | ||
2003 | * It doesn't matter whether the two calls below succeed. | ||
2004 | * If they don't then the default value 0 is used. | ||
2005 | */ | ||
2006 | of_property_read_u32(port_node, "reg", &endpoint->port); | ||
2007 | of_property_read_u32(node, "reg", &endpoint->id); | ||
2008 | |||
2009 | of_node_put(port_node); | ||
2010 | |||
2011 | return 0; | ||
2012 | } | ||
2013 | EXPORT_SYMBOL(of_graph_parse_endpoint); | ||
2014 | |||
2015 | /** | ||
1988 | * of_graph_get_next_endpoint() - get next endpoint node | 2016 | * of_graph_get_next_endpoint() - get next endpoint node |
1989 | * @parent: pointer to the parent device node | 2017 | * @parent: pointer to the parent device node |
1990 | * @prev: previous endpoint node, or NULL to get first | 2018 | * @prev: previous endpoint node, or NULL to get first |