|
@@ -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, ®val);
|
|
|
+
|
|
|
hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name,
|
|
|
data,
|
|
|
ads7828_groups);
|