Commit 114df304 authored by Jacopo Mondi's avatar Jacopo Mondi Committed by Mauro Carvalho Chehab

media: ar0521: Add V4L2_CID_ANALOG_GAIN

Add support for V4L2_CID_ANALOG_GAIN. The control programs the global
gain register which applies to all color channels.
Signed-off-by: default avatarJacopo Mondi <jacopo@jmondi.org>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent f7910135
...@@ -35,6 +35,11 @@ ...@@ -35,6 +35,11 @@
#define AR0521_HEIGHT_BLANKING_MIN 38u /* must be even */ #define AR0521_HEIGHT_BLANKING_MIN 38u /* must be even */
#define AR0521_TOTAL_WIDTH_MIN 2968u #define AR0521_TOTAL_WIDTH_MIN 2968u
#define AR0521_ANA_GAIN_MIN 0x00
#define AR0521_ANA_GAIN_MAX 0x3f
#define AR0521_ANA_GAIN_STEP 0x01
#define AR0521_ANA_GAIN_DEFAULT 0x00
/* AR0521 registers */ /* AR0521 registers */
#define AR0521_REG_VT_PIX_CLK_DIV 0x0300 #define AR0521_REG_VT_PIX_CLK_DIV 0x0300
#define AR0521_REG_FRAME_LENGTH_LINES 0x0340 #define AR0521_REG_FRAME_LENGTH_LINES 0x0340
...@@ -50,6 +55,8 @@ ...@@ -50,6 +55,8 @@
#define AR0521_REG_RESET_RESTART BIT(1) #define AR0521_REG_RESET_RESTART BIT(1)
#define AR0521_REG_RESET_INIT BIT(0) #define AR0521_REG_RESET_INIT BIT(0)
#define AR0521_REG_ANA_GAIN_CODE_GLOBAL 0x3028
#define AR0521_REG_GREEN1_GAIN 0x3056 #define AR0521_REG_GREEN1_GAIN 0x3056
#define AR0521_REG_BLUE_GAIN 0x3058 #define AR0521_REG_BLUE_GAIN 0x3058
#define AR0521_REG_RED_GAIN 0x305A #define AR0521_REG_RED_GAIN 0x305A
...@@ -455,6 +462,10 @@ static int ar0521_s_ctrl(struct v4l2_ctrl *ctrl) ...@@ -455,6 +462,10 @@ static int ar0521_s_ctrl(struct v4l2_ctrl *ctrl)
case V4L2_CID_VBLANK: case V4L2_CID_VBLANK:
ret = ar0521_set_geometry(sensor); ret = ar0521_set_geometry(sensor);
break; break;
case V4L2_CID_ANALOGUE_GAIN:
ret = ar0521_write_reg(sensor, AR0521_REG_ANA_GAIN_CODE_GLOBAL,
ctrl->val);
break;
case V4L2_CID_GAIN: case V4L2_CID_GAIN:
case V4L2_CID_RED_BALANCE: case V4L2_CID_RED_BALANCE:
case V4L2_CID_BLUE_BALANCE: case V4L2_CID_BLUE_BALANCE:
...@@ -498,6 +509,11 @@ static int ar0521_init_controls(struct ar0521_dev *sensor) ...@@ -498,6 +509,11 @@ static int ar0521_init_controls(struct ar0521_dev *sensor)
/* We can use our own mutex for the ctrl lock */ /* We can use our own mutex for the ctrl lock */
hdl->lock = &sensor->lock; hdl->lock = &sensor->lock;
/* Analog gain */
v4l2_ctrl_new_std(hdl, ops, V4L2_CID_ANALOGUE_GAIN,
AR0521_ANA_GAIN_MIN, AR0521_ANA_GAIN_MAX,
AR0521_ANA_GAIN_STEP, AR0521_ANA_GAIN_DEFAULT);
/* Manual gain */ /* Manual gain */
ctrls->gain = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_GAIN, 0, 511, 1, 0); ctrls->gain = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_GAIN, 0, 511, 1, 0);
ctrls->red_balance = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_RED_BALANCE, ctrls->red_balance = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_RED_BALANCE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment