hwmon: (tmp401) Add support for TI TMP435

Signed-off-by: Patrick Titiano <ptitiano@baylibre.com>
[Bartosz Golaszewski: prepared for submission, code review fixes]
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
[Guenter Roeck: Merged two patches into one]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Patrick Titiano 2014-12-04 17:45:51 +01:00 committed by Guenter Roeck
parent dfcd4c53be
commit 06adbaec2a
3 changed files with 18 additions and 5 deletions

View File

@ -18,6 +18,10 @@ Supported chips:
Prefix: 'tmp432' Prefix: 'tmp432'
Addresses scanned: I2C 0x4c, 0x4d Addresses scanned: I2C 0x4c, 0x4d
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html
* Texas Instruments TMP435
Prefix: 'tmp435'
Addresses scanned: I2C 0x4c
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp435.html
Authors: Authors:
Hans de Goede <hdegoede@redhat.com> Hans de Goede <hdegoede@redhat.com>
@ -27,8 +31,8 @@ Description
----------- -----------
This driver implements support for Texas Instruments TMP401, TMP411, This driver implements support for Texas Instruments TMP401, TMP411,
TMP431, and TMP432 chips. These chips implement one or two remote and TMP431, TMP432 and TMP435 chips. These chips implement one or two remote
one local temperature sensors. Temperature is measured in degrees and one local temperature sensors. Temperature is measured in degrees
Celsius. Resolution of the remote sensor is 0.0625 degree. Local Celsius. Resolution of the remote sensor is 0.0625 degree. Local
sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not
supported by the driver so far, so using the default resolution of 0.5 supported by the driver so far, so using the default resolution of 0.5

View File

@ -1466,7 +1466,7 @@ config SENSORS_TMP401
depends on I2C depends on I2C
help help
If you say yes here you get support for Texas Instruments TMP401, If you say yes here you get support for Texas Instruments TMP401,
TMP411, TMP431, and TMP432 temperature sensor chips. TMP411, TMP431, TMP432 and TMP435 temperature sensor chips.
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 tmp401. will be called tmp401.

View File

@ -46,7 +46,7 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x4c, 0x4d, 0x4e, I2C_CLIENT_END };
enum chips { tmp401, tmp411, tmp431, tmp432 }; enum chips { tmp401, tmp411, tmp431, tmp432, tmp435 };
/* /*
* The TMP401 registers, note some registers have different addresses for * The TMP401 registers, note some registers have different addresses for
@ -136,6 +136,7 @@ static const u8 TMP432_STATUS_REG[] = {
#define TMP411C_DEVICE_ID 0x10 #define TMP411C_DEVICE_ID 0x10
#define TMP431_DEVICE_ID 0x31 #define TMP431_DEVICE_ID 0x31
#define TMP432_DEVICE_ID 0x32 #define TMP432_DEVICE_ID 0x32
#define TMP435_DEVICE_ID 0x35
/* /*
* Driver data (common to all clients) * Driver data (common to all clients)
@ -146,6 +147,7 @@ static const struct i2c_device_id tmp401_id[] = {
{ "tmp411", tmp411 }, { "tmp411", tmp411 },
{ "tmp431", tmp431 }, { "tmp431", tmp431 },
{ "tmp432", tmp432 }, { "tmp432", tmp432 },
{ "tmp435", tmp435 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, tmp401_id); MODULE_DEVICE_TABLE(i2c, tmp401_id);
@ -684,6 +686,11 @@ static int tmp401_detect(struct i2c_client *client,
return -ENODEV; return -ENODEV;
kind = tmp432; kind = tmp432;
break; break;
case TMP435_DEVICE_ID:
if (client->addr != 0x4c)
return -ENODEV;
kind = tmp435;
break;
default: default:
return -ENODEV; return -ENODEV;
} }
@ -705,7 +712,9 @@ static int tmp401_detect(struct i2c_client *client,
static int tmp401_probe(struct i2c_client *client, static int tmp401_probe(struct i2c_client *client,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
const char *names[] = { "TMP401", "TMP411", "TMP431", "TMP432" }; static const char * const names[] = {
"TMP401", "TMP411", "TMP431", "TMP432", "TMP435"
};
struct device *dev = &client->dev; struct device *dev = &client->dev;
struct device *hwmon_dev; struct device *hwmon_dev;
struct tmp401_data *data; struct tmp401_data *data;