Adds latest 6.6 patches from the Raspberry Pi repository. These patches were generated from: https://github.com/raspberrypi/linux/commits/rpi-6.6.y/ With the following command: git format-patch -N v6.6.83..HEAD (HEAD -> 08d4e8f52256bd422d8a1f876411603f627d0a82) Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
117 lines
3.5 KiB
Diff
117 lines
3.5 KiB
Diff
From 23037697914a6d1220768a752c6358d35ca03737 Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Wed, 20 Nov 2024 19:17:06 +0000
|
|
Subject: [PATCH] media: i2c: imx290: Add configuration for IMX462
|
|
|
|
Commit c699b6c7c857baba1375a1ed090bf71f695e2971 upstream.
|
|
|
|
IMX462 is the successor to IMX290, and wants very minor
|
|
changes to the register setup.
|
|
|
|
Add the relevant configuration to support it.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
|
|
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
|
---
|
|
drivers/media/i2c/imx290.c | 66 ++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 66 insertions(+)
|
|
|
|
--- a/drivers/media/i2c/imx290.c
|
|
+++ b/drivers/media/i2c/imx290.c
|
|
@@ -172,6 +172,8 @@ enum imx290_model {
|
|
IMX290_MODEL_IMX290LQR,
|
|
IMX290_MODEL_IMX290LLR,
|
|
IMX290_MODEL_IMX327LQR,
|
|
+ IMX290_MODEL_IMX462LQR,
|
|
+ IMX290_MODEL_IMX462LLR,
|
|
};
|
|
|
|
struct imx290_model_info {
|
|
@@ -318,6 +320,50 @@ static const struct cci_reg_sequence imx
|
|
{ CCI_REG8(0x33b3), 0x04 },
|
|
};
|
|
|
|
+static const struct cci_reg_sequence imx290_global_init_settings_462[] = {
|
|
+ { CCI_REG8(0x300f), 0x00 },
|
|
+ { CCI_REG8(0x3010), 0x21 },
|
|
+ { CCI_REG8(0x3011), 0x02 },
|
|
+ { CCI_REG8(0x3016), 0x09 },
|
|
+ { CCI_REG8(0x3070), 0x02 },
|
|
+ { CCI_REG8(0x3071), 0x11 },
|
|
+ { CCI_REG8(0x309b), 0x10 },
|
|
+ { CCI_REG8(0x309c), 0x22 },
|
|
+ { CCI_REG8(0x30a2), 0x02 },
|
|
+ { CCI_REG8(0x30a6), 0x20 },
|
|
+ { CCI_REG8(0x30a8), 0x20 },
|
|
+ { CCI_REG8(0x30aa), 0x20 },
|
|
+ { CCI_REG8(0x30ac), 0x20 },
|
|
+ { CCI_REG8(0x30b0), 0x43 },
|
|
+ { CCI_REG8(0x3119), 0x9e },
|
|
+ { CCI_REG8(0x311c), 0x1e },
|
|
+ { CCI_REG8(0x311e), 0x08 },
|
|
+ { CCI_REG8(0x3128), 0x05 },
|
|
+ { CCI_REG8(0x313d), 0x83 },
|
|
+ { CCI_REG8(0x3150), 0x03 },
|
|
+ { CCI_REG8(0x317e), 0x00 },
|
|
+ { CCI_REG8(0x32b8), 0x50 },
|
|
+ { CCI_REG8(0x32b9), 0x10 },
|
|
+ { CCI_REG8(0x32ba), 0x00 },
|
|
+ { CCI_REG8(0x32bb), 0x04 },
|
|
+ { CCI_REG8(0x32c8), 0x50 },
|
|
+ { CCI_REG8(0x32c9), 0x10 },
|
|
+ { CCI_REG8(0x32ca), 0x00 },
|
|
+ { CCI_REG8(0x32cb), 0x04 },
|
|
+ { CCI_REG8(0x332c), 0xd3 },
|
|
+ { CCI_REG8(0x332d), 0x10 },
|
|
+ { CCI_REG8(0x332e), 0x0d },
|
|
+ { CCI_REG8(0x3358), 0x06 },
|
|
+ { CCI_REG8(0x3359), 0xe1 },
|
|
+ { CCI_REG8(0x335a), 0x11 },
|
|
+ { CCI_REG8(0x3360), 0x1e },
|
|
+ { CCI_REG8(0x3361), 0x61 },
|
|
+ { CCI_REG8(0x3362), 0x10 },
|
|
+ { CCI_REG8(0x33b0), 0x50 },
|
|
+ { CCI_REG8(0x33b2), 0x1a },
|
|
+ { CCI_REG8(0x33b3), 0x04 },
|
|
+};
|
|
+
|
|
#define IMX290_NUM_CLK_REGS 2
|
|
static const struct cci_reg_sequence xclk_regs[][IMX290_NUM_CLK_REGS] = {
|
|
[IMX290_CLK_37_125] = {
|
|
@@ -1451,6 +1497,20 @@ static const struct imx290_model_info im
|
|
.max_analog_gain = 98,
|
|
.name = "imx327",
|
|
},
|
|
+ [IMX290_MODEL_IMX462LQR] = {
|
|
+ .colour_variant = IMX290_VARIANT_COLOUR,
|
|
+ .init_regs = imx290_global_init_settings_462,
|
|
+ .init_regs_num = ARRAY_SIZE(imx290_global_init_settings_462),
|
|
+ .max_analog_gain = 98,
|
|
+ .name = "imx462",
|
|
+ },
|
|
+ [IMX290_MODEL_IMX462LLR] = {
|
|
+ .colour_variant = IMX290_VARIANT_MONO,
|
|
+ .init_regs = imx290_global_init_settings_462,
|
|
+ .init_regs_num = ARRAY_SIZE(imx290_global_init_settings_462),
|
|
+ .max_analog_gain = 98,
|
|
+ .name = "imx462",
|
|
+ },
|
|
};
|
|
|
|
static int imx290_parse_dt(struct imx290 *imx290)
|
|
@@ -1646,6 +1706,12 @@ static const struct of_device_id imx290_
|
|
}, {
|
|
.compatible = "sony,imx327lqr",
|
|
.data = &imx290_models[IMX290_MODEL_IMX327LQR],
|
|
+ }, {
|
|
+ .compatible = "sony,imx462lqr",
|
|
+ .data = &imx290_models[IMX290_MODEL_IMX462LQR],
|
|
+ }, {
|
|
+ .compatible = "sony,imx462llr",
|
|
+ .data = &imx290_models[IMX290_MODEL_IMX462LLR],
|
|
},
|
|
{ /* sentinel */ },
|
|
};
|