Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 363058
b: refs/heads/master
c: a7c6911
h: refs/heads/master
v: v3
  • Loading branch information
Guenter Roeck committed Apr 8, 2013
1 parent d64940f commit 76cf33b
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 61 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6bf44cedab5918bee8e8fea8c7ad187996c8c874
refs/heads/master: a7c69118bdc8647db0e15defa9e399df21a48890
16 changes: 8 additions & 8 deletions trunk/Documentation/hwmon/lm25066
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ in1_max Maximum input voltage.
in1_min_alarm Input voltage low alarm.
in1_max_alarm Input voltage high alarm.

in2_label "vout1"
in2_input Measured output voltage.
in2_average Average measured output voltage.
in2_min Minimum output voltage.
in2_min_alarm Output voltage low alarm.

in3_label "vout2"
in3_input Measured voltage on vaux pin
in2_label "vmon"
in2_input Measured voltage on VAUX pin

in3_label "vout1"
in3_input Measured output voltage.
in3_average Average measured output voltage.
in3_min Minimum output voltage.
in3_min_alarm Output voltage low alarm.

curr1_label "iin"
curr1_input Measured input current.
Expand Down
73 changes: 21 additions & 52 deletions trunk/drivers/hwmon/pmbus/lm25066.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Hardware monitoring driver for LM25066 / LM5064 / LM5066
*
* Copyright (c) 2011 Ericsson AB.
* Copyright (c) 2013 Guenter Roeck
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -56,42 +57,27 @@ static int lm25066_read_word_data(struct i2c_client *client, int page, int reg)
const struct lm25066_data *data = to_lm25066_data(info);
int ret;

if (page > 1)
return -ENXIO;

/* Map READ_VAUX into READ_VOUT register on page 1 */
if (page == 1) {
switch (reg) {
case PMBUS_READ_VOUT:
ret = pmbus_read_word_data(client, 0,
LM25066_READ_VAUX);
if (ret < 0)
break;
/* Adjust returned value to match VOUT coefficients */
switch (data->id) {
case lm25066:
/* VOUT: 4.54 mV VAUX: 283.2 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 2832, 45400);
break;
case lm5064:
/* VOUT: 4.53 mV VAUX: 700 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 70, 453);
break;
case lm5066:
/* VOUT: 2.18 mV VAUX: 725 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 725, 2180);
break;
}
switch (reg) {
case PMBUS_VIRT_READ_VMON:
ret = pmbus_read_word_data(client, 0, LM25066_READ_VAUX);
if (ret < 0)
break;
/* Adjust returned value to match VIN coefficients */
switch (data->id) {
case lm25066:
/* VIN: 4.54 mV VAUX: 283.2 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 2832, 45400);
break;
case lm5064:
/* VIN: 4.53 mV VAUX: 700 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 70, 453);
break;
default:
/* No other valid registers on page 1 */
ret = -ENXIO;
case lm5066:
/* VIN: 2.18 mV VAUX: 725 uV LSB */
ret = DIV_ROUND_CLOSEST(ret * 725, 2180);
break;
}
goto done;
}

switch (reg) {
break;
case PMBUS_READ_IIN:
ret = pmbus_read_word_data(client, 0, LM25066_MFR_READ_IIN);
break;
Expand Down Expand Up @@ -128,7 +114,6 @@ static int lm25066_read_word_data(struct i2c_client *client, int page, int reg)
ret = -ENODATA;
break;
}
done:
return ret;
}

Expand All @@ -137,9 +122,6 @@ static int lm25066_write_word_data(struct i2c_client *client, int page, int reg,
{
int ret;

if (page > 1)
return -ENXIO;

switch (reg) {
case PMBUS_IIN_OC_WARN_LIMIT:
ret = pmbus_write_word_data(client, 0,
Expand All @@ -161,17 +143,6 @@ static int lm25066_write_word_data(struct i2c_client *client, int page, int reg,
return ret;
}

static int lm25066_write_byte(struct i2c_client *client, int page, u8 value)
{
if (page > 1)
return -ENXIO;

if (page <= 0)
return pmbus_write_byte(client, page, value);

return 0;
}

static int lm25066_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
Expand All @@ -195,7 +166,7 @@ static int lm25066_probe(struct i2c_client *client,
data->id = id->driver_data;
info = &data->info;

info->pages = 2;
info->pages = 1;
info->format[PSC_VOLTAGE_IN] = direct;
info->format[PSC_VOLTAGE_OUT] = direct;
info->format[PSC_CURRENT_IN] = direct;
Expand All @@ -206,14 +177,12 @@ static int lm25066_probe(struct i2c_client *client,
info->b[PSC_TEMPERATURE] = 0;
info->R[PSC_TEMPERATURE] = 0;

info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT
info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VMON | PMBUS_HAVE_VOUT
| PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_PIN | PMBUS_HAVE_IIN
| PMBUS_HAVE_STATUS_INPUT | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
info->func[1] = PMBUS_HAVE_VOUT;

info->read_word_data = lm25066_read_word_data;
info->write_word_data = lm25066_write_word_data;
info->write_byte = lm25066_write_byte;

switch (id->driver_data) {
case lm25066:
Expand Down

0 comments on commit 76cf33b

Please sign in to comment.