media: v4l: fwnode: Print bus type
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 2 Jan 2018 15:44:34 +0000 (10:44 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 4 Oct 2018 20:22:46 +0000 (16:22 -0400)
Print bus type either as set by the driver or as parsed from the bus-type
property, as well as the guessed V4L2 media bus type.

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 ae81af5..0bbe848 100644 (file)
@@ -99,6 +99,36 @@ v4l2_fwnode_bus_type_to_mbus(enum v4l2_fwnode_bus_type type)
        return conv ? conv->mbus_type : V4L2_MBUS_UNKNOWN;
 }
 
+static const char *
+v4l2_fwnode_bus_type_to_string(enum v4l2_fwnode_bus_type type)
+{
+       const struct v4l2_fwnode_bus_conv *conv =
+               get_v4l2_fwnode_bus_conv_by_fwnode_bus(type);
+
+       return conv ? conv->name : "not found";
+}
+
+static const struct v4l2_fwnode_bus_conv *
+get_v4l2_fwnode_bus_conv_by_mbus(enum v4l2_mbus_type type)
+{
+       unsigned int i;
+
+       for (i = 0; i < ARRAY_SIZE(busses); i++)
+               if (busses[i].mbus_type == type)
+                       return &busses[i];
+
+       return NULL;
+}
+
+static const char *
+v4l2_fwnode_mbus_type_to_string(enum v4l2_mbus_type type)
+{
+       const struct v4l2_fwnode_bus_conv *conv =
+               get_v4l2_fwnode_bus_conv_by_mbus(type);
+
+       return conv ? conv->name : "not found";
+}
+
 static int v4l2_fwnode_endpoint_parse_csi2_bus(struct fwnode_handle *fwnode,
                                               struct v4l2_fwnode_endpoint *vep,
                                               enum v4l2_mbus_type bus_type)
@@ -393,6 +423,10 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode,
        memset(&vep->base, 0, sizeof(vep->base));
 
        fwnode_property_read_u32(fwnode, "bus-type", &bus_type);
+       pr_debug("fwnode video bus type %s (%u), mbus type %s (%u)\n",
+                v4l2_fwnode_bus_type_to_string(bus_type), bus_type,
+                v4l2_fwnode_mbus_type_to_string(vep->bus_type),
+                vep->bus_type);
 
        mbus_type = v4l2_fwnode_bus_type_to_mbus(bus_type);
 
@@ -407,6 +441,10 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode,
                        v4l2_fwnode_endpoint_parse_parallel_bus(
                                fwnode, vep, V4L2_MBUS_UNKNOWN);
 
+               pr_debug("assuming media bus type %s (%u)\n",
+                        v4l2_fwnode_mbus_type_to_string(vep->bus_type),
+                        vep->bus_type);
+
                break;
        case V4L2_MBUS_CCP2:
        case V4L2_MBUS_CSI1: