media: v4l2-fwnode: link_frequency is an optional property
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 20 Jun 2017 13:14:43 +0000 (09:14 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 26 Jul 2017 12:39:55 +0000 (08:39 -0400)
v4l2_fwnode_endpoint_alloc_parse() is intended as a replacement for
v4l2_fwnode_endpoint_parse(). It parses the "link-frequency" property and
if the property isn't found, it returns an error. However,
"link-frequency" is an optional property and if it does not exist is not
an error. Instead, the number of link frequencies is simply zero in that
case.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/v4l2-core/v4l2-fwnode.c

index a4f80ff..5cd2687 100644 (file)
@@ -291,23 +291,23 @@ struct v4l2_fwnode_endpoint *v4l2_fwnode_endpoint_alloc_parse(
 
        rval = fwnode_property_read_u64_array(fwnode, "link-frequencies",
                                              NULL, 0);
-       if (rval < 0)
-               goto out_err;
-
-       vep->link_frequencies =
-               kmalloc_array(rval, sizeof(*vep->link_frequencies), GFP_KERNEL);
-       if (!vep->link_frequencies) {
-               rval = -ENOMEM;
-               goto out_err;
-       }
+       if (rval > 0) {
+               vep->link_frequencies =
+                       kmalloc_array(rval, sizeof(*vep->link_frequencies),
+                                     GFP_KERNEL);
+               if (!vep->link_frequencies) {
+                       rval = -ENOMEM;
+                       goto out_err;
+               }
 
-       vep->nr_of_link_frequencies = rval;
+               vep->nr_of_link_frequencies = rval;
 
-       rval = fwnode_property_read_u64_array(fwnode, "link-frequencies",
-                                             vep->link_frequencies,
-                                             vep->nr_of_link_frequencies);
-       if (rval < 0)
-               goto out_err;
+               rval = fwnode_property_read_u64_array(
+                       fwnode, "link-frequencies", vep->link_frequencies,
+                       vep->nr_of_link_frequencies);
+               if (rval < 0)
+                       goto out_err;
+       }
 
        return vep;