aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video')
-rw-r--r--drivers/media/video/cx18/cx18-driver.h19
-rw-r--r--drivers/media/video/ivtv/ivtv-driver.h14
2 files changed, 24 insertions, 9 deletions
diff --git a/drivers/media/video/cx18/cx18-driver.h b/drivers/media/video/cx18/cx18-driver.h
index 9bc51a99376b..77be58c1096b 100644
--- a/drivers/media/video/cx18/cx18-driver.h
+++ b/drivers/media/video/cx18/cx18-driver.h
@@ -674,18 +674,25 @@ static inline int cx18_raw_vbi(const struct cx18 *cx)
674 674
675/* Call the specified callback for all subdevs with a grp_id bit matching the 675/* Call the specified callback for all subdevs with a grp_id bit matching the
676 * mask in hw (if 0, then match them all). Ignore any errors. */ 676 * mask in hw (if 0, then match them all). Ignore any errors. */
677#define cx18_call_hw(cx, hw, o, f, args...) \ 677#define cx18_call_hw(cx, hw, o, f, args...) \
678 __v4l2_device_call_subdevs(&(cx)->v4l2_dev, \ 678 do { \
679 !(hw) || (sd->grp_id & (hw)), o, f , ##args) 679 struct v4l2_subdev *__sd; \
680 __v4l2_device_call_subdevs_p(&(cx)->v4l2_dev, __sd, \
681 !(hw) || (__sd->grp_id & (hw)), o, f , ##args); \
682 } while (0)
680 683
681#define cx18_call_all(cx, o, f, args...) cx18_call_hw(cx, 0, o, f , ##args) 684#define cx18_call_all(cx, o, f, args...) cx18_call_hw(cx, 0, o, f , ##args)
682 685
683/* Call the specified callback for all subdevs with a grp_id bit matching the 686/* Call the specified callback for all subdevs with a grp_id bit matching the
684 * mask in hw (if 0, then match them all). If the callback returns an error 687 * mask in hw (if 0, then match them all). If the callback returns an error
685 * other than 0 or -ENOIOCTLCMD, then return with that error code. */ 688 * other than 0 or -ENOIOCTLCMD, then return with that error code. */
686#define cx18_call_hw_err(cx, hw, o, f, args...) \ 689#define cx18_call_hw_err(cx, hw, o, f, args...) \
687 __v4l2_device_call_subdevs_until_err( \ 690({ \
688 &(cx)->v4l2_dev, !(hw) || (sd->grp_id & (hw)), o, f , ##args) 691 struct v4l2_subdev *__sd; \
692 __v4l2_device_call_subdevs_until_err_p(&(cx)->v4l2_dev, \
693 __sd, !(hw) || (__sd->grp_id & (hw)), o, f, \
694 ##args); \
695})
689 696
690#define cx18_call_all_err(cx, o, f, args...) \ 697#define cx18_call_all_err(cx, o, f, args...) \
691 cx18_call_hw_err(cx, 0, o, f , ##args) 698 cx18_call_hw_err(cx, 0, o, f , ##args)
diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h
index 75803141481e..04bacdbd10bb 100644
--- a/drivers/media/video/ivtv/ivtv-driver.h
+++ b/drivers/media/video/ivtv/ivtv-driver.h
@@ -811,15 +811,23 @@ static inline int ivtv_raw_vbi(const struct ivtv *itv)
811/* Call the specified callback for all subdevs matching hw (if 0, then 811/* Call the specified callback for all subdevs matching hw (if 0, then
812 match them all). Ignore any errors. */ 812 match them all). Ignore any errors. */
813#define ivtv_call_hw(itv, hw, o, f, args...) \ 813#define ivtv_call_hw(itv, hw, o, f, args...) \
814 __v4l2_device_call_subdevs(&(itv)->v4l2_dev, !(hw) || (sd->grp_id & (hw)), o, f , ##args) 814 do { \
815 struct v4l2_subdev *__sd; \
816 __v4l2_device_call_subdevs_p(&(itv)->v4l2_dev, __sd, \
817 !(hw) || (__sd->grp_id & (hw)), o, f , ##args); \
818 } while (0)
815 819
816#define ivtv_call_all(itv, o, f, args...) ivtv_call_hw(itv, 0, o, f , ##args) 820#define ivtv_call_all(itv, o, f, args...) ivtv_call_hw(itv, 0, o, f , ##args)
817 821
818/* Call the specified callback for all subdevs matching hw (if 0, then 822/* Call the specified callback for all subdevs matching hw (if 0, then
819 match them all). If the callback returns an error other than 0 or 823 match them all). If the callback returns an error other than 0 or
820 -ENOIOCTLCMD, then return with that error code. */ 824 -ENOIOCTLCMD, then return with that error code. */
821#define ivtv_call_hw_err(itv, hw, o, f, args...) \ 825#define ivtv_call_hw_err(itv, hw, o, f, args...) \
822 __v4l2_device_call_subdevs_until_err(&(itv)->v4l2_dev, !(hw) || (sd->grp_id & (hw)), o, f , ##args) 826({ \
827 struct v4l2_subdev *__sd; \
828 __v4l2_device_call_subdevs_until_err_p(&(itv)->v4l2_dev, __sd, \
829 !(hw) || (__sd->grp_id & (hw)), o, f , ##args); \
830})
823 831
824#define ivtv_call_all_err(itv, o, f, args...) ivtv_call_hw_err(itv, 0, o, f , ##args) 832#define ivtv_call_all_err(itv, o, f, args...) ivtv_call_hw_err(itv, 0, o, f , ##args)
825 833