diff options
author | Jinyoung Park <jinyoungp@nvidia.com> | 2013-11-29 16:13:15 +0900 |
---|---|---|
committer | Harry Hong <hhong@nvidia.com> | 2013-12-01 22:13:40 -0800 |
commit | 46b604aaf799f1e9832246d3f288e276eacfc3cd (patch) | |
tree | cc685c3744ed0ffbc29f2479483d0b98903bf5f8 | |
parent | 6eda6ac9291fad2c5c11340f06263cc99411c670 (diff) |
iio: staging: adc: palmas: Restore CH3 current source
Restore CH3 current source if CH3 is dual current mode.
Bug 1366274
Change-Id: Id45a2d1162c8cb03a14306ca2cb8fce05f3341a1
Signed-off-by: Jinyoung Park <jinyoungp@nvidia.com>
Reviewed-on: http://git-master/r/336849
Reviewed-by: Harry Hong <hhong@nvidia.com>
Tested-by: Harry Hong <hhong@nvidia.com>
-rw-r--r-- | drivers/staging/iio/adc/palmas_gpadc.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/staging/iio/adc/palmas_gpadc.c b/drivers/staging/iio/adc/palmas_gpadc.c index 47395a4f844a..6c8aa47668a3 100644 --- a/drivers/staging/iio/adc/palmas_gpadc.c +++ b/drivers/staging/iio/adc/palmas_gpadc.c @@ -374,7 +374,7 @@ scrub: static int palmas_gpadc_enable(struct palmas_gpadc *adc, int adc_chan, int enable) { - unsigned int val, mask; + unsigned int val = 0, mask = 0; int ret; if (enable) { @@ -420,9 +420,16 @@ static int palmas_gpadc_enable(struct palmas_gpadc *adc, int adc_chan, return ret; } + /* Restore CH3 current source if CH3 is dual current mode. */ + if ((adc_chan == PALMAS_ADC_CH_IN3) && adc->ch3_dual_current) { + mask |= PALMAS_GPADC_CTRL1_CURRENT_SRC_CH3_MASK; + val = (adc->ch3_current + << PALMAS_GPADC_CTRL1_CURRENT_SRC_CH3_SHIFT); + } + + mask |= PALMAS_GPADC_CTRL1_GPADC_FORCE; ret = palmas_update_bits(adc->palmas, PALMAS_GPADC_BASE, - PALMAS_GPADC_CTRL1, - PALMAS_GPADC_CTRL1_GPADC_FORCE, 0); + PALMAS_GPADC_CTRL1, mask, val); if (ret < 0) { dev_err(adc->dev, "CTRL1 update failed: %d\n", ret); return ret; |