hwmon: (tmp401) Add support for TI TMP435
authorPatrick Titiano <ptitiano@baylibre.com>
Thu, 4 Dec 2014 16:45:51 +0000 (17:45 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Thu, 4 Dec 2014 18:59:42 +0000 (10:59 -0800)
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>
Documentation/hwmon/tmp401
drivers/hwmon/Kconfig
drivers/hwmon/tmp401.c

index f91e3fa7e5ec5fe0df6515203d62a2f6d844ff9f..445ff7b0f6a7fd32bbcbea51aa7326db8c009612 100644 (file)
@@ -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
index b1ce6a093a9361b30e0b69daa3ccb5325d43b8ce..6529c09c46f0fe99a02ddfbcd5a643954e1d6e22 100644 (file)
@@ -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.
index 7fa6e7d0b9b6f93ea634954cd1d71d0a67b1694b..ccd993880d745f1a96a13b268f8c0c4871c58238 100644 (file)
@@ -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;