diff options
Diffstat (limited to 'drivers/regulator/mc13xxx-regulator-core.c')
-rw-r--r-- | drivers/regulator/mc13xxx-regulator-core.c | 37 |
1 files changed, 8 insertions, 29 deletions
diff --git a/drivers/regulator/mc13xxx-regulator-core.c b/drivers/regulator/mc13xxx-regulator-core.c index 05b971726ffa..afba024953e1 100644 --- a/drivers/regulator/mc13xxx-regulator-core.c +++ b/drivers/regulator/mc13xxx-regulator-core.c | |||
@@ -33,17 +33,12 @@ static int mc13xxx_regulator_enable(struct regulator_dev *rdev) | |||
33 | struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); | 33 | struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); |
34 | struct mc13xxx_regulator *mc13xxx_regulators = priv->mc13xxx_regulators; | 34 | struct mc13xxx_regulator *mc13xxx_regulators = priv->mc13xxx_regulators; |
35 | int id = rdev_get_id(rdev); | 35 | int id = rdev_get_id(rdev); |
36 | int ret; | ||
37 | 36 | ||
38 | dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); | 37 | dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); |
39 | 38 | ||
40 | mc13xxx_lock(priv->mc13xxx); | 39 | return mc13xxx_reg_rmw(priv->mc13xxx, mc13xxx_regulators[id].reg, |
41 | ret = mc13xxx_reg_rmw(priv->mc13xxx, mc13xxx_regulators[id].reg, | 40 | mc13xxx_regulators[id].enable_bit, |
42 | mc13xxx_regulators[id].enable_bit, | 41 | mc13xxx_regulators[id].enable_bit); |
43 | mc13xxx_regulators[id].enable_bit); | ||
44 | mc13xxx_unlock(priv->mc13xxx); | ||
45 | |||
46 | return ret; | ||
47 | } | 42 | } |
48 | 43 | ||
49 | static int mc13xxx_regulator_disable(struct regulator_dev *rdev) | 44 | static int mc13xxx_regulator_disable(struct regulator_dev *rdev) |
@@ -51,16 +46,11 @@ static int mc13xxx_regulator_disable(struct regulator_dev *rdev) | |||
51 | struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); | 46 | struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); |
52 | struct mc13xxx_regulator *mc13xxx_regulators = priv->mc13xxx_regulators; | 47 | struct mc13xxx_regulator *mc13xxx_regulators = priv->mc13xxx_regulators; |
53 | int id = rdev_get_id(rdev); | 48 | int id = rdev_get_id(rdev); |
54 | int ret; | ||
55 | 49 | ||
56 | dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); | 50 | dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); |
57 | 51 | ||
58 | mc13xxx_lock(priv->mc13xxx); | 52 | return mc13xxx_reg_rmw(priv->mc13xxx, mc13xxx_regulators[id].reg, |
59 | ret = mc13xxx_reg_rmw(priv->mc13xxx, mc13xxx_regulators[id].reg, | 53 | mc13xxx_regulators[id].enable_bit, 0); |
60 | mc13xxx_regulators[id].enable_bit, 0); | ||
61 | mc13xxx_unlock(priv->mc13xxx); | ||
62 | |||
63 | return ret; | ||
64 | } | 54 | } |
65 | 55 | ||
66 | static int mc13xxx_regulator_is_enabled(struct regulator_dev *rdev) | 56 | static int mc13xxx_regulator_is_enabled(struct regulator_dev *rdev) |
@@ -70,10 +60,7 @@ static int mc13xxx_regulator_is_enabled(struct regulator_dev *rdev) | |||
70 | int ret, id = rdev_get_id(rdev); | 60 | int ret, id = rdev_get_id(rdev); |
71 | unsigned int val; | 61 | unsigned int val; |
72 | 62 | ||
73 | mc13xxx_lock(priv->mc13xxx); | ||
74 | ret = mc13xxx_reg_read(priv->mc13xxx, mc13xxx_regulators[id].reg, &val); | 63 | ret = mc13xxx_reg_read(priv->mc13xxx, mc13xxx_regulators[id].reg, &val); |
75 | mc13xxx_unlock(priv->mc13xxx); | ||
76 | |||
77 | if (ret) | 64 | if (ret) |
78 | return ret; | 65 | return ret; |
79 | 66 | ||
@@ -86,15 +73,10 @@ static int mc13xxx_regulator_set_voltage_sel(struct regulator_dev *rdev, | |||
86 | struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); | 73 | struct mc13xxx_regulator_priv *priv = rdev_get_drvdata(rdev); |
87 | struct mc13xxx_regulator *mc13xxx_regulators = priv->mc13xxx_regulators; | 74 | struct mc13xxx_regulator *mc13xxx_regulators = priv->mc13xxx_regulators; |
88 | int id = rdev_get_id(rdev); | 75 | int id = rdev_get_id(rdev); |
89 | int ret; | ||
90 | 76 | ||
91 | mc13xxx_lock(priv->mc13xxx); | 77 | return mc13xxx_reg_rmw(priv->mc13xxx, mc13xxx_regulators[id].vsel_reg, |
92 | ret = mc13xxx_reg_rmw(priv->mc13xxx, mc13xxx_regulators[id].vsel_reg, | 78 | mc13xxx_regulators[id].vsel_mask, |
93 | mc13xxx_regulators[id].vsel_mask, | 79 | selector << mc13xxx_regulators[id].vsel_shift); |
94 | selector << mc13xxx_regulators[id].vsel_shift); | ||
95 | mc13xxx_unlock(priv->mc13xxx); | ||
96 | |||
97 | return ret; | ||
98 | } | 80 | } |
99 | 81 | ||
100 | static int mc13xxx_regulator_get_voltage(struct regulator_dev *rdev) | 82 | static int mc13xxx_regulator_get_voltage(struct regulator_dev *rdev) |
@@ -106,11 +88,8 @@ static int mc13xxx_regulator_get_voltage(struct regulator_dev *rdev) | |||
106 | 88 | ||
107 | dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); | 89 | dev_dbg(rdev_get_dev(rdev), "%s id: %d\n", __func__, id); |
108 | 90 | ||
109 | mc13xxx_lock(priv->mc13xxx); | ||
110 | ret = mc13xxx_reg_read(priv->mc13xxx, | 91 | ret = mc13xxx_reg_read(priv->mc13xxx, |
111 | mc13xxx_regulators[id].vsel_reg, &val); | 92 | mc13xxx_regulators[id].vsel_reg, &val); |
112 | mc13xxx_unlock(priv->mc13xxx); | ||
113 | |||
114 | if (ret) | 93 | if (ret) |
115 | return ret; | 94 | return ret; |
116 | 95 | ||