Four patches since v3.3-rc6:
1bd612a
hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP98047ad6307
hwmon: (zl6100) Maintain delay parameter in driver instance data7cb3c44
hwmon: (pmbus_core) Fix maximum number of POUT alarm attributes4de8612
hwmon: (jc42) Add support for ST Microelectronics STTS2002 and STTS3000 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIcBAABAgAGBQJPV7njAAoJEMsfJm/On5mBJQAQAJeqsVDIdsYAok5DUcF3NLYV CRhrNWSrGvrz0w9+dovn3R0kIP/mP5XeAsVswokDbVlXL6JYa1jJuhQo7WvrA1sI OEOGe9E9ypH7Bol+BtH293TJRkGbTRfmi2c8vjnkNYAXNoYvXKd91ZUhN+lhoLxW BqGgHF3wgZZlw3jrCJC78Glmnu4fmy18g2oUqJbPgdtBRh2coDw0i1cvAPM8ud/b Aqpb+DF2Im2qMFgiflaWkB0fU/VJSxQMDYtgguOVeGTIuxCGVihwM2zGjJtieHRD w4stWfUWqhotBlsDlfrTnhgZZ4dFYvxo98as5HhWnzMdwwOoiwx2Nhv4M1ZpCi1d KIJrGKpsgVTGL2b6PNJhAusCO8slRBJ44sb49hTk1baFd9YuerqHReUw5/Y0+Jk/ 8juOKOVoX27DW3rZkq7KX6AEdDB9l3dnd3D8sSLyPmMeRVVuxUsQjK7PCbDtjQ6u BASNRGAp4T7+pGhq2yQmDAoawDPYesa5hg/6XD2x5iHCdI/TMxAHgP0qVkfiOcYX IxYS/rgeBoH42+Aak5XXwafbTfdiWaRxpMnRnwgaTUxaOWu3GauIQb5TzWZMQTKm xwZkxoS/XVDADXCzZxoCop4nbYnFwqKq2p+icwleSuVyN/+hI2lsz8wdsYFFWKnZ ApulwsYjhhtrtDFRysiB =mjD6 -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
42a6c7ef3b
|
@ -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:
|
||||||
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
|
||||||
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[] = {
|
||||||
|
|
||||||
/* 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[] = {
|
||||||
#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[] = {
|
||||||
#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 {
|
||||||
|
|
||||||
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[] = {
|
||||||
{ 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);
|
||||||
|
|
||||||
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[] = {
|
||||||
{ "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 @@
|
||||||
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 };
|
||||||
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");
|
||||||
/* 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,
|
||||||
* 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
|
||||||
|
|
Loading…
Reference in a new issue