Re: [PATCH] mfd: axp20x: Add AXP288 volatile registers.
From: Christian Mauderer
Date: Tue Jan 17 2017 - 14:57:44 EST
Am 17.01.2017 um 15:58 schrieb Lee Jones:
> On Fri, 13 Jan 2017, Lee Jones wrote:
>
>> On Wed, 11 Jan 2017, Christian Mauderer wrote:
>>
>>> The axp288_fuelgauge driver and some other axp288_xxx are using a number
>>> of the registers of the chip that are changed by hardware (for example
>>> charge level). Because these registers are not marked as "volatile" in
>>> the regmap, a cached version is used instead of the correct register
>>> value. In case of the axp288_fuelgauge that leads to a battery level
>>> that only changes on reboot. This patch adds the volatile registers of
>>> the chip.
>>>
>>> Signed-off-by: Christian Mauderer <oss@xxxxxxxxxxxxx>
>>> ---
>>> drivers/mfd/axp20x.c | 3 +++
>>> 1 file changed, 3 insertions(+)
>>
>> Applied, thanks.
>
> Change of plan. This patch does not apply.
>
> Please rebase it on top of the MFD tree.
It seems that there is already a similar patch on mfd/for-mfd-next. I
tried to apply my patch to the linux/master and 4.9, to some of the
linux-power-supply and to mfd/for-mfd-next-next branch. I totally missed
the for-mfd-next one. Sorry for that.
As far as I can tell, the other patch already does everything that I
would need and it even seems to be slightly more accurate. So you can
just ignore my patch.
I'll test the already existing patches in the next few days on my device
and only send a new patch if something goes wrong. But I'm quite
confident that it is not necessary.
Thanks again.
Christian Mauderer
>
>>> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
>>> index ed918de84238..d74b3daca23f 100644
>>> --- a/drivers/mfd/axp20x.c
>>> +++ b/drivers/mfd/axp20x.c
>>> @@ -118,7 +118,10 @@ static const struct regmap_range axp288_writeable_ranges[] = {
>>> };
>>>
>>> static const struct regmap_range axp288_volatile_ranges[] = {
>>> + regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP20X_PWR_OP_MODE),
>>> regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IPSOUT_V_HIGH_L),
>>> + regmap_reg_range(AXP20X_CC_CTRL, AXP288_FG_OCVL_REG),
>>> + regmap_reg_range(AXP288_FG_DES_CAP1_REG, AXP288_FG_CC_CAP_REG),
>>> };
>>>
>>> static const struct regmap_access_table axp288_writeable_table = {
>>
>