From 800930b924c19a56b3a6e94ad351cd0715fb410d Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Fri, 28 Feb 2014 20:30:08 +0000 Subject: brcm2708: update against latest rpi-3.10.y branch Update our copies of the brcm2708 patches to the latest rpi-3.10-y rebased against linux-3.10.y stable (3.10.32). This should hopefully make it easier for us in the future to leverage the raspberry/rpi-* branches. Signed-off-by: Florian Fainelli git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39770 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../0135-V4L2-Add-flicker-avoidance-controls.patch | 108 +++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 target/linux/brcm2708/patches-3.10/0135-V4L2-Add-flicker-avoidance-controls.patch (limited to 'target/linux/brcm2708/patches-3.10/0135-V4L2-Add-flicker-avoidance-controls.patch') diff --git a/target/linux/brcm2708/patches-3.10/0135-V4L2-Add-flicker-avoidance-controls.patch b/target/linux/brcm2708/patches-3.10/0135-V4L2-Add-flicker-avoidance-controls.patch new file mode 100644 index 0000000000..b67a8bafc7 --- /dev/null +++ b/target/linux/brcm2708/patches-3.10/0135-V4L2-Add-flicker-avoidance-controls.patch @@ -0,0 +1,108 @@ +From 9d80a4ce15c265530d8372a3577748123e365ee3 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Mon, 9 Dec 2013 16:40:24 +0000 +Subject: [PATCH 135/174] V4L2: Add flicker avoidance controls + +Add support for V4L2_CID_POWER_LINE_FREQUENCY to set flicker +avoidance frequencies. + +Signed-off-by: Dave Stevenson +--- + drivers/media/platform/bcm2835/bcm2835-camera.h | 2 +- + drivers/media/platform/bcm2835/controls.c | 42 ++++++++++++++++++++++++ + drivers/media/platform/bcm2835/mmal-parameters.h | 8 +++++ + 3 files changed, 51 insertions(+), 1 deletion(-) + +--- a/drivers/media/platform/bcm2835/bcm2835-camera.h ++++ b/drivers/media/platform/bcm2835/bcm2835-camera.h +@@ -15,7 +15,7 @@ + * core driver device + */ + +-#define V4L2_CTRL_COUNT 19 /* number of v4l controls */ ++#define V4L2_CTRL_COUNT 20 /* number of v4l controls */ + + enum { + MMAL_COMPONENT_CAMERA = 0, +--- a/drivers/media/platform/bcm2835/controls.c ++++ b/drivers/media/platform/bcm2835/controls.c +@@ -56,6 +56,13 @@ static const s64 iso_qmenu[] = { + 0, 100, 200, 400, 800, + }; + ++static const s64 mains_freq_qmenu[] = { ++ V4L2_CID_POWER_LINE_FREQUENCY_DISABLED, ++ V4L2_CID_POWER_LINE_FREQUENCY_50HZ, ++ V4L2_CID_POWER_LINE_FREQUENCY_60HZ, ++ V4L2_CID_POWER_LINE_FREQUENCY_AUTO ++}; ++ + /* Supported video encode modes */ + static const s64 bitrate_mode_qmenu[] = { + (s64)V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, +@@ -373,6 +380,35 @@ static int ctrl_set_metering_mode(struct + &u32_value, sizeof(u32_value)); + } + ++static int ctrl_set_flicker_avoidance(struct bm2835_mmal_dev *dev, ++ struct v4l2_ctrl *ctrl, ++ const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) ++{ ++ u32 u32_value; ++ struct vchiq_mmal_port *control; ++ ++ control = &dev->component[MMAL_COMPONENT_CAMERA]->control; ++ ++ switch (ctrl->val) { ++ case V4L2_CID_POWER_LINE_FREQUENCY_DISABLED: ++ u32_value = MMAL_PARAM_FLICKERAVOID_OFF; ++ break; ++ case V4L2_CID_POWER_LINE_FREQUENCY_50HZ: ++ u32_value = MMAL_PARAM_FLICKERAVOID_50HZ; ++ break; ++ case V4L2_CID_POWER_LINE_FREQUENCY_60HZ: ++ u32_value = MMAL_PARAM_FLICKERAVOID_60HZ; ++ break; ++ case V4L2_CID_POWER_LINE_FREQUENCY_AUTO: ++ u32_value = MMAL_PARAM_FLICKERAVOID_AUTO; ++ break; ++ } ++ ++ return vchiq_mmal_port_parameter_set(dev->instance, control, ++ mmal_ctrl->mmal_id, ++ &u32_value, sizeof(u32_value)); ++} ++ + static int ctrl_set_awb_mode(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +@@ -706,6 +742,12 @@ static const struct bm2835_mmal_v4l2_ctr + 30, 1, NULL, + MMAL_PARAMETER_JPEG_Q_FACTOR, &ctrl_set_image_encode_output + }, ++ { ++ V4L2_CID_POWER_LINE_FREQUENCY, MMAL_CONTROL_TYPE_STD_MENU, ++ 0, ARRAY_SIZE(mains_freq_qmenu) - 1, ++ 1, 1, NULL, ++ MMAL_PARAMETER_FLICKER_AVOID, &ctrl_set_flicker_avoidance ++ }, + }; + + int bm2835_mmal_set_all_camera_controls(struct bm2835_mmal_dev *dev) +--- a/drivers/media/platform/bcm2835/mmal-parameters.h ++++ b/drivers/media/platform/bcm2835/mmal-parameters.h +@@ -271,6 +271,14 @@ enum mmal_parameter_imagefx { + MMAL_PARAM_IMAGEFX_CARTOON, + }; + ++enum MMAL_PARAM_FLICKERAVOID_T { ++ MMAL_PARAM_FLICKERAVOID_OFF, ++ MMAL_PARAM_FLICKERAVOID_AUTO, ++ MMAL_PARAM_FLICKERAVOID_50HZ, ++ MMAL_PARAM_FLICKERAVOID_60HZ, ++ MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF ++}; ++ + /** Manner of video rate control */ + enum mmal_parameter_rate_control_mode { + MMAL_VIDEO_RATECONTROL_DEFAULT, -- cgit v1.2.3