diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c index a732e0b50ff0..3ec6e1a6e9d2 100644 --- a/drivers/mfd/rk808.c +++ b/drivers/mfd/rk808.c @@ -380,6 +380,18 @@ static const struct regmap_irq rk808_irqs[] = { }, }; +static struct rk808_reg_data rk816_suspend_reg[] = { + /* set bat 3.4v low and act irq */ + { RK816_VB_MON_REG, VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK, + RK816_VBAT_LOW_3V4 | EN_VBAT_LOW_IRQ }, +}; + +static struct rk808_reg_data rk816_resume_reg[] = { + /* set bat 3.0v low and act shutdown */ + { RK816_VB_MON_REG, VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK, + RK816_VBAT_LOW_3V0 | EN_VABT_LOW_SHUT_DOWN }, +}; + static const struct regmap_irq rk816_irqs[] = { /* INT_STS */ [RK816_IRQ_PWRON_FALL] = { @@ -782,6 +794,10 @@ static int rk808_probe(struct i2c_client *client, cells = rk816s; nr_cells = ARRAY_SIZE(rk816s); pm_pwroff_fn = rk816_device_shutdown; + suspend_reg = rk816_suspend_reg; + suspend_reg_num = ARRAY_SIZE(rk816_suspend_reg); + resume_reg = rk816_resume_reg; + resume_reg_num = ARRAY_SIZE(rk816_resume_reg); break; case RK818_ID: rk808->regmap_cfg = &rk818_regmap_config;