mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
58 lines
1.9 KiB
Diff
58 lines
1.9 KiB
Diff
|
From 9bca598d4a86e88afb29fdb516c68b2519bd0fb9 Mon Sep 17 00:00:00 2001
|
||
|
From: Robert Marko <robert.marko@sartura.hr>
|
||
|
Date: Thu, 10 Jun 2021 00:07:27 +0200
|
||
|
Subject: [PATCH 3/4] hwmon: (tps23861) set current shunt value
|
||
|
|
||
|
TPS23861 has a configuration bit for setting of the
|
||
|
current shunt value used on the board.
|
||
|
Its bit 0 of the General Mask 1 register.
|
||
|
|
||
|
According to the datasheet bit values are:
|
||
|
0 for 255 mOhm (Default)
|
||
|
1 for 250 mOhm
|
||
|
|
||
|
So, configure the bit before registering the hwmon
|
||
|
device according to the value passed in the DTS or
|
||
|
default one if none is passed.
|
||
|
|
||
|
This caused potentially reading slightly skewed values
|
||
|
due to max current value being 1.02A when 250mOhm shunt
|
||
|
is used instead of 1.0A when 255mOhm is used.
|
||
|
|
||
|
Fixes: fff7b8ab2255 ("hwmon: add Texas Instruments TPS23861 driver")
|
||
|
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||
|
Link: https://lore.kernel.org/r/20210609220728.499879-2-robert.marko@sartura.hr
|
||
|
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
|
||
|
---
|
||
|
drivers/hwmon/tps23861.c | 12 ++++++++++++
|
||
|
1 file changed, 12 insertions(+)
|
||
|
|
||
|
--- a/drivers/hwmon/tps23861.c
|
||
|
+++ b/drivers/hwmon/tps23861.c
|
||
|
@@ -99,6 +99,9 @@
|
||
|
#define POWER_ENABLE 0x19
|
||
|
#define TPS23861_NUM_PORTS 4
|
||
|
|
||
|
+#define TPS23861_GENERAL_MASK_1 0x17
|
||
|
+#define TPS23861_CURRENT_SHUNT_MASK BIT(0)
|
||
|
+
|
||
|
#define TEMPERATURE_LSB 652 /* 0.652 degrees Celsius */
|
||
|
#define VOLTAGE_LSB 3662 /* 3.662 mV */
|
||
|
#define SHUNT_RESISTOR_DEFAULT 255000 /* 255 mOhm */
|
||
|
@@ -561,6 +564,15 @@ static int tps23861_probe(struct i2c_cli
|
||
|
else
|
||
|
data->shunt_resistor = SHUNT_RESISTOR_DEFAULT;
|
||
|
|
||
|
+ if (data->shunt_resistor == SHUNT_RESISTOR_DEFAULT)
|
||
|
+ regmap_clear_bits(data->regmap,
|
||
|
+ TPS23861_GENERAL_MASK_1,
|
||
|
+ TPS23861_CURRENT_SHUNT_MASK);
|
||
|
+ else
|
||
|
+ regmap_set_bits(data->regmap,
|
||
|
+ TPS23861_GENERAL_MASK_1,
|
||
|
+ TPS23861_CURRENT_SHUNT_MASK);
|
||
|
+
|
||
|
hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name,
|
||
|
data, &tps23861_chip_info,
|
||
|
NULL);
|