[media] v4l2-core: add code to check for specific ops
This patch adds a v4l2_subdev_has_op() macro and a v4l2_device_has_op macro to quickly check if a specific subdev or any subdev supports a particular subdev operation. This makes it easy for drivers to disable certain ioctls if none of the subdevs supports the necessary functionality. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
6cd247ef22
commit
2180f92def
include/media
|
@ -190,4 +190,17 @@ v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev);
|
|||
##args); \
|
||||
})
|
||||
|
||||
#define v4l2_device_has_op(v4l2_dev, o, f) \
|
||||
({ \
|
||||
struct v4l2_subdev *__sd; \
|
||||
bool __result = false; \
|
||||
list_for_each_entry(__sd, &(v4l2_dev)->subdevs, list) { \
|
||||
if (v4l2_subdev_has_op(__sd, o, f)) { \
|
||||
__result = true; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
__result; \
|
||||
})
|
||||
|
||||
#endif
|
||||
|
|
|
@ -687,4 +687,7 @@ void v4l2_subdev_init(struct v4l2_subdev *sd,
|
|||
((!(sd) || !(sd)->v4l2_dev || !(sd)->v4l2_dev->notify) ? -ENODEV : \
|
||||
(sd)->v4l2_dev->notify((sd), (notification), (arg)))
|
||||
|
||||
#define v4l2_subdev_has_op(sd, o, f) \
|
||||
((sd)->ops->o && (sd)->ops->o->f)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user