summaryrefslogtreecommitdiffstats
path: root/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0173-lvds-ti9x4-fix-remote-gpio-setup.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0173-lvds-ti9x4-fix-remote-gpio-setup.patch')
-rw-r--r--bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0173-lvds-ti9x4-fix-remote-gpio-setup.patch132
1 files changed, 132 insertions, 0 deletions
diff --git a/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0173-lvds-ti9x4-fix-remote-gpio-setup.patch b/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0173-lvds-ti9x4-fix-remote-gpio-setup.patch
new file mode 100644
index 00000000..b7c39af0
--- /dev/null
+++ b/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0173-lvds-ti9x4-fix-remote-gpio-setup.patch
@@ -0,0 +1,132 @@
+From 76e798d5f852d1551474a27a519cd008ff29f4f1 Mon Sep 17 00:00:00 2001
+From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
+Date: Tue, 28 May 2019 16:07:28 +0300
+Subject: [PATCH 122/122] lvds: ti9x4: fix remote gpio setup
+
+The remote gpio must be set after remote gpio enablement on
+serializer side.
+Fix compilation warnings.
+GEOEMI registers addresing is 1 byte.
+
+Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
+---
+ drivers/media/i2c/soc_camera/ar0233.c | 1 -
+ drivers/media/i2c/soc_camera/gw4200_ar014x.c | 8 ++++----
+ drivers/media/i2c/soc_camera/gw5200_imx390.c | 8 ++++----
+ drivers/media/i2c/soc_camera/imx390.c | 2 +-
+ drivers/media/i2c/soc_camera/ti9x4.c | 5 +++--
+ 5 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/media/i2c/soc_camera/ar0233.c b/drivers/media/i2c/soc_camera/ar0233.c
+index 543b8a6..f3b899e 100644
+--- a/drivers/media/i2c/soc_camera/ar0233.c
++++ b/drivers/media/i2c/soc_camera/ar0233.c
+@@ -63,7 +63,6 @@ static inline struct ar0233_priv *to_ar0233(const struct i2c_client *client)
+
+ static int ar0233_set_regs(struct i2c_client *client, const struct ar0233_reg **pregs)
+ {
+- struct ar0233_priv *priv = to_ar0233(client);
+ const struct ar0233_reg *regs;
+ int i, j;
+
+diff --git a/drivers/media/i2c/soc_camera/gw4200_ar014x.c b/drivers/media/i2c/soc_camera/gw4200_ar014x.c
+index 674e409..45123ae 100644
+--- a/drivers/media/i2c/soc_camera/gw4200_ar014x.c
++++ b/drivers/media/i2c/soc_camera/gw4200_ar014x.c
+@@ -267,14 +267,14 @@ static int gw4200_g_register(struct v4l2_subdev *sd,
+ {
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int ret;
+- u16 val = 0;
++ u8 val = 0;
+
+- ret = reg16_read16(client, (u16)reg->reg, &val);
++ ret = reg8_read(client, (u8)reg->reg, &val);
+ if (ret < 0)
+ return ret;
+
+ reg->val = val;
+- reg->size = sizeof(u16);
++ reg->size = sizeof(u8);
+
+ return 0;
+ }
+@@ -284,7 +284,7 @@ static int gw4200_s_register(struct v4l2_subdev *sd,
+ {
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+
+- return reg16_write16(client, (u16)reg->reg, (u16)reg->val);
++ return reg8_write(client, (u8)reg->reg, (u8)reg->val);
+ }
+ #endif
+
+diff --git a/drivers/media/i2c/soc_camera/gw5200_imx390.c b/drivers/media/i2c/soc_camera/gw5200_imx390.c
+index 0703c3d..90de41f 100644
+--- a/drivers/media/i2c/soc_camera/gw5200_imx390.c
++++ b/drivers/media/i2c/soc_camera/gw5200_imx390.c
+@@ -235,14 +235,14 @@ static int gw5200_g_register(struct v4l2_subdev *sd,
+ {
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int ret;
+- u16 val = 0;
++ u8 val = 0;
+
+- ret = reg16_read16(client, (u16)reg->reg, &val);
++ ret = reg8_read(client, (u8)reg->reg, &val);
+ if (ret < 0)
+ return ret;
+
+ reg->val = val;
+- reg->size = sizeof(u16);
++ reg->size = sizeof(u8);
+
+ return 0;
+ }
+@@ -252,7 +252,7 @@ static int gw5200_s_register(struct v4l2_subdev *sd,
+ {
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+
+- return reg16_write16(client, (u16)reg->reg, (u16)reg->val);
++ return reg8_write(client, (u8)reg->reg, (u8)reg->val);
+ }
+ #endif
+
+diff --git a/drivers/media/i2c/soc_camera/imx390.c b/drivers/media/i2c/soc_camera/imx390.c
+index 7171d70..87279d0 100644
+--- a/drivers/media/i2c/soc_camera/imx390.c
++++ b/drivers/media/i2c/soc_camera/imx390.c
+@@ -249,7 +249,7 @@ static int imx390_s_ctrl(struct v4l2_ctrl *ctrl)
+ struct imx390_priv *priv = to_imx390(client);
+ int ret = -EINVAL;
+ int val;
+- uint8_t val8;
++ uint8_t val8 = 0;
+
+ if (!priv->init_complete)
+ return 0;
+diff --git a/drivers/media/i2c/soc_camera/ti9x4.c b/drivers/media/i2c/soc_camera/ti9x4.c
+index fdb50e5..0cfcfaa 100644
+--- a/drivers/media/i2c/soc_camera/ti9x4.c
++++ b/drivers/media/i2c/soc_camera/ti9x4.c
+@@ -275,8 +275,6 @@ static void ti9x4_fpdlink3_setup(struct i2c_client *client, int idx)
+ reg8_write(client, 0x70, ((priv->vc_map >> (idx * 4)) << 6) | 0x1e); /* CSI data type: yuv422 8-bit, assign VC */
+ reg8_write(client, 0x71, ((priv->vc_map >> (idx * 4)) << 6) | 0x2c); /* CSI data type: RAW12, assign VC */
+ reg8_write(client, 0xbc, 0x00); /* Setup minimal time between FV and LV to 3 PCLKs */
+- reg8_write(client, 0x6e, 0x88 | (priv->gpio[1] << 4) | priv->gpio[0]); /* Remote GPIO1/GPIO0 setup */
+- reg8_write(client, 0x6f, 0x88 | (priv->gpio[3] << 4) | priv->gpio[2]); /* Remote GPIO3/GPIO2 setup */
+ reg8_write(client, 0x72, priv->vc_map >> (idx * 4)); /* CSI VC MAP */
+ }
+
+@@ -340,6 +338,9 @@ static int ti9x4_initialize(struct i2c_client *client)
+ break;
+ }
+ client->addr = priv->des_addr;
++
++ reg8_write(client, 0x6e, 0x88 | (priv->gpio[1] << 4) | priv->gpio[0]); /* Remote GPIO1/GPIO0 setup */
++ reg8_write(client, 0x6f, 0x88 | (priv->gpio[3] << 4) | priv->gpio[2]); /* Remote GPIO3/GPIO2 setup */
+ }
+
+ return 0;
+--
+2.7.4
+