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:
Родитель
a63ee9d83b
Коммит
05c77ab240
|
@ -14,6 +14,14 @@ Supported chips:
|
||||||
Prefix: 'tmp423'
|
Prefix: 'tmp423'
|
||||||
Addresses scanned: I2C 0x4c and 0x4d
|
Addresses scanned: I2C 0x4c and 0x4d
|
||||||
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html
|
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:
|
Authors:
|
||||||
Andre Prendel <andre.prendel@gmx.de>
|
Andre Prendel <andre.prendel@gmx.de>
|
||||||
|
@ -21,13 +29,13 @@ Authors:
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
This driver implements support for Texas Instruments TMP421, TMP422
|
This driver implements support for Texas Instruments TMP421, TMP422,
|
||||||
and TMP423 temperature sensor chips. These chips implement one local
|
TMP423, TMP441, and TMP442 temperature sensor chips. These chips
|
||||||
and up to one (TMP421), up to two (TMP422) or up to three (TMP423)
|
implement one local and up to one (TMP421, TMP441), up to two (TMP422,
|
||||||
remote sensors. Temperature is measured in degrees Celsius. The chips
|
TMP442) or up to three (TMP423) remote sensors. Temperature is measured
|
||||||
are wired over I2C/SMBus and specified over a temperature range of -40
|
in degrees Celsius. The chips are wired over I2C/SMBus and specified
|
||||||
to +125 degrees Celsius. Resolution for both the local and remote
|
over a temperature range of -40 to +125 degrees Celsius. Resolution
|
||||||
channels is 0.0625 degree C.
|
for both the local and remote channels is 0.0625 degree C.
|
||||||
|
|
||||||
The chips support only temperature measurement. The driver exports
|
The chips support only temperature measurement. The driver exports
|
||||||
the temperature values via the following sysfs files:
|
the temperature values via the following sysfs files:
|
||||||
|
|
|
@ -1431,7 +1431,7 @@ config SENSORS_TMP421
|
||||||
depends on I2C
|
depends on I2C
|
||||||
help
|
help
|
||||||
If you say yes here you get support for Texas Instruments TMP421,
|
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
|
This driver can also be built as a module. If so, the module
|
||||||
will be called tmp421.
|
will be called tmp421.
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Driver for the Texas Instruments TMP421 SMBus temperature sensor IC.
|
* 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>
|
#include <linux/module.h>
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
static const unsigned short normal_i2c[] = { 0x2a, 0x4c, 0x4d, 0x4e, 0x4f,
|
static const unsigned short normal_i2c[] = { 0x2a, 0x4c, 0x4d, 0x4e, 0x4f,
|
||||||
I2C_CLIENT_END };
|
I2C_CLIENT_END };
|
||||||
|
|
||||||
enum chips { tmp421, tmp422, tmp423 };
|
enum chips { tmp421, tmp422, tmp423, tmp441, tmp442 };
|
||||||
|
|
||||||
/* The TMP421 registers */
|
/* The TMP421 registers */
|
||||||
#define TMP421_STATUS_REG 0x08
|
#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 TMP421_DEVICE_ID 0x21
|
||||||
#define TMP422_DEVICE_ID 0x22
|
#define TMP422_DEVICE_ID 0x22
|
||||||
#define TMP423_DEVICE_ID 0x23
|
#define TMP423_DEVICE_ID 0x23
|
||||||
|
#define TMP441_DEVICE_ID 0x41
|
||||||
|
#define TMP442_DEVICE_ID 0x42
|
||||||
|
|
||||||
static const struct i2c_device_id tmp421_id[] = {
|
static const struct i2c_device_id tmp421_id[] = {
|
||||||
{ "tmp421", 2 },
|
{ "tmp421", 2 },
|
||||||
{ "tmp422", 3 },
|
{ "tmp422", 3 },
|
||||||
{ "tmp423", 4 },
|
{ "tmp423", 4 },
|
||||||
|
{ "tmp441", 2 },
|
||||||
|
{ "tmp442", 3 },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(i2c, tmp421_id);
|
MODULE_DEVICE_TABLE(i2c, tmp421_id);
|
||||||
|
@ -235,7 +239,8 @@ static int tmp421_detect(struct i2c_client *client,
|
||||||
{
|
{
|
||||||
enum chips kind;
|
enum chips kind;
|
||||||
struct i2c_adapter *adapter = client->adapter;
|
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;
|
int addr = client->addr;
|
||||||
u8 reg;
|
u8 reg;
|
||||||
|
|
||||||
|
@ -269,6 +274,14 @@ static int tmp421_detect(struct i2c_client *client,
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
kind = tmp423;
|
kind = tmp423;
|
||||||
break;
|
break;
|
||||||
|
case TMP441_DEVICE_ID:
|
||||||
|
kind = tmp441;
|
||||||
|
break;
|
||||||
|
case TMP442_DEVICE_ID:
|
||||||
|
if (addr != 0x4c && addr != 0x4d)
|
||||||
|
return -ENODEV;
|
||||||
|
kind = tmp442;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
@ -319,5 +332,5 @@ static struct i2c_driver tmp421_driver = {
|
||||||
module_i2c_driver(tmp421_driver);
|
module_i2c_driver(tmp421_driver);
|
||||||
|
|
||||||
MODULE_AUTHOR("Andre Prendel <andre.prendel@gmx.de>");
|
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");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче