X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2Fdrivers%2Fhwmon%2Fads7828.c;fp=kernel%2Fdrivers%2Fhwmon%2Fads7828.c;h=ee396ff167d9d1c2070eeb254475d53dbe4a3f0a;hb=52f993b8e89487ec9ee15a7fb4979e0f09a45b27;hp=6c99ee7bafa3fdf47d6479b7198697ec835a23e8;hpb=c189ccac5702322ed843fe17057035b7222a59b6;p=kvmfornfv.git diff --git a/kernel/drivers/hwmon/ads7828.c b/kernel/drivers/hwmon/ads7828.c index 6c99ee7ba..ee396ff16 100644 --- a/kernel/drivers/hwmon/ads7828.c +++ b/kernel/drivers/hwmon/ads7828.c @@ -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);