Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42a6c7ef authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents 5d0edf29 1bd612a2
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -7,21 +7,29 @@ Supported chips:
    Addresses scanned: I2C 0x18 - 0x1f
    Datasheets:
	http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf
  * IDT TSE2002B3, TS3000B3
    Prefix: 'tse2002b3', 'ts3000b3'
  * Atmel AT30TS00
    Prefix: 'at30ts00'
    Addresses scanned: I2C 0x18 - 0x1f
    Datasheets:
	http://www.idt.com/products/getdoc.cfm?docid=18715691
	http://www.idt.com/products/getdoc.cfm?docid=18715692
	http://www.atmel.com/Images/doc8585.pdf
  * 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
    Prefix: 'max6604'
    Addresses scanned: I2C 0x18 - 0x1f
    Datasheets:
	http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf
  * Microchip MCP9805, MCP98242, MCP98243, MCP9843
    Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
  * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843
    Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
    Addresses scanned: I2C 0x18 - 0x1f
    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/21996a.pdf
	http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf
@@ -48,6 +56,12 @@ Supported chips:
    Datasheets:
	http://www.st.com/stonline/products/literature/ds/13447/stts424.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
    Prefix: 'jc42'
    Addresses scanned: I2C 0x18 - 0x1f
+3 −2
Original line number Diff line number Diff line
@@ -497,8 +497,9 @@ config SENSORS_JC42
	  If you say yes here, you get support for JEDEC JC42.4 compliant
	  temperature sensors, which are used on many DDR3 memory modules for
	  mobile devices and servers.  Support will include, but not be limited
	  to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243,
	  MCP9843, SE97, SE98, STTS424(E), TSE2002B3, and TS3000B3.
	  to, ADT7408, AT30TS00, CAT34TS02, CAT6095, MAX6604, MCP9804, MCP9805,
	  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
	  will be called jc42.
+28 −2
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ static const unsigned short normal_i2c[] = {

/* Manufacturer IDs */
#define ADT_MANID		0x11d4  /* Analog Devices */
#define ATMEL_MANID		0x001f  /* Atmel */
#define MAX_MANID		0x004d  /* Maxim */
#define IDT_MANID		0x00b3  /* IDT */
#define MCP_MANID		0x0054  /* Microchip */
@@ -77,15 +78,25 @@ static const unsigned short normal_i2c[] = {
#define ADT7408_DEVID		0x0801
#define ADT7408_DEVID_MASK	0xffff

/* Atmel */
#define AT30TS00_DEVID		0x8201
#define AT30TS00_DEVID_MASK	0xffff

/* IDT */
#define TS3000B3_DEVID		0x2903  /* Also matches TSE2002B3 */
#define TS3000B3_DEVID_MASK	0xffff

#define TS3000GB2_DEVID		0x2912  /* Also matches TSE2002GB2 */
#define TS3000GB2_DEVID_MASK	0xffff

/* Maxim */
#define MAX6604_DEVID		0x3e00
#define MAX6604_DEVID_MASK	0xffff

/* Microchip */
#define MCP9804_DEVID		0x0200
#define MCP9804_DEVID_MASK	0xfffc

#define MCP98242_DEVID		0x2000
#define MCP98242_DEVID_MASK	0xfffc

@@ -113,6 +124,12 @@ static const unsigned short normal_i2c[] = {
#define STTS424E_DEVID		0x0000
#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 };

struct jc42_chips {
@@ -123,8 +140,11 @@ struct jc42_chips {

static struct jc42_chips jc42_chips[] = {
	{ ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK },
	{ ATMEL_MANID, AT30TS00_DEVID, AT30TS00_DEVID_MASK },
	{ IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK },
	{ IDT_MANID, TS3000GB2_DEVID, TS3000GB2_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, MCP98243_DEVID, MCP98243_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 },
	{ STM_MANID, STTS424_DEVID, STTS424_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 */
@@ -159,10 +181,12 @@ static struct jc42_data *jc42_update_device(struct device *dev);

static const struct i2c_device_id jc42_id[] = {
	{ "adt7408", 0 },
	{ "at30ts00", 0 },
	{ "cat94ts02", 0 },
	{ "cat6095", 0 },
	{ "jc42", 0 },
	{ "max6604", 0 },
	{ "mcp9804", 0 },
	{ "mcp9805", 0 },
	{ "mcp98242", 0 },
	{ "mcp98243", 0 },
@@ -171,8 +195,10 @@ static const struct i2c_device_id jc42_id[] = {
	{ "se97b", 0 },
	{ "se98", 0 },
	{ "stts424", 0 },
	{ "tse2002b3", 0 },
	{ "ts3000b3", 0 },
	{ "stts2002", 0 },
	{ "stts3000", 0 },
	{ "tse2002", 0 },
	{ "ts3000", 0 },
	{ }
};
MODULE_DEVICE_TABLE(i2c, jc42_id);
+2 −1
Original line number Diff line number Diff line
@@ -54,7 +54,8 @@
						   lcrit_alarm, crit_alarm */
#define PMBUS_IOUT_BOOLEANS_PER_PAGE	3	/* alarm, lcrit_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_TEMP	4	/* min_alarm, max_alarm,
						   lcrit_alarm, crit_alarm */
+6 −4
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ enum chips { zl2004, zl2005, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 };
struct zl6100_data {
	int id;
	ktime_t access;		/* chip access time */
	int delay;		/* Delay between chip accesses in uS */
	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 */
static inline void zl6100_wait(const struct zl6100_data *data)
{
	if (delay) {
	if (data->delay) {
		s64 delta = ktime_us_delta(ktime_get(), data->access);
		if (delta < delay)
			udelay(delay - delta);
		if (delta < data->delay)
			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
	 * is not needed (in other words, better be safe than sorry).
	 */
	data->delay = delay;
	if (data->id == zl2004 || data->id == zl6105)
		delay = 0;
		data->delay = 0;

	/*
	 * Since there was a direct I2C device access above, wait before