mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
regulator: rt6245: Restore state on enable failure
Currently, if regcache_sync() fails after the enable GPIO has been asserted, the driver returns with enable_gpio still set high and regcache_cache_only() left disabled. This leaves the device state inconsistent with the disabled state, where the enable GPIO is low and cache_only is enabled. On failure, restore the original state by setting cache_only back to true and driving the enable GPIO low before returning the error. Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> Link: https://patch.msgid.link/20260729100018.66577-1-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
623d9a5568
commit
e95a0a309c
|
|
@ -49,8 +49,11 @@ static int rt6245_enable(struct regulator_dev *rdev)
|
|||
|
||||
regcache_cache_only(regmap, false);
|
||||
ret = regcache_sync(regmap);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
regcache_cache_only(regmap, true);
|
||||
gpiod_direction_output(priv->enable_gpio, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
priv->enable_state = true;
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user