From: Daniel Golle <daniel@makrotopia.org>
To: "Guenter Roeck" <linux@roeck-us.net>,
"Axel Lin" <axel.lin@ingics.com>,
"Per Dalén" <per.dalen@appeartv.com>
Cc: devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org
Subject: [PATCH v2 1/2] hwmon: (ltc4151) Make shunt-resistor configurable
Date: Mon, 1 Aug 2016 12:07:18 +0200 [thread overview]
Message-ID: <20160801100714.GA4243@makrotopia.org> (raw)
In-Reply-To: <20160727144859.GA18846@rob-hp-laptop>
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>
---
v2: add -micro-ohms unit suffix
drivers/hwmon/ltc4151.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c
index c86a184..d36e5e1 100644
--- a/drivers/hwmon/ltc4151.c
+++ b/drivers/hwmon/ltc4151.c
@@ -30,6 +30,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
+#include <linux/of.h>
#include <linux/init.h>
#include <linux/err.h>
#include <linux/slab.h>
@@ -52,6 +53,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 +113,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 +178,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 +187,14 @@ static int ltc4151_probe(struct i2c_client *client,
if (!data)
return -ENOMEM;
+ if (of_property_read_u32(client->dev.of_node, "shunt-resistor-micro-ohms", &shunt))
+ shunt = 1000; /* 1 mOhm if not set via DT */
+
+ if (shunt == 0)
+ return -EINVAL;
+
+ data->shunt = shunt;
+
data->client = client;
mutex_init(&data->update_lock);
@@ -199,10 +210,16 @@ static const struct i2c_device_id ltc4151_id[] = {
};
MODULE_DEVICE_TABLE(i2c, ltc4151_id);
+static const struct of_device_id ltc4151_match[] = {
+ { .compatible = "lltc,ltc4151" },
+ {},
+};
+
/* This is the driver that will be inserted */
static struct i2c_driver ltc4151_driver = {
.driver = {
.name = "ltc4151",
+ .of_match_table = of_match_ptr(ltc4151_match),
},
.probe = ltc4151_probe,
.id_table = ltc4151_id,
--
2.9.2
next prev parent reply other threads:[~2016-08-01 10:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
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 ` Daniel Golle [this message]
2016-08-01 10:08 ` 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160801100714.GA4243@makrotopia.org \
--to=daniel@makrotopia.org \
--cc=axel.lin@ingics.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=per.dalen@appeartv.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.