will be called adt7470.
 
 config SENSORS_ADT7473
-       tristate "Analog Devices ADT7473"
+       tristate "Analog Devices ADT7473 (DEPRECATED)"
        depends on I2C && EXPERIMENTAL
+       select SENSORS_ADT7475
        help
          If you say yes here you get support for the Analog Devices
          ADT7473 temperature monitoring chips.
 
+         This driver is deprecated, you should use the adt7475 driver
+         instead.
+
          This driver can also be built as a module. If so, the module
          will be called adt7473.
 
 config SENSORS_ADT7475
-       tristate "Analog Devices ADT7475"
+       tristate "Analog Devices ADT7473 and ADT7475"
        depends on I2C && EXPERIMENTAL
        help
          If you say yes here you get support for the Analog Devices
-         ADT7475 hardware monitoring chips.
+         ADT7473 and ADT7475 hardware monitoring chips.
 
          This driver can also be build as a module.  If so, the module
          will be called adt7475.
 
        { "adt7473", adt7473 },
        { }
 };
-MODULE_DEVICE_TABLE(i2c, adt7473_id);
 
 static struct i2c_driver adt7473_driver = {
        .class          = I2C_CLASS_HWMON,
 
 static int __init adt7473_init(void)
 {
+       pr_notice("The adt7473 driver is deprecated, please use the adt7475 "
+                 "driver instead\n");
        return i2c_add_driver(&adt7473_driver);
 }
 
 
 #define TEMP_OFFSET_REG(idx) (REG_TEMP_OFFSET_BASE + (idx))
 #define TEMP_TRANGE_REG(idx) (REG_TEMP_TRANGE_BASE + (idx))
 
-static unsigned short normal_i2c[] = { 0x2e, I2C_CLIENT_END };
+static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
 
-I2C_CLIENT_INSMOD_1(adt7475);
+I2C_CLIENT_INSMOD_2(adt7473, adt7475);
 
 static const struct i2c_device_id adt7475_id[] = {
+       { "adt7473", adt7473 },
        { "adt7475", adt7475 },
        { }
 };
                          struct i2c_board_info *info)
 {
        struct i2c_adapter *adapter = client->adapter;
+       int vendid, devid;
+       const char *name;
 
        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
                return -ENODEV;
 
-       if (adt7475_read(REG_VENDID) != 0x41 ||
-           adt7475_read(REG_DEVID) != 0x75) {
-               dev_err(&adapter->dev,
-                       "Couldn't detect a adt7475 part at 0x%02x\n",
-                       (unsigned int)client->addr);
+       vendid = adt7475_read(REG_VENDID);
+       devid = adt7475_read(REG_DEVID);
+
+       if (vendid == 0x41 && devid == 0x73)
+               name = "adt7473";
+       else if (vendid == 0x41 && devid == 0x75 && client->addr == 0x2e)
+               name = "adt7475";
+       else {
+               dev_dbg(&adapter->dev,
+                       "Couldn't detect an ADT7473 or ADT7475 part at "
+                       "0x%02x\n", (unsigned int)client->addr);
                return -ENODEV;
        }
 
-       strlcpy(info->type, adt7475_id[0].name, I2C_NAME_SIZE);
+       strlcpy(info->type, name, I2C_NAME_SIZE);
 
        return 0;
 }