aboutsummaryrefslogtreecommitdiff
path: root/target/linux/bcm27xx/patches-6.1/950-0695-hwmon-emc2305-Change-OF-properties-pwm-min-pwm-max-t.patch
blob: 6be34bf9b78725d4ed14aa1f0da382ad947d4012 (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
59
60
61
62
63
64
65
66
67
68
69
From ab304fd0099444dc7535c81abbbc0077cd878d7e Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Fri, 21 Apr 2023 15:48:39 +0100
Subject: [PATCH] hwmon: emc2305: Change OF properties pwm-min &
 pwm-max to u8

There is no DT binding for emc2305 as mainline are still
discussing how to do a generic fan binding.
The 5.15 driver was reading the "emc2305," properties
"cooling-levels", "pwm-max", "pwm-min", and "pwm-channel" as u8.
The overlay was writing them as u16 (;) so it was working.

The 6.1 driver was reading as u32, which failed as there is
insufficient data.

As this is all downstream only, revert to u8 to match 5.15.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
 drivers/hwmon/emc2305.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

--- a/drivers/hwmon/emc2305.c
+++ b/drivers/hwmon/emc2305.c
@@ -301,36 +301,36 @@ static int emc2305_get_tz_of(struct devi
 	struct device_node *np = dev->of_node;
 	struct emc2305_data *data = dev_get_drvdata(dev);
 	int ret = 0;
-	u32 val;
+	u8 val;
 	int i;
 
 	/* OF parameters are optional - overwrite default setting
 	 * if some of them are provided.
 	 */
 
-	ret = of_property_read_u32(np, "emc2305,cooling-levels", &val);
+	ret = of_property_read_u8(np, "emc2305,cooling-levels", &val);
 	if (!ret)
-		data->max_state = (u8)val;
+		data->max_state = val;
 	else if (ret != -EINVAL)
 		return ret;
 
-	ret = of_property_read_u32(np, "emc2305,pwm-max", &val);
+	ret = of_property_read_u8(np, "emc2305,pwm-max", &val);
 	if (!ret)
-		data->pwm_max = (u8)val;
+		data->pwm_max = val;
 	else if (ret != -EINVAL)
 		return ret;
 
-	ret = of_property_read_u32(np, "emc2305,pwm-min", &val);
+	ret = of_property_read_u8(np, "emc2305,pwm-min", &val);
 	if (!ret)
 		for (i = 0; i < EMC2305_PWM_MAX; i++)
-			data->pwm_min[i] = (u8)val;
+			data->pwm_min[i] = val;
 	else if (ret != -EINVAL)
 		return ret;
 
 	/* Not defined or 0 means one thermal zone over all cooling devices.
 	 * Otherwise - separated thermal zones for each PWM channel.
 	 */
-	ret = of_property_read_u32(np, "emc2305,pwm-channel", &val);
+	ret = of_property_read_u8(np, "emc2305,pwm-channel", &val);
 	if (!ret)
 		data->pwm_separate = (val != 0);
 	else if (ret != -EINVAL)