diff options
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/cx18/cx18-driver.h | 19 | ||||
-rw-r--r-- | drivers/media/video/ivtv/ivtv-driver.h | 14 |
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 | ||