Upgrade to 4.4.50-rt62
[kvmfornfv.git] / kernel / drivers / hwmon / ads7828.c
index 6c99ee7..ee396ff 100644 (file)
@@ -120,6 +120,7 @@ static int ads7828_probe(struct i2c_client *client,
        unsigned int vref_mv = ADS7828_INT_VREF_MV;
        bool diff_input = false;
        bool ext_vref = false;
+       unsigned int regval;
 
        data = devm_kzalloc(dev, sizeof(struct ads7828_data), GFP_KERNEL);
        if (!data)
@@ -154,6 +155,15 @@ static int ads7828_probe(struct i2c_client *client,
        if (!diff_input)
                data->cmd_byte |= ADS7828_CMD_SD_SE;
 
+       /*
+        * Datasheet specifies internal reference voltage is disabled by
+        * default. The internal reference voltage needs to be enabled and
+        * voltage needs to settle before getting valid ADC data. So perform a
+        * dummy read to enable the internal reference voltage.
+        */
+       if (!ext_vref)
+               regmap_read(data->regmap, data->cmd_byte, &regval);
+
        hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name,
                                                           data,
                                                           ads7828_groups);