提交 42a6c7ef 编写于 作者: L Linus Torvalds

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
...@@ -7,21 +7,29 @@ Supported chips: ...@@ -7,21 +7,29 @@ Supported chips:
Addresses scanned: I2C 0x18 - 0x1f Addresses scanned: I2C 0x18 - 0x1f
Datasheets: Datasheets:
http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf
* IDT TSE2002B3, TS3000B3 * Atmel AT30TS00
Prefix: 'tse2002b3', 'ts3000b3' Prefix: 'at30ts00'
Addresses scanned: I2C 0x18 - 0x1f Addresses scanned: I2C 0x18 - 0x1f
Datasheets: Datasheets:
http://www.idt.com/products/getdoc.cfm?docid=18715691 http://www.atmel.com/Images/doc8585.pdf
http://www.idt.com/products/getdoc.cfm?docid=18715692 * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2
Prefix: 'tse2002', 'ts3000'
Addresses scanned: I2C 0x18 - 0x1f
Datasheets:
http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf
http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf
http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf
http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf
* Maxim MAX6604 * Maxim MAX6604
Prefix: 'max6604' Prefix: 'max6604'
Addresses scanned: I2C 0x18 - 0x1f Addresses scanned: I2C 0x18 - 0x1f
Datasheets: Datasheets:
http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf
* Microchip MCP9805, MCP98242, MCP98243, MCP9843 * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843
Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
Addresses scanned: I2C 0x18 - 0x1f Addresses scanned: I2C 0x18 - 0x1f
Datasheets: Datasheets:
http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf
...@@ -48,6 +56,12 @@ Supported chips: ...@@ -48,6 +56,12 @@ Supported chips:
Datasheets: Datasheets:
http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf
http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf
* ST Microelectronics STTS2002, STTS3000
Prefix: 'stts2002', 'stts3000'
Addresses scanned: I2C 0x18 - 0x1f
Datasheets:
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf
* JEDEC JC 42.4 compliant temperature sensor chips * JEDEC JC 42.4 compliant temperature sensor chips
Prefix: 'jc42' Prefix: 'jc42'
Addresses scanned: I2C 0x18 - 0x1f Addresses scanned: I2C 0x18 - 0x1f
......
...@@ -497,8 +497,9 @@ config SENSORS_JC42 ...@@ -497,8 +497,9 @@ config SENSORS_JC42
If you say yes here, you get support for JEDEC JC42.4 compliant If you say yes here, you get support for JEDEC JC42.4 compliant
temperature sensors, which are used on many DDR3 memory modules for temperature sensors, which are used on many DDR3 memory modules for
mobile devices and servers. Support will include, but not be limited mobile devices and servers. Support will include, but not be limited
to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243, to, ADT7408, AT30TS00, CAT34TS02, CAT6095, MAX6604, MCP9804, MCP9805,
MCP9843, SE97, SE98, STTS424(E), TSE2002B3, and TS3000B3. MCP98242, MCP98243, MCP9843, SE97, SE98, STTS424(E), STTS2002,
STTS3000, TSE2002B3, TSE2002GB2, TS3000B3, and TS3000GB2.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called jc42. will be called jc42.
......
...@@ -64,6 +64,7 @@ static const unsigned short normal_i2c[] = { ...@@ -64,6 +64,7 @@ static const unsigned short normal_i2c[] = {
/* Manufacturer IDs */ /* Manufacturer IDs */
#define ADT_MANID 0x11d4 /* Analog Devices */ #define ADT_MANID 0x11d4 /* Analog Devices */
#define ATMEL_MANID 0x001f /* Atmel */
#define MAX_MANID 0x004d /* Maxim */ #define MAX_MANID 0x004d /* Maxim */
#define IDT_MANID 0x00b3 /* IDT */ #define IDT_MANID 0x00b3 /* IDT */
#define MCP_MANID 0x0054 /* Microchip */ #define MCP_MANID 0x0054 /* Microchip */
...@@ -77,15 +78,25 @@ static const unsigned short normal_i2c[] = { ...@@ -77,15 +78,25 @@ static const unsigned short normal_i2c[] = {
#define ADT7408_DEVID 0x0801 #define ADT7408_DEVID 0x0801
#define ADT7408_DEVID_MASK 0xffff #define ADT7408_DEVID_MASK 0xffff
/* Atmel */
#define AT30TS00_DEVID 0x8201
#define AT30TS00_DEVID_MASK 0xffff
/* IDT */ /* IDT */
#define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */ #define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */
#define TS3000B3_DEVID_MASK 0xffff #define TS3000B3_DEVID_MASK 0xffff
#define TS3000GB2_DEVID 0x2912 /* Also matches TSE2002GB2 */
#define TS3000GB2_DEVID_MASK 0xffff
/* Maxim */ /* Maxim */
#define MAX6604_DEVID 0x3e00 #define MAX6604_DEVID 0x3e00
#define MAX6604_DEVID_MASK 0xffff #define MAX6604_DEVID_MASK 0xffff
/* Microchip */ /* Microchip */
#define MCP9804_DEVID 0x0200
#define MCP9804_DEVID_MASK 0xfffc
#define MCP98242_DEVID 0x2000 #define MCP98242_DEVID 0x2000
#define MCP98242_DEVID_MASK 0xfffc #define MCP98242_DEVID_MASK 0xfffc
...@@ -113,6 +124,12 @@ static const unsigned short normal_i2c[] = { ...@@ -113,6 +124,12 @@ static const unsigned short normal_i2c[] = {
#define STTS424E_DEVID 0x0000 #define STTS424E_DEVID 0x0000
#define STTS424E_DEVID_MASK 0xfffe #define STTS424E_DEVID_MASK 0xfffe
#define STTS2002_DEVID 0x0300
#define STTS2002_DEVID_MASK 0xffff
#define STTS3000_DEVID 0x0200
#define STTS3000_DEVID_MASK 0xffff
static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 }; static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 };
struct jc42_chips { struct jc42_chips {
...@@ -123,8 +140,11 @@ struct jc42_chips { ...@@ -123,8 +140,11 @@ struct jc42_chips {
static struct jc42_chips jc42_chips[] = { static struct jc42_chips jc42_chips[] = {
{ ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK }, { ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK },
{ ATMEL_MANID, AT30TS00_DEVID, AT30TS00_DEVID_MASK },
{ IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK }, { IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK },
{ IDT_MANID, TS3000GB2_DEVID, TS3000GB2_DEVID_MASK },
{ MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK }, { MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK },
{ MCP_MANID, MCP9804_DEVID, MCP9804_DEVID_MASK },
{ MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK }, { MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK },
{ MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK }, { MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK },
{ MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK }, { MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK },
...@@ -133,6 +153,8 @@ static struct jc42_chips jc42_chips[] = { ...@@ -133,6 +153,8 @@ static struct jc42_chips jc42_chips[] = {
{ NXP_MANID, SE98_DEVID, SE98_DEVID_MASK }, { NXP_MANID, SE98_DEVID, SE98_DEVID_MASK },
{ STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK }, { STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK },
{ STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK }, { STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK },
{ STM_MANID, STTS2002_DEVID, STTS2002_DEVID_MASK },
{ STM_MANID, STTS3000_DEVID, STTS3000_DEVID_MASK },
}; };
/* Each client has this additional data */ /* Each client has this additional data */
...@@ -159,10 +181,12 @@ static struct jc42_data *jc42_update_device(struct device *dev); ...@@ -159,10 +181,12 @@ static struct jc42_data *jc42_update_device(struct device *dev);
static const struct i2c_device_id jc42_id[] = { static const struct i2c_device_id jc42_id[] = {
{ "adt7408", 0 }, { "adt7408", 0 },
{ "at30ts00", 0 },
{ "cat94ts02", 0 }, { "cat94ts02", 0 },
{ "cat6095", 0 }, { "cat6095", 0 },
{ "jc42", 0 }, { "jc42", 0 },
{ "max6604", 0 }, { "max6604", 0 },
{ "mcp9804", 0 },
{ "mcp9805", 0 }, { "mcp9805", 0 },
{ "mcp98242", 0 }, { "mcp98242", 0 },
{ "mcp98243", 0 }, { "mcp98243", 0 },
...@@ -171,8 +195,10 @@ static const struct i2c_device_id jc42_id[] = { ...@@ -171,8 +195,10 @@ static const struct i2c_device_id jc42_id[] = {
{ "se97b", 0 }, { "se97b", 0 },
{ "se98", 0 }, { "se98", 0 },
{ "stts424", 0 }, { "stts424", 0 },
{ "tse2002b3", 0 }, { "stts2002", 0 },
{ "ts3000b3", 0 }, { "stts3000", 0 },
{ "tse2002", 0 },
{ "ts3000", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, jc42_id); MODULE_DEVICE_TABLE(i2c, jc42_id);
......
...@@ -54,7 +54,8 @@ ...@@ -54,7 +54,8 @@
lcrit_alarm, crit_alarm */ lcrit_alarm, crit_alarm */
#define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm, #define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm,
crit_alarm */ crit_alarm */
#define PMBUS_POUT_BOOLEANS_PER_PAGE 2 /* alarm, crit_alarm */ #define PMBUS_POUT_BOOLEANS_PER_PAGE 3 /* cap_alarm, alarm, crit_alarm
*/
#define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */ #define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */
#define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm, #define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm,
lcrit_alarm, crit_alarm */ lcrit_alarm, crit_alarm */
......
...@@ -33,6 +33,7 @@ enum chips { zl2004, zl2005, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 }; ...@@ -33,6 +33,7 @@ enum chips { zl2004, zl2005, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 };
struct zl6100_data { struct zl6100_data {
int id; int id;
ktime_t access; /* chip access time */ ktime_t access; /* chip access time */
int delay; /* Delay between chip accesses in uS */
struct pmbus_driver_info info; struct pmbus_driver_info info;
}; };
...@@ -52,10 +53,10 @@ MODULE_PARM_DESC(delay, "Delay between chip accesses in uS"); ...@@ -52,10 +53,10 @@ MODULE_PARM_DESC(delay, "Delay between chip accesses in uS");
/* Some chips need a delay between accesses */ /* Some chips need a delay between accesses */
static inline void zl6100_wait(const struct zl6100_data *data) static inline void zl6100_wait(const struct zl6100_data *data)
{ {
if (delay) { if (data->delay) {
s64 delta = ktime_us_delta(ktime_get(), data->access); s64 delta = ktime_us_delta(ktime_get(), data->access);
if (delta < delay) if (delta < data->delay)
udelay(delay - delta); udelay(data->delay - delta);
} }
} }
...@@ -207,8 +208,9 @@ static int zl6100_probe(struct i2c_client *client, ...@@ -207,8 +208,9 @@ static int zl6100_probe(struct i2c_client *client,
* can be cleared later for additional chips if tests show that it * can be cleared later for additional chips if tests show that it
* is not needed (in other words, better be safe than sorry). * is not needed (in other words, better be safe than sorry).
*/ */
data->delay = delay;
if (data->id == zl2004 || data->id == zl6105) if (data->id == zl2004 || data->id == zl6105)
delay = 0; data->delay = 0;
/* /*
* Since there was a direct I2C device access above, wait before * Since there was a direct I2C device access above, wait before
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册