forked from luck/tmp_suning_uos_patched
hwmon: (tmp421) Add support for TMP441 and TMP442
TMP441 and TMP442 are compatible to TMP421 and TMP422. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Jean Delvare <jdelvare@suse.de>
This commit is contained in:
parent
a63ee9d83b
commit
05c77ab240
|
@ -14,6 +14,14 @@ Supported chips:
|
|||
Prefix: 'tmp423'
|
||||
Addresses scanned: I2C 0x4c and 0x4d
|
||||
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html
|
||||
* Texas Instruments TMP441
|
||||
Prefix: 'tmp441'
|
||||
Addresses scanned: I2C 0x2a, 0x4c, 0x4d, 0x4e and 0x4f
|
||||
Datasheet: http://www.ti.com/product/tmp441
|
||||
* Texas Instruments TMP442
|
||||
Prefix: 'tmp442'
|
||||
Addresses scanned: I2C 0x4c and 0x4d
|
||||
Datasheet: http://www.ti.com/product/tmp442
|
||||
|
||||
Authors:
|
||||
Andre Prendel <andre.prendel@gmx.de>
|
||||
|
@ -21,13 +29,13 @@ Authors:
|
|||
Description
|
||||
-----------
|
||||
|
||||
This driver implements support for Texas Instruments TMP421, TMP422
|
||||
and TMP423 temperature sensor chips. These chips implement one local
|
||||
and up to one (TMP421), up to two (TMP422) or up to three (TMP423)
|
||||
remote sensors. Temperature is measured in degrees Celsius. The chips
|
||||
are wired over I2C/SMBus and specified over a temperature range of -40
|
||||
to +125 degrees Celsius. Resolution for both the local and remote
|
||||
channels is 0.0625 degree C.
|
||||
This driver implements support for Texas Instruments TMP421, TMP422,
|
||||
TMP423, TMP441, and TMP442 temperature sensor chips. These chips
|
||||
implement one local and up to one (TMP421, TMP441), up to two (TMP422,
|
||||
TMP442) or up to three (TMP423) remote sensors. Temperature is measured
|
||||
in degrees Celsius. The chips are wired over I2C/SMBus and specified
|
||||
over a temperature range of -40 to +125 degrees Celsius. Resolution
|
||||
for both the local and remote channels is 0.0625 degree C.
|
||||
|
||||
The chips support only temperature measurement. The driver exports
|
||||
the temperature values via the following sysfs files:
|
||||
|
|
|
@ -1431,7 +1431,7 @@ config SENSORS_TMP421
|
|||
depends on I2C
|
||||
help
|
||||
If you say yes here you get support for Texas Instruments TMP421,
|
||||
TMP422 and TMP423 temperature sensor chips.
|
||||
TMP422, TMP423, TMP441, and TMP442 temperature sensor chips.
|
||||
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called tmp421.
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
/*
|
||||
* Driver for the Texas Instruments TMP421 SMBus temperature sensor IC.
|
||||
* Supported models: TMP421, TMP422, TMP423
|
||||
* Supported models: TMP421, TMP422, TMP423, TMP441, TMP442
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
@ -39,7 +39,7 @@
|
|||
static const unsigned short normal_i2c[] = { 0x2a, 0x4c, 0x4d, 0x4e, 0x4f,
|
||||
I2C_CLIENT_END };
|
||||
|
||||
enum chips { tmp421, tmp422, tmp423 };
|
||||
enum chips { tmp421, tmp422, tmp423, tmp441, tmp442 };
|
||||
|
||||
/* The TMP421 registers */
|
||||
#define TMP421_STATUS_REG 0x08
|
||||
|
@ -60,11 +60,15 @@ static const u8 TMP421_TEMP_LSB[4] = { 0x10, 0x11, 0x12, 0x13 };
|
|||
#define TMP421_DEVICE_ID 0x21
|
||||
#define TMP422_DEVICE_ID 0x22
|
||||
#define TMP423_DEVICE_ID 0x23
|
||||
#define TMP441_DEVICE_ID 0x41
|
||||
#define TMP442_DEVICE_ID 0x42
|
||||
|
||||
static const struct i2c_device_id tmp421_id[] = {
|
||||
{ "tmp421", 2 },
|
||||
{ "tmp422", 3 },
|
||||
{ "tmp423", 4 },
|
||||
{ "tmp441", 2 },
|
||||
{ "tmp442", 3 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, tmp421_id);
|
||||
|
@ -235,7 +239,8 @@ static int tmp421_detect(struct i2c_client *client,
|
|||
{
|
||||
enum chips kind;
|
||||
struct i2c_adapter *adapter = client->adapter;
|
||||
const char *names[] = { "TMP421", "TMP422", "TMP423" };
|
||||
const char * const names[] = { "TMP421", "TMP422", "TMP423",
|
||||
"TMP441", "TMP442" };
|
||||
int addr = client->addr;
|
||||
u8 reg;
|
||||
|
||||
|
@ -269,6 +274,14 @@ static int tmp421_detect(struct i2c_client *client,
|
|||
return -ENODEV;
|
||||
kind = tmp423;
|
||||
break;
|
||||
case TMP441_DEVICE_ID:
|
||||
kind = tmp441;
|
||||
break;
|
||||
case TMP442_DEVICE_ID:
|
||||
if (addr != 0x4c && addr != 0x4d)
|
||||
return -ENODEV;
|
||||
kind = tmp442;
|
||||
break;
|
||||
default:
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -319,5 +332,5 @@ static struct i2c_driver tmp421_driver = {
|
|||
module_i2c_driver(tmp421_driver);
|
||||
|
||||
MODULE_AUTHOR("Andre Prendel <andre.prendel@gmx.de>");
|
||||
MODULE_DESCRIPTION("Texas Instruments TMP421/422/423 temperature sensor driver");
|
||||
MODULE_DESCRIPTION("Texas Instruments TMP421/422/423/441/442 temperature sensor driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
Loading…
Reference in New Issue
Block a user