[PATCH 2/2] hwmon/adm1275: Support sense resistor parameter from dt

Joel Stanley joel at jms.id.au
Tue Mar 22 12:29:31 AEDT 2016


Allow a system to specify the value of an external sense resistor in the
device tree.

Signed-off-by: Joel Stanley <joel at jms.id.au>
---
 Documentation/devicetree/bindings/hwmon/adm1275.txt | 19 +++++++++++++++++++
 drivers/hwmon/pmbus/adm1275.c                       | 11 +++++++++--
 2 files changed, 28 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/hwmon/adm1275.txt

diff --git a/Documentation/devicetree/bindings/hwmon/adm1275.txt b/Documentation/devicetree/bindings/hwmon/adm1275.txt
new file mode 100644
index 000000000000..abfba34e91ba
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/adm1275.txt
@@ -0,0 +1,19 @@
+adm1275 temperature sensor
+--------------------------
+
+Required property:
+
+ - compatible: "adi,adm1278"
+ - reg: i2c device address 
+
+Optional property:
+
+- sense-resistor: external sense resistor value in milliOhms
+
+Example:
+
+sensor { 
+	reg = <0x11>;
+	compatible = "adi,adm1278";
+	sense-resistor = < 100 >
+}
diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c
index 1476a127dbdb..a5534e40f4b1 100644
--- a/drivers/hwmon/pmbus/adm1275.c
+++ b/drivers/hwmon/pmbus/adm1275.c
@@ -364,6 +364,7 @@ static int adm1275_probe(struct i2c_client *client,
 	u8 block_buffer[I2C_SMBUS_BLOCK_MAX + 1];
 	int config, device_config;
 	int ret;
+	u32 r_sense = 1;
 	struct pmbus_driver_info *info;
 	struct adm1275_data *data;
 	const struct i2c_device_id *mid;
@@ -418,6 +419,12 @@ static int adm1275_probe(struct i2c_client *client,
 	if (!data)
 		return -ENOMEM;
 
+	ret = of_property_read_u32(client->dev.of_node, "sense-resistor",
+			&r_sense);
+	if (!ret)
+		dev_notice(&client->dev, "using r_sense from dt %d\n",
+				r_sense);
+
 	data->id = mid->driver_data;
 
 	info = &data->info;
@@ -591,12 +598,12 @@ static int adm1275_probe(struct i2c_client *client,
 		info->R[PSC_VOLTAGE_OUT] = coefficients[voindex].R;
 	}
 	if (cindex >= 0) {
-		info->m[PSC_CURRENT_OUT] = coefficients[cindex].m;
+		info->m[PSC_CURRENT_OUT] = coefficients[cindex].m * r_sense;
 		info->b[PSC_CURRENT_OUT] = coefficients[cindex].b;
 		info->R[PSC_CURRENT_OUT] = coefficients[cindex].R;
 	}
 	if (pindex >= 0) {
-		info->m[PSC_POWER] = coefficients[pindex].m;
+		info->m[PSC_POWER] = coefficients[pindex].m * r_sense;
 		info->b[PSC_POWER] = coefficients[pindex].b;
 		info->R[PSC_POWER] = coefficients[pindex].R;
 	}
-- 
2.7.3



More information about the openbmc mailing list