Message ID | 20240308083312.90279-7-umang.jain@ideasonboard.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | media: imx335: 2/4 lane ops and improvements | expand |
Hi Umang, On Fri, Mar 08, 2024 at 02:03:12PM +0530, Umang Jain wrote: > 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> > 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 85cb53e3d5d4..cc59f446cd09 100644 > --- a/drivers/media/i2c/imx335.c > +++ b/drivers/media/i2c/imx335.c > @@ -53,7 +53,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 > > @@ -1174,6 +1174,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 > > Unfortunately I don't have the datasheet of this sensor but the logic behind this patch looks good to me. :) Btw I check the datasheet of IMX323LQN-C and the gain controll logic it's pretty similar except for the values in dB (different sensor). Hope this help. Reviewed-by: Tommaso Merciai <tomm.merciai@gmail.com> Thanks & Regards, Tommaso
diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c index 85cb53e3d5d4..cc59f446cd09 100644 --- a/drivers/media/i2c/imx335.c +++ b/drivers/media/i2c/imx335.c @@ -53,7 +53,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 @@ -1174,6 +1174,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,