mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 08:43:31 +00:00
regulator: rtq6752: Enclose 'enable' gpio control by enable flag
Fix 'enable' gpio control logic from the below cases if it's specified. 1. All off and both are sequentially controlled to be on. The 'enable' gpio control block to be called twice including the delay time. 2. Both are on and one is preparing to be off. The 'enable' gpio control low before register cache is configured to be true. Signed-off-by: ChiYuan Huang <cy_huang@richtek.com> Link: https://lore.kernel.org/r/1631629249-9998-1-git-send-email-u0084500@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
b1c36aae51
commit
6f3a9b1003
1 changed files with 11 additions and 11 deletions
|
@ -54,14 +54,14 @@ static int rtq6752_set_vdd_enable(struct regulator_dev *rdev)
|
|||
int rid = rdev_get_id(rdev), ret;
|
||||
|
||||
mutex_lock(&priv->lock);
|
||||
if (priv->enable_gpio) {
|
||||
gpiod_set_value(priv->enable_gpio, 1);
|
||||
|
||||
usleep_range(RTQ6752_I2CRDY_TIMEUS,
|
||||
RTQ6752_I2CRDY_TIMEUS + 100);
|
||||
}
|
||||
|
||||
if (!priv->enable_flag) {
|
||||
if (priv->enable_gpio) {
|
||||
gpiod_set_value(priv->enable_gpio, 1);
|
||||
|
||||
usleep_range(RTQ6752_I2CRDY_TIMEUS,
|
||||
RTQ6752_I2CRDY_TIMEUS + 100);
|
||||
}
|
||||
|
||||
regcache_cache_only(priv->regmap, false);
|
||||
ret = regcache_sync(priv->regmap);
|
||||
if (ret) {
|
||||
|
@ -91,11 +91,11 @@ static int rtq6752_set_vdd_disable(struct regulator_dev *rdev)
|
|||
if (!priv->enable_flag) {
|
||||
regcache_cache_only(priv->regmap, true);
|
||||
regcache_mark_dirty(priv->regmap);
|
||||
|
||||
if (priv->enable_gpio)
|
||||
gpiod_set_value(priv->enable_gpio, 0);
|
||||
|
||||
}
|
||||
|
||||
if (priv->enable_gpio)
|
||||
gpiod_set_value(priv->enable_gpio, 0);
|
||||
|
||||
mutex_unlock(&priv->lock);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue