#define MAX31785                       0x3030
 #define MAX31785A                      0x3040
+#define MAX31785B                      0x3061
 
 #define MFR_FAN_CONFIG_DUAL_TACH       BIT(12)
 
        struct device *dev = &client->dev;
        struct pmbus_driver_info *info;
        bool dual_tach = false;
-       s64 ret;
+       int ret;
 
        if (!i2c_check_functionality(client->adapter,
                                     I2C_FUNC_SMBUS_BYTE_DATA |
        if (ret < 0)
                return ret;
 
-       if (ret == MAX31785A) {
+       if (ret == MAX31785A || ret == MAX31785B) {
                dual_tach = true;
        } else if (ret == MAX31785) {
-               if (!strcmp("max31785a", client->name))
-                       dev_warn(dev, "Expected max3175a, found max31785: cannot provide secondary tachometer readings\n");
+               if (!strcmp("max31785a", client->name) ||
+                   !strcmp("max31785b", client->name))
+                       dev_warn(dev, "Expected max31785a/b, found max31785: cannot provide secondary tachometer readings\n");
        } else {
+               dev_err(dev, "Unrecognized MAX31785 revision: %x\n", ret);
                return -ENODEV;
        }
 
 static const struct i2c_device_id max31785_id[] = {
        { "max31785", 0 },
        { "max31785a", 0 },
+       { "max31785b", 0 },
        { },
 };
 
 static const struct of_device_id max31785_of_match[] = {
        { .compatible = "maxim,max31785" },
        { .compatible = "maxim,max31785a" },
+       { .compatible = "maxim,max31785b" },
        { },
 };