mfd: mc13xxx-core: Fix PMIC shutdown when reading ADC values
authorFabio Estevam <fabio.estevam@nxp.com>
Tue, 28 Aug 2018 20:02:40 +0000 (17:02 -0300)
committerLee Jones <lee.jones@linaro.org>
Tue, 23 Oct 2018 07:58:34 +0000 (08:58 +0100)
When trying to read any MC13892 ADC channel on a imx51-babbage board:

The MC13892 PMIC shutdowns completely.

After debugging this issue and comparing the MC13892 and MC13783
initializations done in the vendor kernel, it was noticed that the
CHRGRAWDIV bit of the ADC0 register was not being set.

This bit is set by default after power on, but the driver was
clearing it.

After setting this bit it is possible to read the ADC values correctly.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
Tested-by: Chris Healy <cphealy@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/mc13xxx-core.c
include/linux/mfd/mc13xxx.h

index c63e331738c175b8b6520f8f1e7d0e9779162f3f..f475e848252fa43a0f47997c627196dd6a02630c 100644 (file)
@@ -276,7 +276,8 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, unsigned int mode,
 
        mc13xxx_reg_read(mc13xxx, MC13XXX_ADC0, &old_adc0);
 
-       adc0 = MC13XXX_ADC0_ADINC1 | MC13XXX_ADC0_ADINC2;
+       adc0 = MC13XXX_ADC0_ADINC1 | MC13XXX_ADC0_ADINC2 |
+              MC13XXX_ADC0_CHRGRAWDIV;
        adc1 = MC13XXX_ADC1_ADEN | MC13XXX_ADC1_ADTRIGIGN | MC13XXX_ADC1_ASC;
 
        /*
index 54a3cd808f9e65a41f4e681b2c4b895f7bb23ffe..2ad9bdc0a5ec8f33c3c5e156461466ea994fc16a 100644 (file)
@@ -249,6 +249,7 @@ struct mc13xxx_platform_data {
 #define MC13XXX_ADC0_TSMOD0            (1 << 12)
 #define MC13XXX_ADC0_TSMOD1            (1 << 13)
 #define MC13XXX_ADC0_TSMOD2            (1 << 14)
+#define MC13XXX_ADC0_CHRGRAWDIV                (1 << 15)
 #define MC13XXX_ADC0_ADINC1            (1 << 16)
 #define MC13XXX_ADC0_ADINC2            (1 << 17)