mfd: rk808: update rk818 volatile reg range

The registers relative with fuel gauge must be volatile.

Change-Id: I8e942e8f15f66dabf24ede48b81857947575fa23
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
This commit is contained in:
Joseph Chen
2019-11-01 17:52:18 +08:00
committed by Tao Huang
parent a921d23418
commit 3bb76af1a8
2 changed files with 110 additions and 2 deletions

View File

@@ -78,12 +78,45 @@ static bool rk817_is_volatile_reg(struct device *dev, unsigned int reg)
return true;
}
static bool rk818_is_volatile_reg(struct device *dev, unsigned int reg)
{
/*
* Notes:
* - Technically the ROUND_30s bit makes RTC_CTRL_REG volatile, but
* we don't use that feature. It's better to cache.
* - It's unlikely we care that RK808_DEVCTRL_REG is volatile since
* bits are cleared in case when we shutoff anyway, but better safe.
*/
switch (reg) {
case RK808_SECONDS_REG ... RK808_WEEKS_REG:
case RK808_RTC_STATUS_REG:
case RK808_VB_MON_REG:
case RK808_THERMAL_REG:
case RK808_DCDC_EN_REG:
case RK808_LDO_EN_REG:
case RK808_DCDC_UV_STS_REG:
case RK808_LDO_UV_STS_REG:
case RK808_DCDC_PG_REG:
case RK808_LDO_PG_REG:
case RK808_DEVCTRL_REG:
case RK808_INT_STS_REG1:
case RK808_INT_STS_REG2:
case RK808_INT_STS_MSK_REG1:
case RK808_INT_STS_MSK_REG2:
case RK818_SUP_STS_REG ... RK818_SAVE_DATA19:
return true;
}
return false;
}
static const struct regmap_config rk818_regmap_config = {
.reg_bits = 8,
.val_bits = 8,
.max_register = RK818_USB_CTRL_REG,
.max_register = RK818_SAVE_DATA19,
.cache_type = REGCACHE_RBTREE,
.volatile_reg = rk808_is_volatile_reg,
.volatile_reg = rk818_is_volatile_reg,
};
static const struct regmap_config rk805_regmap_config = {

View File

@@ -190,7 +190,82 @@ enum rk818_reg {
#define RK818_BOOST_LDO9_SLP_VSEL_REG 0x55
#define RK818_BOOST_CTRL_REG 0x56
#define RK818_DCDC_ILMAX 0x90
#define RK818_SUP_STS_REG 0xa0
#define RK818_USB_CTRL_REG 0xa1
#define RK818_CHRG_CTRL_REG1 0xa3
#define RK818_CHRG_CTRL_REG2 0xa4
#define RK818_CHRG_CTRL_REG3 0xa5
#define RK818_BAT_CTRL_REG 0xa6
#define RK818_BAT_HTS_TS1_REG 0xa8
#define RK818_BAT_LTS_TS1_REG 0xa9
#define RK818_BAT_HTS_TS2_REG 0xaa
#define RK818_BAT_LTS_TS2_REG 0xab
#define RK818_TS_CTRL_REG 0xac
#define RK818_ADC_CTRL_REG 0xad
#define RK818_ON_SOURCE_REG 0xae
#define RK818_OFF_SOURCE_REG 0xaf
#define RK818_GGCON_REG 0xb0
#define RK818_GGSTS_REG 0xb1
#define RK818_FRAME_SMP_INTERV_REG 0xb2
#define RK818_AUTO_SLP_CUR_THR_REG 0xb3
#define RK818_GASCNT_CAL_REG3 0xb4
#define RK818_GASCNT_CAL_REG2 0xb5
#define RK818_GASCNT_CAL_REG1 0xb6
#define RK818_GASCNT_CAL_REG0 0xb7
#define RK818_GASCNT3_REG 0xb8
#define RK818_GASCNT2_REG 0xb9
#define RK818_GASCNT1_REG 0xba
#define RK818_GASCNT0_REG 0xbb
#define RK818_BAT_CUR_AVG_REGH 0xbc
#define RK818_BAT_CUR_AVG_REGL 0xbd
#define RK818_TS1_ADC_REGH 0xbe
#define RK818_TS1_ADC_REGL 0xbf
#define RK818_TS2_ADC_REGH 0xc0
#define RK818_TS2_ADC_REGL 0xc1
#define RK818_BAT_OCV_REGH 0xc2
#define RK818_BAT_OCV_REGL 0xc3
#define RK818_BAT_VOL_REGH 0xc4
#define RK818_BAT_VOL_REGL 0xc5
#define RK818_RELAX_ENTRY_THRES_REGH 0xc6
#define RK818_RELAX_ENTRY_THRES_REGL 0xc7
#define RK818_RELAX_EXIT_THRES_REGH 0xc8
#define RK818_RELAX_EXIT_THRES_REGL 0xc9
#define RK818_RELAX_VOL1_REGH 0xca
#define RK818_RELAX_VOL1_REGL 0xcb
#define RK818_RELAX_VOL2_REGH 0xcc
#define RK818_RELAX_VOL2_REGL 0xcd
#define RK818_BAT_CUR_R_CALC_REGH 0xce
#define RK818_BAT_CUR_R_CALC_REGL 0xcf
#define RK818_BAT_VOL_R_CALC_REGH 0xd0
#define RK818_BAT_VOL_R_CALC_REGL 0xd1
#define RK818_CAL_OFFSET_REGH 0xd2
#define RK818_CAL_OFFSET_REGL 0xd3
#define RK818_NON_ACT_TIMER_CNT_REG 0xd4
#define RK818_VCALIB0_REGH 0xd5
#define RK818_VCALIB0_REGL 0xd6
#define RK818_VCALIB1_REGH 0xd7
#define RK818_VCALIB1_REGL 0xd8
#define RK818_IOFFSET_REGH 0xdd
#define RK818_IOFFSET_REGL 0xde
#define RK818_SOC_REG 0xe0
#define RK818_REMAIN_CAP_REG3 0xe1
#define RK818_REMAIN_CAP_REG2 0xe2
#define RK818_REMAIN_CAP_REG1 0xe3
#define RK818_REMAIN_CAP_REG0 0xe4
#define RK818_UPDAT_LEVE_REG 0xe5
#define RK818_NEW_FCC_REG3 0xe6
#define RK818_NEW_FCC_REG2 0xe7
#define RK818_NEW_FCC_REG1 0xe8
#define RK818_NEW_FCC_REG0 0xe9
#define RK818_NON_ACT_TIMER_CNT_SAVE_REG 0xea
#define RK818_OCV_VOL_VALID_REG 0xeb
#define RK818_REBOOT_CNT_REG 0xec
#define RK818_POFFSET_REG 0xed
#define RK818_MISC_MARK_REG 0xee
#define RK818_HALT_CNT_REG 0xef
#define RK818_CALC_REST_REGH 0xf0
#define RK818_CALC_REST_REGL 0xf1
#define RK818_SAVE_DATA19 0xf2
#define RK818_H5V_EN BIT(0)
#define RK818_REF_RDY_CTRL BIT(1)