regulator: rk8xx: Fix buck get and set enabled state on RK806
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: f172575d92
("power: rk8xx: add support for RK806")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
This commit is contained in:

committed by
Kever Yang

parent
56b47b8b6a
commit
5964651381
@@ -415,7 +415,7 @@ static int _buck_set_enable(struct udevice *pmic, int buck, bool enable)
|
|||||||
break;
|
break;
|
||||||
case RK806_ID:
|
case RK806_ID:
|
||||||
value = RK806_POWER_EN_CLRSETBITS(buck % 4, enable);
|
value = RK806_POWER_EN_CLRSETBITS(buck % 4, enable);
|
||||||
en_reg = RK806_POWER_EN((buck + 1) / 4);
|
en_reg = RK806_POWER_EN(buck / 4);
|
||||||
ret = pmic_reg_write(pmic, en_reg, value);
|
ret = pmic_reg_write(pmic, en_reg, value);
|
||||||
break;
|
break;
|
||||||
case RK808_ID:
|
case RK808_ID:
|
||||||
@@ -494,7 +494,7 @@ static int _buck_get_enable(struct udevice *pmic, int buck)
|
|||||||
break;
|
break;
|
||||||
case RK806_ID:
|
case RK806_ID:
|
||||||
mask = BIT(buck % 4);
|
mask = BIT(buck % 4);
|
||||||
ret = pmic_reg_read(pmic, RK806_POWER_EN((buck + 1) / 4));
|
ret = pmic_reg_read(pmic, RK806_POWER_EN(buck / 4));
|
||||||
break;
|
break;
|
||||||
case RK808_ID:
|
case RK808_ID:
|
||||||
case RK818_ID:
|
case RK818_ID:
|
||||||
@@ -544,7 +544,7 @@ static int _buck_set_suspend_enable(struct udevice *pmic, int buck, bool enable)
|
|||||||
mask = BIT(buck + 1 - 3);
|
mask = BIT(buck + 1 - 3);
|
||||||
} else {
|
} else {
|
||||||
reg = RK806_POWER_SLP_EN0;
|
reg = RK806_POWER_SLP_EN0;
|
||||||
mask = BIT(buck + 1);
|
mask = BIT(buck);
|
||||||
}
|
}
|
||||||
ret = pmic_clrsetbits(pmic, reg, mask, enable ? mask : 0);
|
ret = pmic_clrsetbits(pmic, reg, mask, enable ? mask : 0);
|
||||||
}
|
}
|
||||||
@@ -595,7 +595,7 @@ static int _buck_get_suspend_enable(struct udevice *pmic, int buck)
|
|||||||
mask = BIT(buck + 1 - 3);
|
mask = BIT(buck + 1 - 3);
|
||||||
} else {
|
} else {
|
||||||
reg = RK806_POWER_SLP_EN0;
|
reg = RK806_POWER_SLP_EN0;
|
||||||
mask = BIT(buck + 1);
|
mask = BIT(buck);
|
||||||
}
|
}
|
||||||
val = pmic_reg_read(pmic, reg);
|
val = pmic_reg_read(pmic, reg);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user