]> git.dujemihanovic.xyz Git - u-boot.git/commit
power: regulator: Do not call set_suspend_value with -ENODATA
authorJonas Karlman <jonas@kwiboo.se>
Wed, 24 Jul 2024 22:47:10 +0000 (22:47 +0000)
committerTom Rini <trini@konsulko.com>
Wed, 25 Sep 2024 14:54:03 +0000 (08:54 -0600)
commitf417c14d88fec5757dbf3cd6af6f7f2ddb99595f
treefe66d51625382c951b3ba1ea03cd2a260ad8ef56
parent49e3b574ed4f6dc26b65a5d6e9cd14b97e03b861
power: regulator: Do not call set_suspend_value with -ENODATA

On some boards a PMIC regulator is flagged with regulator-on-in-suspend
and does not define any suspend or max microvolt, e.g. on Radxa ROCK 3A:

  vcc_ddr: DCDC_REG3 {
regulator-name = "vcc_ddr";
regulator-always-on;
regulator-boot-on;
regulator-initial-mode = <0x2>;

regulator-state-mem {
regulator-on-in-suspend;
};
  };

This result in suspend_uV having the value -ENODATA after probe.

This negative voltage, -ENODATA, gets missinterpreted and result in an
unexpected voltage being set by autoset.

E.g. on Radxa ROCK 3A the vcc_ddr regulator by default have a normal and
suspend voltage value of 0.5v. However, due to this missinterpretation
the suspend voltage end up beind set to 0.5625v instead.

Fix this by skip calling regulator_set_suspend_value() in autoset and
also protect calling set value ops when input value is -ENODATA.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
drivers/power/regulator/regulator-uclass.c