From cf682e1ec33749ae4707b9726f17f6cfca69a240 Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Thu, 19 Jul 2012 11:17:15 +0800 Subject: [PATCH] --- yaml --- r: 323327 b: refs/heads/master c: 825d105910d549e69748b19f83031b231152ac9d h: refs/heads/master i: 323325: 02392a4e4fbebadd33ccc704489d442058c3cb32 323323: 5b8325a6d6d8799175c2b8725f805b60b1d3e217 323319: 3fd2ec4885f97a45fdd19fd75eab8cee3c7cb7a7 323311: 4a521fa48a9a27441ddde8c44991aa0462e2799c 323295: 21bf6668c9f54d18c212b176fc0e29ce25f01e9a 323263: 3631d63d7ffacb94f174fc8eadf6f753f06af9ae 323199: 35d328081b2a0a5395624116caa898939b01967a 323071: a69bee5d9dd594819a860f1289d3906d15b1a148 v: v3 --- [refs] | 2 +- trunk/drivers/regulator/mc13892-regulator.c | 22 ++++++++------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 49edced293b1..93e4ce4b9032 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2a2c3ac0a584246cf9fdab69941b8aad54749581 +refs/heads/master: 825d105910d549e69748b19f83031b231152ac9d diff --git a/trunk/drivers/regulator/mc13892-regulator.c b/trunk/drivers/regulator/mc13892-regulator.c index b388b746452e..9d4296b96adb 100644 --- a/trunk/drivers/regulator/mc13892-regulator.c +++ b/trunk/drivers/regulator/mc13892-regulator.c @@ -305,9 +305,10 @@ static int mc13892_powermisc_rmw(struct mc13xxx_regulator_priv *priv, u32 mask, BUG_ON(val & ~mask); + mc13xxx_lock(priv->mc13xxx); ret = mc13xxx_reg_read(mc13892, MC13892_POWERMISC, &valread); if (ret) - return ret; + goto out; /* Update the stored state for Power Gates. */ priv->powermisc_pwgt_state = @@ -320,14 +321,16 @@ static int mc13892_powermisc_rmw(struct mc13xxx_regulator_priv *priv, u32 mask, valread = (valread & ~MC13892_POWERMISC_PWGTSPI_M) | priv->powermisc_pwgt_state; - return mc13xxx_reg_write(mc13892, MC13892_POWERMISC, valread); + ret = mc13xxx_reg_write(mc13892, MC13892_POWERMISC, valread); +out: + mc13xxx_unlock(priv->mc13xxx); + return ret; } static int mc13892_gpo_regulator_enable(struct regulator_dev *rdev) { struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); int id = rdev_get_id(rdev); - int ret; u32 en_val = mc13892_regulators[id].enable_bit; u32 mask = mc13892_regulators[id].enable_bit; @@ -340,18 +343,13 @@ static int mc13892_gpo_regulator_enable(struct regulator_dev *rdev) if (id == MC13892_GPO4) mask |= MC13892_POWERMISC_GPO4ADINEN; - mc13xxx_lock(priv->mc13xxx); - ret = mc13892_powermisc_rmw(priv, mask, en_val); - mc13xxx_unlock(priv->mc13xxx); - - return ret; + return mc13892_powermisc_rmw(priv, mask, en_val); } static int mc13892_gpo_regulator_disable(struct regulator_dev *rdev) { struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); int id = rdev_get_id(rdev); - int ret; u32 dis_val = 0; dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); @@ -360,12 +358,8 @@ static int mc13892_gpo_regulator_disable(struct regulator_dev *rdev) if (id == MC13892_PWGT1SPI || id == MC13892_PWGT2SPI) dis_val = mc13892_regulators[id].enable_bit; - mc13xxx_lock(priv->mc13xxx); - ret = mc13892_powermisc_rmw(priv, mc13892_regulators[id].enable_bit, + return mc13892_powermisc_rmw(priv, mc13892_regulators[id].enable_bit, dis_val); - mc13xxx_unlock(priv->mc13xxx); - - return ret; } static int mc13892_gpo_regulator_is_enabled(struct regulator_dev *rdev)