diff mbox series

[5/5] media: imx335: Limit analogue gain value

Message ID 20240306081038.212412-6-umang.jain@ideasonboard.com (mailing list archive)
State Superseded
Headers show
Series media: imx335: 2/4 lane ops and improvements | expand

Commit Message

Umang Jain March 6, 2024, 8:10 a.m. UTC
The sensor gain (both analog and digital) are controlled by a
single gain value where:
- 0dB to 30dB correspond to analog gain
- 30.3dB to 72dB correspond to digital gain
(with 0.3dB step)

Hence, limit the analogue gain value to 100.
For digital gain, support can be added later if needed.

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
---
 drivers/media/i2c/imx335.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Comments

Kieran Bingham March 6, 2024, 4:59 p.m. UTC | #1
Quoting Umang Jain (2024-03-06 08:10:38)
> The sensor gain (both analog and digital) are controlled by a
> single gain value where:
> - 0dB to 30dB correspond to analog gain
> - 30.3dB to 72dB correspond to digital gain
> (with 0.3dB step)
> 
> Hence, limit the analogue gain value to 100.
> For digital gain, support can be added later if needed.
> 
> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>

I think this makes the behaviour more consistent with expectations from
userspace for the ANALOGUE_GAIN.

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>


> ---
>  drivers/media/i2c/imx335.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
> index c00e0c2be3f3..701bd5318b45 100644
> --- a/drivers/media/i2c/imx335.c
> +++ b/drivers/media/i2c/imx335.c
> @@ -45,7 +45,7 @@
>  /* Analog gain control */
>  #define IMX335_REG_AGAIN       CCI_REG8(0x30e8)
>  #define IMX335_AGAIN_MIN       0
> -#define IMX335_AGAIN_MAX       240
> +#define IMX335_AGAIN_MAX       100
>  #define IMX335_AGAIN_STEP      1
>  #define IMX335_AGAIN_DEFAULT   0
>  
> @@ -1169,6 +1169,14 @@ static int imx335_init_controls(struct imx335 *imx335)
>                                              IMX335_EXPOSURE_STEP,
>                                              IMX335_EXPOSURE_DEFAULT);
>  
> +       /*
> +        * The sensor has an analog gain and a digital gain, both controlled
> +        * through a single gain value, expressed in 0.3dB increments. Values
> +        * from 0.0dB (0) to 30.0dB (100) apply analog gain only, higher values
> +        * up to 72.0dB (240) add further digital gain. Limit the range to
> +        * analog gain only, support for digital gain can be added separately
> +        * if needed.
> +        */
>         imx335->again_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
>                                                &imx335_ctrl_ops,
>                                                V4L2_CID_ANALOGUE_GAIN,
> -- 
> 2.43.0
>
diff mbox series

Patch

diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
index c00e0c2be3f3..701bd5318b45 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
@@ -45,7 +45,7 @@ 
 /* Analog gain control */
 #define IMX335_REG_AGAIN	CCI_REG8(0x30e8)
 #define IMX335_AGAIN_MIN	0
-#define IMX335_AGAIN_MAX	240
+#define IMX335_AGAIN_MAX	100
 #define IMX335_AGAIN_STEP	1
 #define IMX335_AGAIN_DEFAULT	0
 
@@ -1169,6 +1169,14 @@  static int imx335_init_controls(struct imx335 *imx335)
 					     IMX335_EXPOSURE_STEP,
 					     IMX335_EXPOSURE_DEFAULT);
 
+	/*
+	 * The sensor has an analog gain and a digital gain, both controlled
+	 * through a single gain value, expressed in 0.3dB increments. Values
+	 * from 0.0dB (0) to 30.0dB (100) apply analog gain only, higher values
+	 * up to 72.0dB (240) add further digital gain. Limit the range to
+	 * analog gain only, support for digital gain can be added separately
+	 * if needed.
+	 */
 	imx335->again_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
 					       &imx335_ctrl_ops,
 					       V4L2_CID_ANALOGUE_GAIN,