summaryrefslogtreecommitdiff
path: root/drivers/media/v4l2-core/v4l2-fwnode.c
diff options
context:
space:
mode:
authorSakari Ailus <sakari.ailus@linux.intel.com>2018-07-20 06:14:14 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-10-04 16:13:18 -0400
commitc2475aeb12d6fab3c1f9987df0fe1708cf587bf2 (patch)
treef5065cb8fb3097d2402b0dd66d2b8028a71759c3 /drivers/media/v4l2-core/v4l2-fwnode.c
parentaf11a74a04a57dfc050b48b67cc1e7f5b71e6a95 (diff)
media: v4l: fwnode: Support driver-defined lane mapping defaults
Make use of the default CSI-2 lane mapping from caller-passed configuration. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Tested-by: Steve Longerbeam <steve_longerbeam@mentor.com> Tested-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-fwnode.c')
-rw-r--r--drivers/media/v4l2-core/v4l2-fwnode.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c
index 9d99f0a3861f..040323c2e67a 100644
--- a/drivers/media/v4l2-core/v4l2-fwnode.c
+++ b/drivers/media/v4l2-core/v4l2-fwnode.c
@@ -55,10 +55,14 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode,
u32 v;
int rval;
- if (bus_type == V4L2_FWNODE_BUS_TYPE_CSI2_DPHY)
+ if (bus_type == V4L2_FWNODE_BUS_TYPE_CSI2_DPHY) {
num_data_lanes = min_t(u32, bus->num_data_lanes,
V4L2_FWNODE_CSI2_MAX_DATA_LANES);
+ for (i = 0; i < num_data_lanes; i++)
+ array[i] = bus->data_lanes[i];
+ }
+
rval = fwnode_property_read_u32_array(fwnode, "data-lanes", NULL, 0);
if (rval > 0) {
num_data_lanes =
@@ -66,15 +70,15 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode,
fwnode_property_read_u32_array(fwnode, "data-lanes", array,
num_data_lanes);
+ }
- for (i = 0; i < num_data_lanes; i++) {
- if (lanes_used & BIT(array[i]))
- pr_warn("duplicated lane %u in data-lanes\n",
- array[i]);
- lanes_used |= BIT(array[i]);
+ for (i = 0; i < num_data_lanes; i++) {
+ if (lanes_used & BIT(array[i]))
+ pr_warn("duplicated lane %u in data-lanes\n",
+ array[i]);
+ lanes_used |= BIT(array[i]);
- pr_debug("lane %u position %u\n", i, array[i]);
- }
+ pr_debug("lane %u position %u\n", i, array[i]);
}
rval = fwnode_property_read_u32_array(fwnode, "lane-polarities", NULL,