@@ -486,6 +486,33 @@ int v4l2_fwnode_reference_parse(
}
EXPORT_SYMBOL_GPL(v4l2_fwnode_reference_parse);
+int v4l2_fwnode_reference_parse_sensor_common(
+ struct device *dev, struct v4l2_async_notifier *notifier)
+{
+ static const struct {
+ char *name;
+ char *cells;
+ unsigned int nr_cells;
+ } props[] = {
+ { "flash", NULL, 0 },
+ { "lens-focus", NULL, 0 },
+ };
+ unsigned int i;
+ int rval;
+
+ for (i = 0; i < ARRAY_SIZE(props); i++) {
+ rval = v4l2_fwnode_reference_parse(
+ dev, notifier, props[i].name, props[i].cells,
+ props[i].nr_cells, sizeof(struct v4l2_async_subdev),
+ NULL);
+ if (rval < 0 && rval != -ENOENT)
+ return rval;
+ }
+
+ return rval;
+}
+EXPORT_SYMBOL_GPL(v4l2_fwnode_reference_parse_sensor_common);
+
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Sakari Ailus <sakari.ailus@linux.intel.com>");
MODULE_AUTHOR("Sylwester Nawrocki <s.nawrocki@samsung.com>");
@@ -118,4 +118,7 @@ int v4l2_fwnode_reference_parse(
struct fwnode_reference_args *args,
struct v4l2_async_subdev *asd));
+int v4l2_fwnode_reference_parse_sensor_common(
+ struct device *dev, struct v4l2_async_notifier *notifier);
+
#endif /* _V4L2_FWNODE_H */
Add v4l2_fwnode_parse_reference_sensor_common for parsing common sensor properties that refer to adjacent devices such as flash or lens driver chips. As this is an association only, there's little a regular driver needs to know about these devices as such. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> --- drivers/media/v4l2-core/v4l2-fwnode.c | 27 +++++++++++++++++++++++++++ include/media/v4l2-fwnode.h | 3 +++ 2 files changed, 30 insertions(+)