aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/ds1621.c
diff options
context:
space:
mode:
authorRobert Coulson <rob.coulson@gmail.com>2013-06-10 21:46:02 -0400
committerGuenter Roeck <linux@roeck-us.net>2013-06-27 13:30:43 -0400
commit260f81ffc1b9f09dde355caa09e4b312756666f0 (patch)
tree46d929b1f8e1834a06007bdeaee4ad9d68e0bb82 /drivers/hwmon/ds1621.c
parent2ec2819623521c28de3ab5d6e1f096542d032246 (diff)
hwmon: (ds1621) Add DS1731 chip support to ds1621 driver
These changes add DS1731 chip support to the ds1621 driver, Kconfig, and documentation. Signed-off-by: Robert Coulson <rob.coulson@gmail.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'drivers/hwmon/ds1621.c')
-rw-r--r--drivers/hwmon/ds1621.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c
index 8e940ad9cb36..591758bb629f 100644
--- a/drivers/hwmon/ds1621.c
+++ b/drivers/hwmon/ds1621.c
@@ -10,8 +10,8 @@
10 * resolution, a thermal alarm output (Tout), and user-defined minimum 10 * resolution, a thermal alarm output (Tout), and user-defined minimum
11 * and maximum temperature thresholds (TH and TL). 11 * and maximum temperature thresholds (TH and TL).
12 * 12 *
13 * The DS1625, DS1631, and DS1721 are pin compatible with the DS1621 and 13 * The DS1625, DS1631, DS1721, and DS1731 are pin compatible with the DS1621
14 * similar in operation, with slight variations as noted in the device 14 * and similar in operation, with slight variations as noted in the device
15 * datasheets (please refer to www.maximintegrated.com for specific 15 * datasheets (please refer to www.maximintegrated.com for specific
16 * device information). 16 * device information).
17 * 17 *
@@ -47,7 +47,7 @@
47#include <linux/kernel.h> 47#include <linux/kernel.h>
48 48
49/* Supported devices */ 49/* Supported devices */
50enum chips { ds1621, ds1625, ds1631, ds1721 }; 50enum chips { ds1621, ds1625, ds1631, ds1721, ds1731 };
51 51
52/* Insmod parameters */ 52/* Insmod parameters */
53static int polarity = -1; 53static int polarity = -1;
@@ -65,7 +65,7 @@ MODULE_PARM_DESC(polarity, "Output's polarity: 0 = active high, 1 = active low")
65 * 7 6 5 4 3 2 1 0 65 * 7 6 5 4 3 2 1 0
66 * |Done|THF |TLF |NVB | 1 | 0 |POL |1SHOT| 66 * |Done|THF |TLF |NVB | 1 | 0 |POL |1SHOT|
67 * 67 *
68 * - DS1631: 68 * - DS1631, DS1731:
69 * 7 6 5 4 3 2 1 0 69 * 7 6 5 4 3 2 1 0
70 * |Done|THF |TLF |NVB | R1 | R0 |POL |1SHOT| 70 * |Done|THF |TLF |NVB | R1 | R0 |POL |1SHOT|
71 * 71 *
@@ -140,7 +140,7 @@ static inline int DS1621_TEMP_FROM_REG(u16 reg)
140 * TEMP: 0.001C/bit (-55C to +125C) 140 * TEMP: 0.001C/bit (-55C to +125C)
141 * REG: 141 * REG:
142 * - 1621, 1625: 0.5C/bit 142 * - 1621, 1625: 0.5C/bit
143 * - 1631, 1721: 0.0625C/bit 143 * - 1631, 1721, 1731: 0.0625C/bit
144 * Assume highest resolution and let the bits fall where they may.. 144 * Assume highest resolution and let the bits fall where they may..
145 */ 145 */
146static inline u16 DS1621_TEMP_TO_REG(long temp) 146static inline u16 DS1621_TEMP_TO_REG(long temp)
@@ -176,6 +176,7 @@ static void ds1621_init_client(struct i2c_client *client)
176 break; 176 break;
177 case ds1631: 177 case ds1631:
178 case ds1721: 178 case ds1721:
179 case ds1731:
179 resol = (new_conf & DS1621_REG_CONFIG_RESOL) >> 180 resol = (new_conf & DS1621_REG_CONFIG_RESOL) >>
180 DS1621_REG_CONFIG_RESOL_SHIFT; 181 DS1621_REG_CONFIG_RESOL_SHIFT;
181 data->update_interval = ds1721_convrates[resol]; 182 data->update_interval = ds1721_convrates[resol];
@@ -406,6 +407,7 @@ static const struct i2c_device_id ds1621_id[] = {
406 { "ds1625", ds1625 }, 407 { "ds1625", ds1625 },
407 { "ds1631", ds1631 }, 408 { "ds1631", ds1631 },
408 { "ds1721", ds1721 }, 409 { "ds1721", ds1721 },
410 { "ds1731", ds1731 },
409 { } 411 { }
410}; 412};
411MODULE_DEVICE_TABLE(i2c, ds1621_id); 413MODULE_DEVICE_TABLE(i2c, ds1621_id);