diff options
-rw-r--r-- | drivers/hwmon/ads7828.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/hwmon/ads7828.c b/drivers/hwmon/ads7828.c index 6c99ee7bafa3..ee396ff167d9 100644 --- a/drivers/hwmon/ads7828.c +++ b/drivers/hwmon/ads7828.c | |||
@@ -120,6 +120,7 @@ static int ads7828_probe(struct i2c_client *client, | |||
120 | unsigned int vref_mv = ADS7828_INT_VREF_MV; | 120 | unsigned int vref_mv = ADS7828_INT_VREF_MV; |
121 | bool diff_input = false; | 121 | bool diff_input = false; |
122 | bool ext_vref = false; | 122 | bool ext_vref = false; |
123 | unsigned int regval; | ||
123 | 124 | ||
124 | data = devm_kzalloc(dev, sizeof(struct ads7828_data), GFP_KERNEL); | 125 | data = devm_kzalloc(dev, sizeof(struct ads7828_data), GFP_KERNEL); |
125 | if (!data) | 126 | if (!data) |
@@ -154,6 +155,15 @@ static int ads7828_probe(struct i2c_client *client, | |||
154 | if (!diff_input) | 155 | if (!diff_input) |
155 | data->cmd_byte |= ADS7828_CMD_SD_SE; | 156 | data->cmd_byte |= ADS7828_CMD_SD_SE; |
156 | 157 | ||
158 | /* | ||
159 | * Datasheet specifies internal reference voltage is disabled by | ||
160 | * default. The internal reference voltage needs to be enabled and | ||
161 | * voltage needs to settle before getting valid ADC data. So perform a | ||
162 | * dummy read to enable the internal reference voltage. | ||
163 | */ | ||
164 | if (!ext_vref) | ||
165 | regmap_read(data->regmap, data->cmd_byte, ®val); | ||
166 | |||
157 | hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name, | 167 | hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name, |
158 | data, | 168 | data, |
159 | ads7828_groups); | 169 | ads7828_groups); |