diff options
author | Sakari Ailus <sakari.ailus@linux.intel.com> | 2018-07-20 13:14:14 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2018-10-04 23:13:18 +0300 |
commit | c2475aeb12d6fab3c1f9987df0fe1708cf587bf2 (patch) | |
tree | f5065cb8fb3097d2402b0dd66d2b8028a71759c3 /drivers/media/v4l2-core | |
parent | af11a74a04a57dfc050b48b67cc1e7f5b71e6a95 (diff) | |
download | linux-c2475aeb12d6fab3c1f9987df0fe1708cf587bf2.tar.xz |
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')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-fwnode.c | 20 |
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, |