All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] hwmon: (ltc4151) Make shunt-resistor configurable
@ 2016-07-24 20:26 Daniel Golle
  2016-07-25  5:19   ` Guenter Roeck
  0 siblings, 1 reply; 13+ messages in thread
From: Daniel Golle @ 2016-07-24 20:26 UTC (permalink / raw)
  To: linux-hwmon; +Cc: devicetree, Axel Lin, Guenter Roeck, Per Dalén

Allow to specify the resistance of the attached shunt via DT by
adding the shunt-resistor property. Fall-back to the previous
default (1 mOhm) if unset.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 drivers/hwmon/ltc4151.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c
index c86a184..f856e44 100644
--- a/drivers/hwmon/ltc4151.c
+++ b/drivers/hwmon/ltc4151.c
@@ -30,6 +30,8 @@
 
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/init.h>
 #include <linux/err.h>
 #include <linux/slab.h>
@@ -52,6 +54,7 @@ struct ltc4151_data {
 	struct mutex update_lock;
 	bool valid;
 	unsigned long last_updated; /* in jiffies */
+	unsigned int shunt; /* in micro ohms */
 
 	/* Registers */
 	u8 regs[6];
@@ -111,9 +114,9 @@ static int ltc4151_get_value(struct ltc4151_data *data, u8 reg)
 	case LTC4151_SENSE_H:
 		/*
 		 * 20uV resolution. Convert to current as measured with
-		 * an 1 mOhm sense resistor, in mA.
+		 * a given sense resistor, in mA.
 		 */
-		val = val * 20;
+		val = val * 20 * 1000 / data->shunt;
 		break;
 	case LTC4151_VIN_H:
 		/* 25 mV per increment */
@@ -176,6 +179,7 @@ static int ltc4151_probe(struct i2c_client *client,
 	struct device *dev = &client->dev;
 	struct ltc4151_data *data;
 	struct device *hwmon_dev;
+	u32 shunt;
 
 	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
 		return -ENODEV;
@@ -184,6 +188,14 @@ static int ltc4151_probe(struct i2c_client *client,
 	if (!data)
 		return -ENOMEM;
 
+#ifdef CONFIG_OF
+	if (!of_property_read_u32(client->dev.of_node, "shunt-resistor", &shunt)
+		&& shunt > 0 )
+		data->shunt = shunt;
+	else
+#endif
+		data->shunt = 1000; /* 1 mOhm if not set */
+
 	data->client = client;
 	mutex_init(&data->update_lock);
 
@@ -199,10 +211,20 @@ static const struct i2c_device_id ltc4151_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, ltc4151_id);
 
+#ifdef CONFIG_OF
+static const struct of_device_id ltc4151_match[] = {
+	{ .compatible = "lltc,ltc4151" },
+	{},
+};
+#endif
+
 /* This is the driver that will be inserted */
 static struct i2c_driver ltc4151_driver = {
+	.class		= I2C_CLASS_HWMON,
 	.driver = {
 		.name	= "ltc4151",
+		.owner  = THIS_MODULE,
+		.of_match_table = of_match_ptr(ltc4151_match),
 	},
 	.probe		= ltc4151_probe,
 	.id_table	= ltc4151_id,
-- 
2.9.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-08-01 10:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-24 20:26 [PATCH] hwmon: (ltc4151) Make shunt-resistor configurable Daniel Golle
2016-07-25  5:19 ` Guenter Roeck
2016-07-25  5:19   ` Guenter Roeck
     [not found]   ` <5795A144.2020300-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2016-07-25 11:56     ` [PATCH 1/2 v2] " Daniel Golle
     [not found]       ` <20160725115558.GA18360-g5gK2j5usbvCyp4qypjU+w@public.gmane.org>
2016-07-30 16:00         ` Guenter Roeck
     [not found]           ` <579CCF0E.9050506-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2016-07-30 16:11             ` Daniel Golle
     [not found]               ` <20160730161133.GA17568-g5gK2j5usbvCyp4qypjU+w@public.gmane.org>
2016-07-30 16:26                 ` Guenter Roeck
2016-07-25 11:56     ` [PATCH 2/2] hwmon: (ltc4151) Add devicetree binding for ltc4151 Daniel Golle
     [not found]       ` <20160725115616.GA31557-g5gK2j5usbvCyp4qypjU+w@public.gmane.org>
2016-07-27 14:48         ` Rob Herring
2016-08-01 10:07           ` [PATCH v2 1/2] hwmon: (ltc4151) Make shunt-resistor configurable Daniel Golle
2016-08-01 10:08           ` [PATCH 2/2] hwmon: (ltc4151) Add devicetree binding for ltc4151 Daniel Golle
2016-07-25 17:11   ` [PATCH 1/2 v2] hwmon: (ltc4151) Make shunt-resistor configurable Daniel Golle
2016-07-25 17:12   ` [PATCH 2/2] hwmon: (ltc4151) Add devicetree binding for ltc4151 Daniel Golle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.