summaryrefslogtreecommitdiffstats
path: root/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0153-lvds-OV495-fix-reset-gpio-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0153-lvds-OV495-fix-reset-gpio-handling.patch')
-rw-r--r--bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0153-lvds-OV495-fix-reset-gpio-handling.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0153-lvds-OV495-fix-reset-gpio-handling.patch b/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0153-lvds-OV495-fix-reset-gpio-handling.patch
new file mode 100644
index 00000000..3535dd86
--- /dev/null
+++ b/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0153-lvds-OV495-fix-reset-gpio-handling.patch
@@ -0,0 +1,65 @@
+From 8241a96db8e7365a23b5ba76a33af47fcc6b7ee8 Mon Sep 17 00:00:00 2001
+From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
+Date: Tue, 12 Feb 2019 22:29:24 +0300
+Subject: [PATCH 102/122] lvds: OV495: fix reset gpio handling
+
+This fixes gpio reset handling on OV495 imager
+GPIO0 - NRESET
+GPIO1 - NC (no FSIN!)
+kernel parameter requred: ti9x4.gpio0=1
+
+Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
+---
+ drivers/media/i2c/soc_camera/ov106xx.c | 12 ++++++------
+ drivers/media/i2c/soc_camera/ov495_ov2775.c | 5 +----
+ 2 files changed, 7 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/media/i2c/soc_camera/ov106xx.c b/drivers/media/i2c/soc_camera/ov106xx.c
+index 8962ab9..d641907 100644
+--- a/drivers/media/i2c/soc_camera/ov106xx.c
++++ b/drivers/media/i2c/soc_camera/ov106xx.c
+@@ -73,6 +73,12 @@ static int ov106xx_probe(struct i2c_client *client,
+ goto out;
+ }
+
++ ret = ov495_probe(client, did);
++ if (!ret) {
++ chip_id = ID_OV495_OV2775;
++ goto out;
++ }
++
+ ret = ov10640_probe(client, did);
+ if (!ret) {
+ chip_id = ID_OV10640;
+@@ -91,12 +97,6 @@ static int ov106xx_probe(struct i2c_client *client,
+ goto out;
+ }
+
+- ret = ov495_probe(client, did);
+- if (!ret) {
+- chip_id = ID_OV495_OV2775;
+- goto out;
+- }
+-
+ ret = ar0132_probe(client, did);
+ if (!ret) {
+ chip_id = ID_AR0132;
+diff --git a/drivers/media/i2c/soc_camera/ov495_ov2775.c b/drivers/media/i2c/soc_camera/ov495_ov2775.c
+index 34b2f46..aee8145 100644
+--- a/drivers/media/i2c/soc_camera/ov495_ov2775.c
++++ b/drivers/media/i2c/soc_camera/ov495_ov2775.c
+@@ -503,10 +503,7 @@ static int ov495_parse_dt(struct device_node *np, struct ov495_priv *priv)
+ usleep_range(2000, 2500); /* wait 2ms */
+ reg8_write(client, 0x65, tmp_addr << 1); /* Sensor translated I2C address */
+ reg8_write(client, 0x5d, OV495_I2C_ADDR << 1); /* Sensor native I2C address */
+-
+- reg8_write(client, 0x6e, 0x9a); /* GPIO0 - fsin, GPIO1 - resetb */
+- /* TODO: why too long? move logic to workqueue? */
+- mdelay(350); /* time needed to boot all sensor IPs */
++ usleep_range(2000, 2500); /* wait 2ms */
+ }
+ client->addr = tmp_addr;
+
+--
+2.7.4
+