Commit 5783ec2e authored by Xo Wang's avatar Xo Wang Committed by Guenter Roeck

hwmon: (pmbus/lm25066) Add support for TI LM5066I

The TI LM5066I hotswap controller is a more accurate version of the
LM5066 device already supported. It has different measurement conversion
coefficients than the LM5066, so it needs to be recognized as a
different device.
Signed-off-by: default avatarXo Wang <xow@google.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent ee983171
...@@ -29,6 +29,11 @@ Supported chips: ...@@ -29,6 +29,11 @@ Supported chips:
Addresses scanned: - Addresses scanned: -
Datasheet: Datasheet:
http://www.national.com/pf/LM/LM5066.html http://www.national.com/pf/LM/LM5066.html
* Texas Instruments LM5066I
Prefix: 'lm5066i'
Addresses scanned: -
Datasheet:
http://www.ti.com/product/LM5066I
Author: Guenter Roeck <linux@roeck-us.net> Author: Guenter Roeck <linux@roeck-us.net>
...@@ -37,8 +42,8 @@ Description ...@@ -37,8 +42,8 @@ Description
----------- -----------
This driver supports hardware monitoring for National Semiconductor / TI LM25056, This driver supports hardware monitoring for National Semiconductor / TI LM25056,
LM25063, LM25066, LM5064, and LM5066 Power Management, Monitoring, Control, and LM25063, LM25066, LM5064, and LM5066/LM5066I Power Management, Monitoring,
Protection ICs. Control, and Protection ICs.
The driver is a client driver to the core PMBus driver. Please see The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus for details on PMBus client drivers. Documentation/hwmon/pmbus for details on PMBus client drivers.
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include "pmbus.h" #include "pmbus.h"
enum chips { lm25056, lm25063, lm25066, lm5064, lm5066 }; enum chips { lm25056, lm25063, lm25066, lm5064, lm5066, lm5066i };
#define LM25066_READ_VAUX 0xd0 #define LM25066_READ_VAUX 0xd0
#define LM25066_MFR_READ_IIN 0xd1 #define LM25066_MFR_READ_IIN 0xd1
...@@ -65,7 +65,7 @@ struct __coeff { ...@@ -65,7 +65,7 @@ struct __coeff {
#define PSC_CURRENT_IN_L (PSC_NUM_CLASSES) #define PSC_CURRENT_IN_L (PSC_NUM_CLASSES)
#define PSC_POWER_L (PSC_NUM_CLASSES + 1) #define PSC_POWER_L (PSC_NUM_CLASSES + 1)
static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = { static struct __coeff lm25066_coeff[6][PSC_NUM_CLASSES + 2] = {
[lm25056] = { [lm25056] = {
[PSC_VOLTAGE_IN] = { [PSC_VOLTAGE_IN] = {
.m = 16296, .m = 16296,
...@@ -210,6 +210,41 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = { ...@@ -210,6 +210,41 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
.m = 16, .m = 16,
}, },
}, },
[lm5066i] = {
[PSC_VOLTAGE_IN] = {
.m = 4617,
.b = -140,
.R = -2,
},
[PSC_VOLTAGE_OUT] = {
.m = 4602,
.b = 500,
.R = -2,
},
[PSC_CURRENT_IN] = {
.m = 15076,
.b = -504,
.R = -2,
},
[PSC_CURRENT_IN_L] = {
.m = 7645,
.b = 100,
.R = -2,
},
[PSC_POWER] = {
.m = 1701,
.b = -4000,
.R = -3,
},
[PSC_POWER_L] = {
.m = 861,
.b = -965,
.R = -3,
},
[PSC_TEMPERATURE] = {
.m = 16,
},
},
}; };
struct lm25066_data { struct lm25066_data {
...@@ -250,6 +285,7 @@ static int lm25066_read_word_data(struct i2c_client *client, int page, int reg) ...@@ -250,6 +285,7 @@ static int lm25066_read_word_data(struct i2c_client *client, int page, int reg)
ret = DIV_ROUND_CLOSEST(ret * 70, 453); ret = DIV_ROUND_CLOSEST(ret * 70, 453);
break; break;
case lm5066: case lm5066:
case lm5066i:
/* VIN: 2.18 mV VAUX: 725 uV LSB */ /* VIN: 2.18 mV VAUX: 725 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 725, 2180); ret = DIV_ROUND_CLOSEST(ret * 725, 2180);
break; break;
...@@ -511,6 +547,7 @@ static const struct i2c_device_id lm25066_id[] = { ...@@ -511,6 +547,7 @@ static const struct i2c_device_id lm25066_id[] = {
{"lm25066", lm25066}, {"lm25066", lm25066},
{"lm5064", lm5064}, {"lm5064", lm5064},
{"lm5066", lm5066}, {"lm5066", lm5066},
{"lm5066i", lm5066i},
{ } { }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment