media: v4l: fwnode: Support parsing of CSI-2 C-PHY endpoints
authorSakari Ailus <sakari.ailus@linux.intel.com>
Mon, 23 Jul 2018 13:09:28 +0000 (09:09 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 4 Oct 2018 20:23:34 +0000 (16:23 -0400)
The V4L2 fwnode framework only parsed CSI-2 D-PHY endpoints while C-PHY
support wasn't there. Also parse endpoints for media bus type
V4L2_MBUS_CSI2_CPHY.

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 6bbf024..6300b59 100644 (file)
@@ -145,7 +145,8 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode,
        u32 v;
        int rval;
 
-       if (bus_type == V4L2_MBUS_CSI2_DPHY) {
+       if (bus_type == V4L2_MBUS_CSI2_DPHY ||
+           bus_type == V4L2_MBUS_CSI2_CPHY) {
                use_default_lane_mapping = true;
 
                num_data_lanes = min_t(u32, bus->num_data_lanes,
@@ -221,10 +222,12 @@ static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode,
                flags |= V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
        }
 
-       if (bus_type == V4L2_MBUS_CSI2_DPHY || lanes_used ||
+       if (bus_type == V4L2_MBUS_CSI2_DPHY ||
+           bus_type == V4L2_MBUS_CSI2_CPHY || lanes_used ||
            have_clk_lane || (flags & ~V4L2_MBUS_CSI2_CONTINUOUS_CLOCK)) {
                bus->flags = flags;
-               vep->bus_type = V4L2_MBUS_CSI2_DPHY;
+               if (bus_type == V4L2_MBUS_UNKNOWN)
+                       vep->bus_type = V4L2_MBUS_CSI2_DPHY;
                bus->num_data_lanes = num_data_lanes;
 
                if (use_default_lane_mapping) {
@@ -463,6 +466,7 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode,
 
                break;
        case V4L2_MBUS_CSI2_DPHY:
+       case V4L2_MBUS_CSI2_CPHY:
                rval = v4l2_fwnode_endpoint_parse_csi2_bus(fwnode, vep,
                                                           vep->bus_type);
                if (rval)