This RFC patch series adds the control handling framework and implements it in ivtv and all subdev drivers used by ivtv. It is a bare-bones implementation, so no sysfs or debugfs enhancements. It is the second version of this framework, incorporating comments from Laurent. Changes compared to the first version: - Updated the documentation, hopefully making it easier to understand. - v4l2_ctrl_new_custom now uses a new v4l2_ctrl_config struct instead of a long argument list. - v4l2_ctrl_g/s is now renamed to v4l2_ctrl_g/s_ctrl. - The v4l2_ctrl.h header now uses kernel doc comments. - Removed the 'strict validation' feature. - Added a new .init op that allows you to initialize many of the v4l2_ctrl fields on first use. Required by uvc. - No longer needed to initialize ctrl_handler in struct video_device. It will copy the ctrl_handler from struct v4l2_device if needed. - Renamed the v4l2_sd_* helper functions to v4l2_subdev_*. I decided *not* to rename the v4l2_ctrl struct. What does the struct describe? A control. Period. So I really don't know what else to call it. Every other name I can think of is contrived. It really encapsulates all the data and info that describes a control and its state. Yes, it is close to struct v4l2_control, but on the other hand any driver that uses this framework will no longer use v4l2_control (or v4l2_ext_controls for that matter). It will only use v4l2_ctrl. So I do not think there will be much cause for confusion here. Anyway, comments are welcome. Once this is in then we can start migrating all subdev drivers to this framework, followed by all bridge drivers. Converted subdev drivers can still be used by unconverted bridge drivers. Once all bridge drivers are converted the subdev backwards compatibility code can be removed. The same is true for the cx2341x module: both converted and unconverted bridge drivers are supported. Once all bridge drivers that use this module are converted the compat code can be removed from cx2341x (and that will save about 1060 lines of hard to understand code). Regards, Hans Hans Verkuil (15): v4l2: Add new control handling framework v4l2-ctrls: reorder 'case' statements to match order in header. Documentation: add v4l2-controls.txt documenting the new controls API. v4l2: hook up the new control framework into the core framework saa7115: convert to the new control framework msp3400: convert to the new control framework saa717x: convert to the new control framework cx25840/ivtv: replace ugly priv control with s_config cx25840: convert to the new control framework cx2341x: convert to the control framework wm8775: convert to the new control framework cs53l32a: convert to new control framework. wm8739: convert to the new control framework ivtv: convert gpio subdev to new control framework. ivtv: convert to the new control framework Documentation/video4linux/v4l2-controls.txt | 600 +++++++++ drivers/media/video/Makefile | 2 +- drivers/media/video/cs53l32a.c | 107 +- drivers/media/video/cx2341x.c | 734 +++++++++-- drivers/media/video/cx25840/cx25840-audio.c | 144 +-- drivers/media/video/cx25840/cx25840-core.c | 201 ++-- drivers/media/video/cx25840/cx25840-core.h | 23 +- drivers/media/video/ivtv/ivtv-controls.c | 275 +---- drivers/media/video/ivtv/ivtv-controls.h | 6 +- drivers/media/video/ivtv/ivtv-driver.c | 26 +- drivers/media/video/ivtv/ivtv-driver.h | 4 +- drivers/media/video/ivtv/ivtv-fileops.c | 23 +- drivers/media/video/ivtv/ivtv-firmware.c | 6 +- drivers/media/video/ivtv/ivtv-gpio.c | 77 +- drivers/media/video/ivtv/ivtv-i2c.c | 7 + drivers/media/video/ivtv/ivtv-ioctl.c | 31 +- drivers/media/video/ivtv/ivtv-streams.c | 20 +- drivers/media/video/msp3400-driver.c | 248 ++--- drivers/media/video/msp3400-driver.h | 16 +- drivers/media/video/msp3400-kthreads.c | 16 +- drivers/media/video/saa7115.c | 180 ++-- drivers/media/video/saa717x.c | 323 ++---- drivers/media/video/v4l2-common.c | 479 +------- drivers/media/video/v4l2-ctrls.c | 1844 +++++++++++++++++++++++++++ drivers/media/video/v4l2-dev.c | 8 +- drivers/media/video/v4l2-device.c | 7 + drivers/media/video/v4l2-ioctl.c | 46 +- drivers/media/video/wm8739.c | 176 +-- drivers/media/video/wm8775.c | 79 +- include/media/cx2341x.h | 81 ++ include/media/cx25840.h | 11 + include/media/v4l2-ctrls.h | 448 +++++++ include/media/v4l2-dev.h | 4 + include/media/v4l2-device.h | 4 + include/media/v4l2-subdev.h | 3 + 35 files changed, 4351 insertions(+), 1908 deletions(-) create mode 100644 Documentation/video4linux/v4l2-controls.txt create mode 100644 drivers/media/video/v4l2-ctrls.c create mode 100644 include/media/v4l2-ctrls.h -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html