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:
parent
dfcd4c53be
commit
06adbaec2a
|
@ -18,6 +18,10 @@ Supported chips:
|
|||
Prefix: 'tmp432'
|
||||
Addresses scanned: I2C 0x4c, 0x4d
|
||||
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:
|
||||
Hans de Goede <hdegoede@redhat.com>
|
||||
|
@ -27,8 +31,8 @@ Description
|
|||
-----------
|
||||
|
||||
This driver implements support for Texas Instruments TMP401, TMP411,
|
||||
TMP431, and TMP432 chips. These chips implement one or two remote and
|
||||
one local temperature sensors. Temperature is measured in degrees
|
||||
TMP431, TMP432 and TMP435 chips. These chips implement one or two remote
|
||||
and one local temperature sensors. Temperature is measured in degrees
|
||||
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
|
||||
supported by the driver so far, so using the default resolution of 0.5
|
||||
|
|
|
@ -1466,7 +1466,7 @@ config SENSORS_TMP401
|
|||
depends on I2C
|
||||
help
|
||||
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
|
||||
will be called tmp401.
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
/* Addresses to scan */
|
||||
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
|
||||
|
@ -136,6 +136,7 @@ static const u8 TMP432_STATUS_REG[] = {
|
|||
#define TMP411C_DEVICE_ID 0x10
|
||||
#define TMP431_DEVICE_ID 0x31
|
||||
#define TMP432_DEVICE_ID 0x32
|
||||
#define TMP435_DEVICE_ID 0x35
|
||||
|
||||
/*
|
||||
* Driver data (common to all clients)
|
||||
|
@ -146,6 +147,7 @@ static const struct i2c_device_id tmp401_id[] = {
|
|||
{ "tmp411", tmp411 },
|
||||
{ "tmp431", tmp431 },
|
||||
{ "tmp432", tmp432 },
|
||||
{ "tmp435", tmp435 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, tmp401_id);
|
||||
|
@ -684,6 +686,11 @@ static int tmp401_detect(struct i2c_client *client,
|
|||
return -ENODEV;
|
||||
kind = tmp432;
|
||||
break;
|
||||
case TMP435_DEVICE_ID:
|
||||
if (client->addr != 0x4c)
|
||||
return -ENODEV;
|
||||
kind = tmp435;
|
||||
break;
|
||||
default:
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -705,7 +712,9 @@ static int tmp401_detect(struct i2c_client *client,
|
|||
static int tmp401_probe(struct i2c_client *client,
|
||||
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 *hwmon_dev;
|
||||
struct tmp401_data *data;
|
||||
|
|
Loading…
Reference in New Issue