media: v4l: fwnode: Support driver-defined lane mapping defaults
authorSakari Ailus <sakari.ailus@linux.intel.com>
Fri, 20 Jul 2018 10:14:14 +0000 (06:14 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 4 Oct 2018 20:13:18 +0000 (16:13 -0400)
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>
drivers/media/v4l2-core/v4l2-fwnode.c

index 9d99f0a..040323c 100644 (file)
@@ -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,