forked from luck/tmp_suning_uos_patched
mfd: Fix ab8500-gpadc to measure charger current
The GPADC in the AB8500 was incorrectly configured when a charger current channel was selected. Signed-off-by: Karl Komierowski <karl.komierowski@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
586f3318ad
commit
4aad5a918c
|
@ -56,6 +56,7 @@
|
|||
#define DIS_GPADC 0x00
|
||||
#define SW_AVG_16 0x60
|
||||
#define ADC_SW_CONV 0x04
|
||||
#define EN_ICHAR 0x80
|
||||
#define EN_BUF 0x40
|
||||
#define DIS_ZERO 0x00
|
||||
#define GPADC_BUSY 0x01
|
||||
|
@ -281,9 +282,23 @@ int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 input)
|
|||
"gpadc_conversion: set avg samples failed\n");
|
||||
goto out;
|
||||
}
|
||||
/* Enable ADC, Buffering and select rising edge, start Conversion */
|
||||
ret = abx500_mask_and_set_register_interruptible(gpadc->dev,
|
||||
AB8500_GPADC, AB8500_GPADC_CTRL1_REG, EN_BUF, EN_BUF);
|
||||
/*
|
||||
* Enable ADC, buffering, select rising edge and enable ADC path
|
||||
* charging current sense if it needed
|
||||
*/
|
||||
switch (input) {
|
||||
case MAIN_CHARGER_C:
|
||||
case USB_CHARGER_C:
|
||||
ret = abx500_mask_and_set_register_interruptible(gpadc->dev,
|
||||
AB8500_GPADC, AB8500_GPADC_CTRL1_REG,
|
||||
EN_BUF | EN_ICHAR,
|
||||
EN_BUF | EN_ICHAR);
|
||||
break;
|
||||
default:
|
||||
ret = abx500_mask_and_set_register_interruptible(gpadc->dev,
|
||||
AB8500_GPADC, AB8500_GPADC_CTRL1_REG, EN_BUF, EN_BUF);
|
||||
break;
|
||||
}
|
||||
if (ret < 0) {
|
||||
dev_err(gpadc->dev,
|
||||
"gpadc_conversion: select falling edge failed\n");
|
||||
|
|
Loading…
Reference in New Issue
Block a user