From 9a42f3263afe102eb8573f68a20054235a32b3c6 Mon Sep 17 00:00:00 2001
From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Date: Thu, 25 Apr 2019 12:38:47 +0300
Subject: [PATCH 109/122] lvds: onsemi: fix revsion parsing

Fix revision parsing on ONSEMI imagers

Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
---
 drivers/media/i2c/soc_camera/ar0143.c |  2 +-
 drivers/media/i2c/soc_camera/ar0231.c |  2 +-
 drivers/media/i2c/soc_camera/ar0233.c | 11 +++++++----
 drivers/media/i2c/soc_camera/ar0323.c |  2 +-
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/media/i2c/soc_camera/ar0143.c b/drivers/media/i2c/soc_camera/ar0143.c
index b0ed9ff..01494fe 100644
--- a/drivers/media/i2c/soc_camera/ar0143.c
+++ b/drivers/media/i2c/soc_camera/ar0143.c
@@ -25,7 +25,7 @@
 #define AR0143_I2C_ADDR		0x10
 
 #define AR0143_PID		0x3000
-#define AR0143_REV		0x300E
+#define AR0143_REV		0x31FE
 #define AR0143_VERSION_REG	0x0D54
 
 #define AR0143_MEDIA_BUS_FMT	MEDIA_BUS_FMT_SGRBG12_1X12
diff --git a/drivers/media/i2c/soc_camera/ar0231.c b/drivers/media/i2c/soc_camera/ar0231.c
index 07f2b5e..05037c7 100644
--- a/drivers/media/i2c/soc_camera/ar0231.c
+++ b/drivers/media/i2c/soc_camera/ar0231.c
@@ -25,7 +25,7 @@
 static const int ar0231_i2c_addr[] = {0x10, 0x20};
 
 #define AR0231_PID		0x3000
-#define AR0231_REV		0x300E
+#define AR0231_REV		0x31FE
 #define AR0231_VERSION_REG	0x0354
 
 #define AR0231_MEDIA_BUS_FMT	MEDIA_BUS_FMT_SGRBG12_1X12
diff --git a/drivers/media/i2c/soc_camera/ar0233.c b/drivers/media/i2c/soc_camera/ar0233.c
index 19386bb..e18fa55 100644
--- a/drivers/media/i2c/soc_camera/ar0233.c
+++ b/drivers/media/i2c/soc_camera/ar0233.c
@@ -25,7 +25,7 @@
 static const int ar0233_i2c_addr[] = {0x10, 0x20};
 
 #define AR0233_PID		0x3000
-#define AR0233_REV		0x300E
+#define AR0233_REV		0x31FE
 #define AR0233_VERSION_REG	0x0956
 
 #define AR0233_MEDIA_BUS_FMT	MEDIA_BUS_FMT_SGRBG12_1X12
@@ -410,12 +410,15 @@ static int ar0233_initialize(struct i2c_client *client)
 	/* Read OTP IDs */
 	ar0233_otp_id_read(client);
 	/* Program wizard registers */
-	switch (rev) {
-	case 0x2015:
+	switch (rev & 0xf) {
+	case 0x1:
+		ar0233_set_regs(client, ar0233_regs_wizard_rev1, ARRAY_SIZE(ar0233_regs_wizard_rev1));
+		break;
+	case 0x2:
 		ar0233_set_regs(client, ar0233_regs_wizard_rev2, ARRAY_SIZE(ar0233_regs_wizard_rev2));
 		break;
 	default:
-		ar0233_set_regs(client, ar0233_regs_wizard_rev1, ARRAY_SIZE(ar0233_regs_wizard_rev1));
+		dev_err(&client->dev, "Unsupported chip revision\n");
 	}
 
 	/* Enable stream */
diff --git a/drivers/media/i2c/soc_camera/ar0323.c b/drivers/media/i2c/soc_camera/ar0323.c
index d29f4ad..2ee5526 100644
--- a/drivers/media/i2c/soc_camera/ar0323.c
+++ b/drivers/media/i2c/soc_camera/ar0323.c
@@ -25,7 +25,7 @@
 static const int ar0323_i2c_addr[] = {0x10, 0x20};
 
 #define AR0323_PID		0x3000
-#define AR0323_REV		0x300E
+#define AR0323_REV		0x31FE
 #define AR0323_VERSION_REG	0x0D56
 
 #define AR0323_MEDIA_BUS_FMT	MEDIA_BUS_FMT_SGRBG12_1X12
-- 
2.7.4

