hwmon: (lm90) Add explicit support for ADM1020
authorGuenter Roeck <linux@roeck-us.net>
Thu, 6 Jan 2022 23:07:48 +0000 (15:07 -0800)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 13 Jul 2022 15:38:19 +0000 (08:38 -0700)
ADM1020 is compatible with ADM1021 but has a separate chip revision and
a limited I2C address range.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Documentation/hwmon/lm90.rst
drivers/hwmon/Kconfig
drivers/hwmon/lm90.c

index ef8b55c..f8dd2de 100644 (file)
@@ -51,6 +51,14 @@ Supported chips:
 
               http://www.national.com/mpf/LM/LM86.html
 
+  * Analog Devices ADM1020
+
+    Prefix: 'adm1020'
+
+    Addresses scanned: I2C 0x4c - 0x4e
+
+    Datasheet: Publicly available at the Analog Devices website
+
   * Analog Devices ADM1021
 
     Prefix: 'adm1021'
@@ -457,7 +465,7 @@ features:
 LM84:
   * 8 bit sensor resolution
 
-ADM1021, GL523SM, MAX1617, NE1617, NE1617A, THMC10:
+ADM1020, ADM1021, GL523SM, MAX1617, NE1617, NE1617A, THMC10:
   * 8 bit sensor resolution
   * Low temperature limits
 
index 32c605e..494539e 100644 (file)
@@ -1360,8 +1360,8 @@ config SENSORS_LM90
        depends on I2C
        help
          If you say yes here you get support for National Semiconductor LM84,
-         LM90, LM86, LM89 and LM99, Analog Devices ADM2021, ADM1021A, ADM1023,
-         ADM1032, ADT7461, ADT7461A, ADT7481, ADT7482, and ADT7483A,
+         LM90, LM86, LM89 and LM99, Analog Devices ADM1020, ADM2021, ADM1021A,
+         ADM1023, ADM1032, ADT7461, ADT7461A, ADT7481, ADT7482, and ADT7483A,
          Maxim MAX1617, MAX6642, MAX6646, MAX6647, MAX6648, MAX6649, MAX6654,
          MAX6657, MAX6658, MAX6659, MAX6680, MAX6681, MAX6692, MAX6695,
          MAX6696,
index 3f49b2e..42f6d9d 100644 (file)
@@ -228,6 +228,7 @@ enum chips { adm1023, adm1032, adt7461, adt7461a, adt7481,
  */
 
 static const struct i2c_device_id lm90_id[] = {
+       { "adm1020", max1617 },
        { "adm1021", max1617 },
        { "adm1023", adm1023 },
        { "adm1032", adm1032 },
@@ -1831,7 +1832,8 @@ static const char *lm90_detect_analog(struct i2c_client *client, bool common_add
                    (config1 & 0x0b) == 0x08 && convrate <= 0x0a)
                        name = "adt7421";
                break;
-       case 0x30 ... 0x3e:     /* ADM1021A, ADM1023 */
+       case 0x30 ... 0x38:     /* ADM1021A, ADM1023 */
+       case 0x3a ... 0x3e:
                /*
                 * ADM1021A and compatible chips will be mis-detected as
                 * ADM1023. Chips labeled 'ADM1021A' and 'ADM1023' were both
@@ -1849,6 +1851,12 @@ static const char *lm90_detect_analog(struct i2c_client *client, bool common_add
                    !(status & 0x03) && !(config1 & 0x3f) && !(convrate & 0xf8))
                        name = "adm1023";
                break;
+       case 0x39:              /* ADM1020 (undocumented) */
+               if (man_id2 == 0x00 && chip_id2 == 0x00 &&
+                   (address == 0x4c || address == 0x4d || address == 0x4e) &&
+                   !(status & 0x03) && !(config1 & 0x3f) && !(convrate & 0xf8))
+                       name = "adm1020";
+               break;
        case 0x3f:              /* NCT210 */
                if (man_id2 == 0x00 && chip_id2 == 0x00 && common_address &&
                    !(status & 0x03) && !(config1 & 0x3f) && !(convrate & 0xf8))