
Hi Jonas,
On 2024/8/31 06:42, Jonas Karlman wrote:
Wrong POWER_EN reg is used to get and set enabled state for the RK806 buck 4 and 8 regulators, also wrong POWER_SLP_EN0 bit is used for suspend state for the RK806 buck 1-8 regulators.
Fix this by not adding one to the zero based buck variable.
Fixes: f172575d92cd ("power: rk8xx: add support for RK806") Signed-off-by: Jonas Karlman jonas@kwiboo.se
Reviewed-by: Kever Yang kever.yang@rock-chips.com
Thanks, - Kever
drivers/power/regulator/rk8xx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/power/regulator/rk8xx.c b/drivers/power/regulator/rk8xx.c index 34e61511d884..3f5ec02b3824 100644 --- a/drivers/power/regulator/rk8xx.c +++ b/drivers/power/regulator/rk8xx.c @@ -415,7 +415,7 @@ static int _buck_set_enable(struct udevice *pmic, int buck, bool enable) break; case RK806_ID: value = RK806_POWER_EN_CLRSETBITS(buck % 4, enable);
en_reg = RK806_POWER_EN((buck + 1) / 4);
ret = pmic_reg_write(pmic, en_reg, value); break; case RK808_ID:en_reg = RK806_POWER_EN(buck / 4);
@@ -494,7 +494,7 @@ static int _buck_get_enable(struct udevice *pmic, int buck) break; case RK806_ID: mask = BIT(buck % 4);
ret = pmic_reg_read(pmic, RK806_POWER_EN((buck + 1) / 4));
break; case RK808_ID: case RK818_ID:ret = pmic_reg_read(pmic, RK806_POWER_EN(buck / 4));
@@ -541,10 +541,10 @@ static int _buck_set_suspend_enable(struct udevice *pmic, int buck, bool enable)
if (buck + 1 >= 9) { reg = RK806_POWER_SLP_EN1;
mask = BIT(buck + 1 - 3);
mask = BIT(buck - 2); } else { reg = RK806_POWER_SLP_EN0;
mask = BIT(buck + 1);
}mask = BIT(buck); } ret = pmic_clrsetbits(pmic, reg, mask, enable ? mask : 0);
@@ -592,10 +592,10 @@ static int _buck_get_suspend_enable(struct udevice *pmic, int buck)
if (buck + 1 >= 9) { reg = RK806_POWER_SLP_EN1;
mask = BIT(buck + 1 - 3);
mask = BIT(buck - 2); } else { reg = RK806_POWER_SLP_EN0;
mask = BIT(buck + 1);
}mask = BIT(buck); } val = pmic_reg_read(pmic, reg);