summaryrefslogtreecommitdiffstats
path: root/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0501-media-i2c-ap0101-fix-fsin-on-AP0102.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0501-media-i2c-ap0101-fix-fsin-on-AP0102.patch')
-rw-r--r--bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0501-media-i2c-ap0101-fix-fsin-on-AP0102.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0501-media-i2c-ap0101-fix-fsin-on-AP0102.patch b/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0501-media-i2c-ap0101-fix-fsin-on-AP0102.patch
new file mode 100644
index 00000000..1d6af948
--- /dev/null
+++ b/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0501-media-i2c-ap0101-fix-fsin-on-AP0102.patch
@@ -0,0 +1,52 @@
+From 7bb14f5fe5ab6c00c48dc879767b3def79bcef17 Mon Sep 17 00:00:00 2001
+From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
+Date: Mon, 27 Apr 2020 18:55:09 +0300
+Subject: [PATCH] media: i2c: ap0101: fix fsin on AP0102
+
+AP0101 and AP0102 hav different FSIN setup
+
+Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
+---
+ drivers/media/i2c/soc_camera/ap0101_ar014x.c | 9 ++++++++-
+ drivers/media/i2c/soc_camera/ap0101_ar014x.h | 8 ++++++++
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/media/i2c/soc_camera/ap0101_ar014x.c b/drivers/media/i2c/soc_camera/ap0101_ar014x.c
+index 8a2d2a6..55cff3f 100644
+--- a/drivers/media/i2c/soc_camera/ap0101_ar014x.c
++++ b/drivers/media/i2c/soc_camera/ap0101_ar014x.c
+@@ -477,7 +477,14 @@ static int ap0101_initialize(struct i2c_client *client)
+ priv->max_height = AP0101_MAX_HEIGHT;
+ #endif
+ /* Program wizard registers */
+- ap0101_set_regs(client, ap0101_regs_wizard, ARRAY_SIZE(ap0101_regs_wizard));
++ switch (pid) {
++ case AP0101_VERSION_REG:
++ ap0101_set_regs(client, ap0101_regs_wizard, ARRAY_SIZE(ap0101_regs_wizard));
++ break;
++ case AP0102_VERSION_REG:
++ ap0101_set_regs(client, ap0102_regs_wizard, ARRAY_SIZE(ap0102_regs_wizard));
++ break;
++ }
+ /* Read OTP IDs */
+ ap0101_otp_id_read(client);
+
+diff --git a/drivers/media/i2c/soc_camera/ap0101_ar014x.h b/drivers/media/i2c/soc_camera/ap0101_ar014x.h
+index 16599a1..d72ebfe 100644
+--- a/drivers/media/i2c/soc_camera/ap0101_ar014x.h
++++ b/drivers/media/i2c/soc_camera/ap0101_ar014x.h
+@@ -26,3 +26,11 @@ static const struct ap0101_reg ap0101_regs_wizard[] = {
+ {0x0040, 0x8100},
+ {AP0101_DELAY, 100},
+ };
++
++static const struct ap0101_reg ap0102_regs_wizard[] = {
++/* enable FSIN */
++{0xc890, 0x0303},
++{0xfc00, 0x2800},
++{0x0040, 0x8100},
++{AP0101_DELAY, 100},
++};
+--
+2.7.4
+