summaryrefslogtreecommitdiffstats
path: root/bsp/meta-rcar/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0466-media-i2c-max9286-parse-crossbar-from-dt.patch
blob: f96696d65c854aac4914b2bb16acefb28fc75924 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
From 0220ffebe645d66242aca68d7a374140dea9e6a3 Mon Sep 17 00:00:00 2001
From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Date: Thu, 30 Jan 2020 16:38:19 +0300
Subject: [PATCH] media: i2c: max9286: parse crossbar from dt

This allows to parse crossbar from device tree

Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
---
 drivers/media/i2c/soc_camera/max9286.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/media/i2c/soc_camera/max9286.c b/drivers/media/i2c/soc_camera/max9286.c
index f6c6b0a..0a1732a 100644
--- a/drivers/media/i2c/soc_camera/max9286.c
+++ b/drivers/media/i2c/soc_camera/max9286.c
@@ -56,6 +56,7 @@ struct max9286_priv {
 	int			dbl;
 	int			dt;
 	int			hsgen;
+	u64			crossbar;
 	char			cb[16];
 	int			hts;
 	int			vts;
@@ -141,8 +142,8 @@ static int switchin = 0;
 module_param(switchin, int, 0644);
 MODULE_PARM_DESC(switchin, " COAX SWITCH IN+ and IN- (default: 0 - not switched)");
 
-static long crossbar = 0xba9876543210;
-module_param(crossbar, long, 0644);
+static unsigned long crossbar = 0xba9876543210;
+module_param(crossbar, ulong, 0644);
 MODULE_PARM_DESC(crossbar, " Crossbar setup (default: ba9876543210 - reversed)");
 
 enum {
@@ -738,6 +739,8 @@ static int max9286_parse_dt(struct i2c_client *client)
 		priv->pclk = pclk;
 	if (of_property_read_u32(np, "maxim,switchin", &priv->switchin))
 		priv->switchin = 0;
+	if (of_property_read_u64(np, "maxim,crossbar", &priv->crossbar))
+		priv->crossbar = crossbar;
 
 	/* module params override dts */
 	if (him)
@@ -773,8 +776,8 @@ static int max9286_parse_dt(struct i2c_client *client)
 
 	/* parse crossbar setup */
 	for (i = 0; i < 16; i++) {
-		priv->cb[i] = crossbar % 16;
-		crossbar /= 16;
+		priv->cb[i] = priv->crossbar % 16;
+		priv->crossbar /= 16;
 	}
 
 	for (i = 0; i < priv->links; i++) {
-- 
2.7.4