Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 280572
b: refs/heads/master
c: bc581e6
h: refs/heads/master
v: v3
  • Loading branch information
Guenter Roeck committed Jan 5, 2012
1 parent 9e34b2a commit 4b06bb9
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 5 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: 87102808d03948c825c3bdc48316e48f6422fd7e
refs/heads/master: bc581e6fcc3bd901d20765638422ef957559a8d1
4 changes: 4 additions & 0 deletions trunk/Documentation/hwmon/zl6100
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ Supported chips:
Prefix: 'zl2004'
Addresses scanned: -
Datasheet: http://www.intersil.com/data/fn/fn6847.pdf
* Intersil / Zilker Labs ZL2005
Prefix: 'zl2005'
Addresses scanned: -
Datasheet: http://www.intersil.com/data/fn/fn6848.pdf
* Intersil / Zilker Labs ZL2006
Prefix: 'zl2006'
Addresses scanned: -
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/hwmon/pmbus/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ config SENSORS_ZL6100
default n
help
If you say yes here you get hardware monitoring support for Intersil
ZL2004, ZL2006, ZL2008, ZL2105, ZL2106, ZL6100, and ZL6105 Digital
DC/DC Controllers.
ZL2004, ZL2005, ZL2006, ZL2008, ZL2105, ZL2106, ZL6100, and ZL6105
Digital DC/DC Controllers.

This driver can also be built as a module. If so, the module will
be called zl6100.
Expand Down
19 changes: 17 additions & 2 deletions trunk/drivers/hwmon/pmbus/zl6100.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#include <linux/delay.h>
#include "pmbus.h"

enum chips { zl2004, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 };
enum chips { zl2004, zl2005, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 };

struct zl6100_data {
int id;
Expand Down Expand Up @@ -65,6 +65,19 @@ static int zl6100_read_word_data(struct i2c_client *client, int page, int reg)
if (page || reg >= PMBUS_VIRT_BASE)
return -ENXIO;

if (data->id == zl2005) {
/*
* Limit register detection is not reliable on ZL2005.
* Make sure registers are not erroneously detected.
*/
switch (reg) {
case PMBUS_VOUT_OV_WARN_LIMIT:
case PMBUS_VOUT_UV_WARN_LIMIT:
case PMBUS_IOUT_OC_WARN_LIMIT:
return -ENXIO;
}
}

zl6100_wait(data);
ret = pmbus_read_word_data(client, page, reg);
data->access = ktime_get();
Expand Down Expand Up @@ -123,6 +136,7 @@ static int zl6100_write_byte(struct i2c_client *client, int page, u8 value)

static const struct i2c_device_id zl6100_id[] = {
{"zl2004", zl2004},
{"zl2005", zl2005},
{"zl2006", zl2006},
{"zl2008", zl2008},
{"zl2105", zl2105},
Expand Down Expand Up @@ -177,8 +191,9 @@ static int zl6100_probe(struct i2c_client *client,
data->id = mid->driver_data;

/*
* ZL2008, ZL2105, and ZL6100 are known to require a wait time
* ZL2005, ZL2008, ZL2105, and ZL6100 are known to require a wait time
* between I2C accesses. ZL2004 and ZL6105 are known to be safe.
* Other chips have not yet been tested.
*
* Only clear the wait time for chips known to be safe. The wait time
* can be cleared later for additional chips if tests show that it
Expand Down

0 comments on commit 4b06bb9

Please sign in to comment.