diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-08 20:22:54 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-08 20:22:54 -0500 |
| commit | 42a6c7ef3b204ef9bfd0e5b65ccd8c67f4a6cedf (patch) | |
| tree | 8a27d307657140827268d5d0d6290d6475c7bd5e | |
| parent | 5d0edf29151bb5ba372784b7e369f42cf23a94eb (diff) | |
| parent | 1bd612a25855f4cc9345052b53d7da697dba6358 (diff) | |
Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
Pull four hwmon patches from Guenter Roeck
* tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP9804
hwmon: (zl6100) Maintain delay parameter in driver instance data
hwmon: (pmbus_core) Fix maximum number of POUT alarm attributes
hwmon: (jc42) Add support for ST Microelectronics STTS2002 and STTS3000
| -rw-r--r-- | Documentation/hwmon/jc42 | 26 | ||||
| -rw-r--r-- | drivers/hwmon/Kconfig | 5 | ||||
| -rw-r--r-- | drivers/hwmon/jc42.c | 30 | ||||
| -rw-r--r-- | drivers/hwmon/pmbus/pmbus_core.c | 3 | ||||
| -rw-r--r-- | drivers/hwmon/pmbus/zl6100.c | 10 |
5 files changed, 59 insertions, 15 deletions
diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42 index a22ecf48f25..52729a756c1 100644 --- a/Documentation/hwmon/jc42 +++ b/Documentation/hwmon/jc42 | |||
| @@ -7,21 +7,29 @@ Supported chips: | |||
| 7 | Addresses scanned: I2C 0x18 - 0x1f | 7 | Addresses scanned: I2C 0x18 - 0x1f |
| 8 | Datasheets: | 8 | Datasheets: |
| 9 | http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf | 9 | http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf |
| 10 | * IDT TSE2002B3, TS3000B3 | 10 | * Atmel AT30TS00 |
| 11 | Prefix: 'tse2002b3', 'ts3000b3' | 11 | Prefix: 'at30ts00' |
| 12 | Addresses scanned: I2C 0x18 - 0x1f | 12 | Addresses scanned: I2C 0x18 - 0x1f |
| 13 | Datasheets: | 13 | Datasheets: |
| 14 | http://www.idt.com/products/getdoc.cfm?docid=18715691 | 14 | http://www.atmel.com/Images/doc8585.pdf |
| 15 | http://www.idt.com/products/getdoc.cfm?docid=18715692 | 15 | * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2 |
| 16 | Prefix: 'tse2002', 'ts3000' | ||
| 17 | Addresses scanned: I2C 0x18 - 0x1f | ||
| 18 | Datasheets: | ||
| 19 | http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf | ||
| 20 | http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf | ||
| 21 | http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf | ||
| 22 | http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf | ||
| 16 | * Maxim MAX6604 | 23 | * Maxim MAX6604 |
| 17 | Prefix: 'max6604' | 24 | Prefix: 'max6604' |
| 18 | Addresses scanned: I2C 0x18 - 0x1f | 25 | Addresses scanned: I2C 0x18 - 0x1f |
| 19 | Datasheets: | 26 | Datasheets: |
| 20 | http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf | 27 | http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf |
| 21 | * Microchip MCP9805, MCP98242, MCP98243, MCP9843 | 28 | * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843 |
| 22 | Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' | 29 | Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' |
| 23 | Addresses scanned: I2C 0x18 - 0x1f | 30 | Addresses scanned: I2C 0x18 - 0x1f |
| 24 | Datasheets: | 31 | Datasheets: |
| 32 | http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf | ||
| 25 | http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf | 33 | http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf |
| 26 | http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf | 34 | http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf |
| 27 | http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf | 35 | http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf |
| @@ -48,6 +56,12 @@ Supported chips: | |||
| 48 | Datasheets: | 56 | Datasheets: |
| 49 | http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf | 57 | http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf |
| 50 | http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf | 58 | http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf |
| 59 | * ST Microelectronics STTS2002, STTS3000 | ||
| 60 | Prefix: 'stts2002', 'stts3000' | ||
| 61 | Addresses scanned: I2C 0x18 - 0x1f | ||
| 62 | Datasheets: | ||
| 63 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf | ||
| 64 | http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf | ||
| 51 | * JEDEC JC 42.4 compliant temperature sensor chips | 65 | * JEDEC JC 42.4 compliant temperature sensor chips |
| 52 | Prefix: 'jc42' | 66 | Prefix: 'jc42' |
| 53 | Addresses scanned: I2C 0x18 - 0x1f | 67 | Addresses scanned: I2C 0x18 - 0x1f |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 02260406b9e..dad895fec62 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
| @@ -497,8 +497,9 @@ config SENSORS_JC42 | |||
| 497 | If you say yes here, you get support for JEDEC JC42.4 compliant | 497 | If you say yes here, you get support for JEDEC JC42.4 compliant |
| 498 | temperature sensors, which are used on many DDR3 memory modules for | 498 | temperature sensors, which are used on many DDR3 memory modules for |
| 499 | mobile devices and servers. Support will include, but not be limited | 499 | mobile devices and servers. Support will include, but not be limited |
| 500 | to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243, | 500 | to, ADT7408, AT30TS00, CAT34TS02, CAT6095, MAX6604, MCP9804, MCP9805, |
| 501 | MCP9843, SE97, SE98, STTS424(E), TSE2002B3, and TS3000B3. | 501 | MCP98242, MCP98243, MCP9843, SE97, SE98, STTS424(E), STTS2002, |
| 502 | STTS3000, TSE2002B3, TSE2002GB2, TS3000B3, and TS3000GB2. | ||
| 502 | 503 | ||
| 503 | This driver can also be built as a module. If so, the module | 504 | This driver can also be built as a module. If so, the module |
| 504 | will be called jc42. | 505 | will be called jc42. |
diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c index 28c09eead36..b927ee5ccdd 100644 --- a/drivers/hwmon/jc42.c +++ b/drivers/hwmon/jc42.c | |||
| @@ -64,6 +64,7 @@ static const unsigned short normal_i2c[] = { | |||
| 64 | 64 | ||
| 65 | /* Manufacturer IDs */ | 65 | /* Manufacturer IDs */ |
| 66 | #define ADT_MANID 0x11d4 /* Analog Devices */ | 66 | #define ADT_MANID 0x11d4 /* Analog Devices */ |
| 67 | #define ATMEL_MANID 0x001f /* Atmel */ | ||
| 67 | #define MAX_MANID 0x004d /* Maxim */ | 68 | #define MAX_MANID 0x004d /* Maxim */ |
| 68 | #define IDT_MANID 0x00b3 /* IDT */ | 69 | #define IDT_MANID 0x00b3 /* IDT */ |
| 69 | #define MCP_MANID 0x0054 /* Microchip */ | 70 | #define MCP_MANID 0x0054 /* Microchip */ |
| @@ -77,15 +78,25 @@ static const unsigned short normal_i2c[] = { | |||
| 77 | #define ADT7408_DEVID 0x0801 | 78 | #define ADT7408_DEVID 0x0801 |
| 78 | #define ADT7408_DEVID_MASK 0xffff | 79 | #define ADT7408_DEVID_MASK 0xffff |
| 79 | 80 | ||
| 81 | /* Atmel */ | ||
| 82 | #define AT30TS00_DEVID 0x8201 | ||
| 83 | #define AT30TS00_DEVID_MASK 0xffff | ||
| 84 | |||
| 80 | /* IDT */ | 85 | /* IDT */ |
| 81 | #define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */ | 86 | #define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */ |
| 82 | #define TS3000B3_DEVID_MASK 0xffff | 87 | #define TS3000B3_DEVID_MASK 0xffff |
| 83 | 88 | ||
| 89 | #define TS3000GB2_DEVID 0x2912 /* Also matches TSE2002GB2 */ | ||
| 90 | #define TS3000GB2_DEVID_MASK 0xffff | ||
| 91 | |||
| 84 | /* Maxim */ | 92 | /* Maxim */ |
| 85 | #define MAX6604_DEVID 0x3e00 | 93 | #define MAX6604_DEVID 0x3e00 |
| 86 | #define MAX6604_DEVID_MASK 0xffff | 94 | #define MAX6604_DEVID_MASK 0xffff |
| 87 | 95 | ||
| 88 | /* Microchip */ | 96 | /* Microchip */ |
| 97 | #define MCP9804_DEVID 0x0200 | ||
| 98 | #define MCP9804_DEVID_MASK 0xfffc | ||
| 99 | |||
| 89 | #define MCP98242_DEVID 0x2000 | 100 | #define MCP98242_DEVID 0x2000 |
| 90 | #define MCP98242_DEVID_MASK 0xfffc | 101 | #define MCP98242_DEVID_MASK 0xfffc |
| 91 | 102 | ||
| @@ -113,6 +124,12 @@ static const unsigned short normal_i2c[] = { | |||
| 113 | #define STTS424E_DEVID 0x0000 | 124 | #define STTS424E_DEVID 0x0000 |
| 114 | #define STTS424E_DEVID_MASK 0xfffe | 125 | #define STTS424E_DEVID_MASK 0xfffe |
| 115 | 126 | ||
| 127 | #define STTS2002_DEVID 0x0300 | ||
| 128 | #define STTS2002_DEVID_MASK 0xffff | ||
| 129 | |||
| 130 | #define STTS3000_DEVID 0x0200 | ||
| 131 | #define STTS3000_DEVID_MASK 0xffff | ||
| 132 | |||
| 116 | static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 }; | 133 | static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 }; |
| 117 | 134 | ||
| 118 | struct jc42_chips { | 135 | struct jc42_chips { |
| @@ -123,8 +140,11 @@ struct jc42_chips { | |||
| 123 | 140 | ||
| 124 | static struct jc42_chips jc42_chips[] = { | 141 | static struct jc42_chips jc42_chips[] = { |
| 125 | { ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK }, | 142 | { ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK }, |
| 143 | { ATMEL_MANID, AT30TS00_DEVID, AT30TS00_DEVID_MASK }, | ||
| 126 | { IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK }, | 144 | { IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK }, |
| 145 | { IDT_MANID, TS3000GB2_DEVID, TS3000GB2_DEVID_MASK }, | ||
| 127 | { MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK }, | 146 | { MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK }, |
| 147 | { MCP_MANID, MCP9804_DEVID, MCP9804_DEVID_MASK }, | ||
| 128 | { MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK }, | 148 | { MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK }, |
| 129 | { MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK }, | 149 | { MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK }, |
| 130 | { MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK }, | 150 | { MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK }, |
| @@ -133,6 +153,8 @@ static struct jc42_chips jc42_chips[] = { | |||
| 133 | { NXP_MANID, SE98_DEVID, SE98_DEVID_MASK }, | 153 | { NXP_MANID, SE98_DEVID, SE98_DEVID_MASK }, |
| 134 | { STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK }, | 154 | { STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK }, |
| 135 | { STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK }, | 155 | { STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK }, |
| 156 | { STM_MANID, STTS2002_DEVID, STTS2002_DEVID_MASK }, | ||
| 157 | { STM_MANID, STTS3000_DEVID, STTS3000_DEVID_MASK }, | ||
| 136 | }; | 158 | }; |
| 137 | 159 | ||
| 138 | /* Each client has this additional data */ | 160 | /* Each client has this additional data */ |
| @@ -159,10 +181,12 @@ static struct jc42_data *jc42_update_device(struct device *dev); | |||
| 159 | 181 | ||
| 160 | static const struct i2c_device_id jc42_id[] = { | 182 | static const struct i2c_device_id jc42_id[] = { |
| 161 | { "adt7408", 0 }, | 183 | { "adt7408", 0 }, |
| 184 | { "at30ts00", 0 }, | ||
| 162 | { "cat94ts02", 0 }, | 185 | { "cat94ts02", 0 }, |
| 163 | { "cat6095", 0 }, | 186 | { "cat6095", 0 }, |
| 164 | { "jc42", 0 }, | 187 | { "jc42", 0 }, |
| 165 | { "max6604", 0 }, | 188 | { "max6604", 0 }, |
| 189 | { "mcp9804", 0 }, | ||
| 166 | { "mcp9805", 0 }, | 190 | { "mcp9805", 0 }, |
| 167 | { "mcp98242", 0 }, | 191 | { "mcp98242", 0 }, |
| 168 | { "mcp98243", 0 }, | 192 | { "mcp98243", 0 }, |
| @@ -171,8 +195,10 @@ static const struct i2c_device_id jc42_id[] = { | |||
| 171 | { "se97b", 0 }, | 195 | { "se97b", 0 }, |
| 172 | { "se98", 0 }, | 196 | { "se98", 0 }, |
| 173 | { "stts424", 0 }, | 197 | { "stts424", 0 }, |
| 174 | { "tse2002b3", 0 }, | 198 | { "stts2002", 0 }, |
| 175 | { "ts3000b3", 0 }, | 199 | { "stts3000", 0 }, |
| 200 | { "tse2002", 0 }, | ||
| 201 | { "ts3000", 0 }, | ||
| 176 | { } | 202 | { } |
| 177 | }; | 203 | }; |
| 178 | MODULE_DEVICE_TABLE(i2c, jc42_id); | 204 | MODULE_DEVICE_TABLE(i2c, jc42_id); |
diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c index 00460d8d842..d89b33967a8 100644 --- a/drivers/hwmon/pmbus/pmbus_core.c +++ b/drivers/hwmon/pmbus/pmbus_core.c | |||
| @@ -54,7 +54,8 @@ | |||
| 54 | lcrit_alarm, crit_alarm */ | 54 | lcrit_alarm, crit_alarm */ |
| 55 | #define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm, | 55 | #define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm, |
| 56 | crit_alarm */ | 56 | crit_alarm */ |
| 57 | #define PMBUS_POUT_BOOLEANS_PER_PAGE 2 /* alarm, crit_alarm */ | 57 | #define PMBUS_POUT_BOOLEANS_PER_PAGE 3 /* cap_alarm, alarm, crit_alarm |
| 58 | */ | ||
| 58 | #define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */ | 59 | #define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */ |
| 59 | #define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm, | 60 | #define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm, |
| 60 | lcrit_alarm, crit_alarm */ | 61 | lcrit_alarm, crit_alarm */ |
diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c index 48c7b4a716a..880b90cf4d3 100644 --- a/drivers/hwmon/pmbus/zl6100.c +++ b/drivers/hwmon/pmbus/zl6100.c | |||
| @@ -33,6 +33,7 @@ enum chips { zl2004, zl2005, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 }; | |||
| 33 | struct zl6100_data { | 33 | struct zl6100_data { |
| 34 | int id; | 34 | int id; |
| 35 | ktime_t access; /* chip access time */ | 35 | ktime_t access; /* chip access time */ |
| 36 | int delay; /* Delay between chip accesses in uS */ | ||
| 36 | struct pmbus_driver_info info; | 37 | struct pmbus_driver_info info; |
| 37 | }; | 38 | }; |
| 38 | 39 | ||
| @@ -52,10 +53,10 @@ MODULE_PARM_DESC(delay, "Delay between chip accesses in uS"); | |||
| 52 | /* Some chips need a delay between accesses */ | 53 | /* Some chips need a delay between accesses */ |
| 53 | static inline void zl6100_wait(const struct zl6100_data *data) | 54 | static inline void zl6100_wait(const struct zl6100_data *data) |
| 54 | { | 55 | { |
| 55 | if (delay) { | 56 | if (data->delay) { |
| 56 | s64 delta = ktime_us_delta(ktime_get(), data->access); | 57 | s64 delta = ktime_us_delta(ktime_get(), data->access); |
| 57 | if (delta < delay) | 58 | if (delta < data->delay) |
| 58 | udelay(delay - delta); | 59 | udelay(data->delay - delta); |
| 59 | } | 60 | } |
| 60 | } | 61 | } |
| 61 | 62 | ||
| @@ -207,8 +208,9 @@ static int zl6100_probe(struct i2c_client *client, | |||
| 207 | * can be cleared later for additional chips if tests show that it | 208 | * can be cleared later for additional chips if tests show that it |
| 208 | * is not needed (in other words, better be safe than sorry). | 209 | * is not needed (in other words, better be safe than sorry). |
| 209 | */ | 210 | */ |
| 211 | data->delay = delay; | ||
| 210 | if (data->id == zl2004 || data->id == zl6105) | 212 | if (data->id == zl2004 || data->id == zl6105) |
| 211 | delay = 0; | 213 | data->delay = 0; |
| 212 | 214 | ||
| 213 | /* | 215 | /* |
| 214 | * Since there was a direct I2C device access above, wait before | 216 | * Since there was a direct I2C device access above, wait before |
