diff options
-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 a22ecf48f255..52729a756c1b 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 02260406b9e4..dad895fec62a 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 28c09eead36b..b927ee5ccdd7 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 00460d8d8423..d89b33967a85 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 48c7b4a716ae..880b90cf4d32 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 |