Message ID | 20241120-media-imx290-imx462-v2-0-7e562cf191d8@raspberrypi.com |
---|---|
Headers | show |
Series | media: i2c: imx290: Add support for imx462 | expand |
Hi Dave, Am Donnerstag, 5. Dezember 2024, 16:37:01 CET schrieb Dave Stevenson: > Hi Alexander > > On Thu, 5 Dec 2024 at 15:22, Alexander Stein > <alexander.stein@ew.tq-group.com> wrote: > > > > Hi Dave, > > > > Am Mittwoch, 20. November 2024, 20:17:03 CET schrieb Dave Stevenson: > > > The imx327 only supports up to 29.4dB of analogue gain, vs > > > the imx290 going up to 30dB. Both are in 0.3dB steps. > > > > While I agree for 30dB on imx290, my (maybe outdated) Rev0.2 datasheet says > > up to 27dB in 0.3dB steps. > > For IMX327, I have revision E17Z06B93 2019/03/25. > > The revision control section for Rev0.3 lists > Page 1: "Correction: Max analog gain 27dB - 29.4dB" > Page 74: "Correction: Max Gain 69dB -> 71.4dB" > > The graph in "Gain Adjustment Function" (page 74) also shows values > above 27dB as being purely analogue gain. Certainly 0x62 is red for > analogue, which would be a gain of 29.4dB. The next dot is 0x64 (30dB) > and blue, so we have to trust the text for 0x63 being 29.4dB analogue > and 0.3dB digital gain. > > So I'm happy that the limit is 29.4dB. Okay, this is a newer datasheet. So assume this is correct. Thanks for clarification. Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com> Best regards, Alexander > Dave > > > Despite that this change looks good. > > > > Best regards, > > Alexander > > > > > As we now have model specific config, fix this mismatch, > > > and delete the comment referencing it. > > > > > > Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > --- > > > drivers/media/i2c/imx290.c | 12 ++++++------ > > > 1 file changed, 6 insertions(+), 6 deletions(-) > > > > > > diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c > > > index ee698c99001d..da654deb444a 100644 > > > --- a/drivers/media/i2c/imx290.c > > > +++ b/drivers/media/i2c/imx290.c > > > @@ -176,6 +176,7 @@ struct imx290_model_info { > > > enum imx290_colour_variant colour_variant; > > > const struct cci_reg_sequence *init_regs; > > > size_t init_regs_num; > > > + unsigned int max_analog_gain; > > > const char *name; > > > }; > > > > > > @@ -876,14 +877,10 @@ static int imx290_ctrl_init(struct imx290 *imx290) > > > * 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. > > > - * > > > - * The IMX327 and IMX462 are largely compatible with the IMX290, but > > > - * have an analog gain range of 0.0dB to 29.4dB and 42dB of digital > > > - * gain. When support for those sensors gets added to the driver, the > > > - * gain control should be adjusted accordingly. > > > */ > > > v4l2_ctrl_new_std(&imx290->ctrls, &imx290_ctrl_ops, > > > - V4L2_CID_ANALOGUE_GAIN, 0, 100, 1, 0); > > > + V4L2_CID_ANALOGUE_GAIN, 0, > > > + imx290->model->max_analog_gain, 1, 0); > > > > > > /* > > > * Correct range will be determined through imx290_ctrl_update setting > > > @@ -1441,18 +1438,21 @@ static const struct imx290_model_info imx290_models[] = { > > > .colour_variant = IMX290_VARIANT_COLOUR, > > > .init_regs = imx290_global_init_settings_290, > > > .init_regs_num = ARRAY_SIZE(imx290_global_init_settings_290), > > > + .max_analog_gain = 100, > > > .name = "imx290", > > > }, > > > [IMX290_MODEL_IMX290LLR] = { > > > .colour_variant = IMX290_VARIANT_MONO, > > > .init_regs = imx290_global_init_settings_290, > > > .init_regs_num = ARRAY_SIZE(imx290_global_init_settings_290), > > > + .max_analog_gain = 100, > > > .name = "imx290", > > > }, > > > [IMX290_MODEL_IMX327LQR] = { > > > .colour_variant = IMX290_VARIANT_COLOUR, > > > .init_regs = imx290_global_init_settings_327, > > > .init_regs_num = ARRAY_SIZE(imx290_global_init_settings_327), > > > + .max_analog_gain = 98, > > > .name = "imx327", > > > }, > > > }; > > > > > > > > > > > > -- > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > Amtsgericht München, HRB 105018 > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > http://www.tq-group.com/ > > > > >
imx462 is the successor to imx290 (and imx327 before that), and only requires a few very minor register tweaks. Whilst at it I also fixed the todo over imx327 and imx290 having very slightly different maximum analog gains (29.4dB vs 30.0dB) and added that to the variant structure. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> --- Changes in v2: - Added patch 2 to correct register 0x3011 to 0x00 on imx290. - Corrected title for dtbindings patch to remove duplicated "media" - Picked up tags. - Link to v1: https://lore.kernel.org/r/20241114-media-imx290-imx462-v1-0-c538a2e24786@raspberrypi.com --- Dave Stevenson (4): media: i2c: imx290: Limit analogue gain according to module media: i2c: imx290: Register 0x3011 varies between imx327 and imx290 media: dt-bindings: sony,imx290: Add IMX462 to the IMX290 binding media: i2c: imx290: Add configuration for IMX462 .../devicetree/bindings/media/i2c/sony,imx290.yaml | 2 + drivers/media/i2c/imx290.c | 81 ++++++++++++++++++++-- 2 files changed, 76 insertions(+), 7 deletions(-) --- base-commit: ed61c59139509f76d3592683c90dc3fdc6e23cd6 change-id: 20241114-media-imx290-imx462-b6d1c24b77b5 Best regards,