aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/core.c83
1 files changed, 38 insertions, 45 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index d3be67e18519..7d0c0d7d90ca 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -66,6 +66,16 @@ static unsigned int _regulator_get_mode(struct regulator_dev *rdev);
66static void _notifier_call_chain(struct regulator_dev *rdev, 66static void _notifier_call_chain(struct regulator_dev *rdev,
67 unsigned long event, void *data); 67 unsigned long event, void *data);
68 68
69static const char *rdev_get_name(struct regulator_dev *rdev)
70{
71 if (rdev->constraints && rdev->constraints->name)
72 return rdev->constraints->name;
73 else if (rdev->desc->name)
74 return rdev->desc->name;
75 else
76 return "";
77}
78
69/* gets the regulator for a given consumer device */ 79/* gets the regulator for a given consumer device */
70static struct regulator *get_device_regulator(struct device *dev) 80static struct regulator *get_device_regulator(struct device *dev)
71{ 81{
@@ -96,12 +106,12 @@ static int regulator_check_voltage(struct regulator_dev *rdev,
96 106
97 if (!rdev->constraints) { 107 if (!rdev->constraints) {
98 printk(KERN_ERR "%s: no constraints for %s\n", __func__, 108 printk(KERN_ERR "%s: no constraints for %s\n", __func__,
99 rdev->desc->name); 109 rdev_get_name(rdev));
100 return -ENODEV; 110 return -ENODEV;
101 } 111 }
102 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) { 112 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) {
103 printk(KERN_ERR "%s: operation not allowed for %s\n", 113 printk(KERN_ERR "%s: operation not allowed for %s\n",
104 __func__, rdev->desc->name); 114 __func__, rdev_get_name(rdev));
105 return -EPERM; 115 return -EPERM;
106 } 116 }
107 117
@@ -124,12 +134,12 @@ static int regulator_check_current_limit(struct regulator_dev *rdev,
124 134
125 if (!rdev->constraints) { 135 if (!rdev->constraints) {
126 printk(KERN_ERR "%s: no constraints for %s\n", __func__, 136 printk(KERN_ERR "%s: no constraints for %s\n", __func__,
127 rdev->desc->name); 137 rdev_get_name(rdev));
128 return -ENODEV; 138 return -ENODEV;
129 } 139 }
130 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) { 140 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) {
131 printk(KERN_ERR "%s: operation not allowed for %s\n", 141 printk(KERN_ERR "%s: operation not allowed for %s\n",
132 __func__, rdev->desc->name); 142 __func__, rdev_get_name(rdev));
133 return -EPERM; 143 return -EPERM;
134 } 144 }
135 145
@@ -159,17 +169,17 @@ static int regulator_check_mode(struct regulator_dev *rdev, int mode)
159 169
160 if (!rdev->constraints) { 170 if (!rdev->constraints) {
161 printk(KERN_ERR "%s: no constraints for %s\n", __func__, 171 printk(KERN_ERR "%s: no constraints for %s\n", __func__,
162 rdev->desc->name); 172 rdev_get_name(rdev));
163 return -ENODEV; 173 return -ENODEV;
164 } 174 }
165 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) { 175 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) {
166 printk(KERN_ERR "%s: operation not allowed for %s\n", 176 printk(KERN_ERR "%s: operation not allowed for %s\n",
167 __func__, rdev->desc->name); 177 __func__, rdev_get_name(rdev));
168 return -EPERM; 178 return -EPERM;
169 } 179 }
170 if (!(rdev->constraints->valid_modes_mask & mode)) { 180 if (!(rdev->constraints->valid_modes_mask & mode)) {
171 printk(KERN_ERR "%s: invalid mode %x for %s\n", 181 printk(KERN_ERR "%s: invalid mode %x for %s\n",
172 __func__, mode, rdev->desc->name); 182 __func__, mode, rdev_get_name(rdev));
173 return -EINVAL; 183 return -EINVAL;
174 } 184 }
175 return 0; 185 return 0;
@@ -180,12 +190,12 @@ static int regulator_check_drms(struct regulator_dev *rdev)
180{ 190{
181 if (!rdev->constraints) { 191 if (!rdev->constraints) {
182 printk(KERN_ERR "%s: no constraints for %s\n", __func__, 192 printk(KERN_ERR "%s: no constraints for %s\n", __func__,
183 rdev->desc->name); 193 rdev_get_name(rdev));
184 return -ENODEV; 194 return -ENODEV;
185 } 195 }
186 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) { 196 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) {
187 printk(KERN_ERR "%s: operation not allowed for %s\n", 197 printk(KERN_ERR "%s: operation not allowed for %s\n",
188 __func__, rdev->desc->name); 198 __func__, rdev_get_name(rdev));
189 return -EPERM; 199 return -EPERM;
190 } 200 }
191 return 0; 201 return 0;
@@ -230,16 +240,8 @@ static ssize_t regulator_name_show(struct device *dev,
230 struct device_attribute *attr, char *buf) 240 struct device_attribute *attr, char *buf)
231{ 241{
232 struct regulator_dev *rdev = dev_get_drvdata(dev); 242 struct regulator_dev *rdev = dev_get_drvdata(dev);
233 const char *name;
234 243
235 if (rdev->constraints && rdev->constraints->name) 244 return sprintf(buf, "%s\n", rdev_get_name(rdev));
236 name = rdev->constraints->name;
237 else if (rdev->desc->name)
238 name = rdev->desc->name;
239 else
240 name = "";
241
242 return sprintf(buf, "%s\n", name);
243} 245}
244 246
245static ssize_t regulator_print_opmode(char *buf, int mode) 247static ssize_t regulator_print_opmode(char *buf, int mode)
@@ -687,13 +689,14 @@ static void print_constraints(struct regulator_dev *rdev)
687 if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY) 689 if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY)
688 count += sprintf(buf + count, "standby"); 690 count += sprintf(buf + count, "standby");
689 691
690 printk(KERN_INFO "regulator: %s: %s\n", rdev->desc->name, buf); 692 printk(KERN_INFO "regulator: %s: %s\n", rdev_get_name(rdev), buf);
691} 693}
692 694
693static int machine_constraints_voltage(struct regulator_dev *rdev, 695static int machine_constraints_voltage(struct regulator_dev *rdev,
694 const char *name, struct regulation_constraints *constraints) 696 struct regulation_constraints *constraints)
695{ 697{
696 struct regulator_ops *ops = rdev->desc->ops; 698 struct regulator_ops *ops = rdev->desc->ops;
699 const char *name = rdev_get_name(rdev);
697 int ret; 700 int ret;
698 701
699 /* do we need to apply the constraint voltage */ 702 /* do we need to apply the constraint voltage */
@@ -800,16 +803,11 @@ static int set_machine_constraints(struct regulator_dev *rdev,
800 const char *name; 803 const char *name;
801 struct regulator_ops *ops = rdev->desc->ops; 804 struct regulator_ops *ops = rdev->desc->ops;
802 805
803 if (constraints->name)
804 name = constraints->name;
805 else if (rdev->desc->name)
806 name = rdev->desc->name;
807 else
808 name = "regulator";
809
810 rdev->constraints = constraints; 806 rdev->constraints = constraints;
811 807
812 ret = machine_constraints_voltage(rdev, name, constraints); 808 name = rdev_get_name(rdev);
809
810 ret = machine_constraints_voltage(rdev, constraints);
813 if (ret != 0) 811 if (ret != 0)
814 goto out; 812 goto out;
815 813
@@ -932,7 +930,7 @@ static int set_consumer_device_supply(struct regulator_dev *rdev,
932 dev_name(&node->regulator->dev), 930 dev_name(&node->regulator->dev),
933 node->regulator->desc->name, 931 node->regulator->desc->name,
934 supply, 932 supply,
935 dev_name(&rdev->dev), rdev->desc->name); 933 dev_name(&rdev->dev), rdev_get_name(rdev));
936 return -EBUSY; 934 return -EBUSY;
937 } 935 }
938 936
@@ -1241,7 +1239,7 @@ static int _regulator_enable(struct regulator_dev *rdev)
1241 ret = _regulator_enable(rdev->supply); 1239 ret = _regulator_enable(rdev->supply);
1242 if (ret < 0) { 1240 if (ret < 0) {
1243 printk(KERN_ERR "%s: failed to enable %s: %d\n", 1241 printk(KERN_ERR "%s: failed to enable %s: %d\n",
1244 __func__, rdev->desc->name, ret); 1242 __func__, rdev_get_name(rdev), ret);
1245 return ret; 1243 return ret;
1246 } 1244 }
1247 } 1245 }
@@ -1267,7 +1265,7 @@ static int _regulator_enable(struct regulator_dev *rdev)
1267 } 1265 }
1268 } else if (ret < 0) { 1266 } else if (ret < 0) {
1269 printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n", 1267 printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n",
1270 __func__, rdev->desc->name, ret); 1268 __func__, rdev_get_name(rdev), ret);
1271 return ret; 1269 return ret;
1272 } 1270 }
1273 /* Fallthrough on positive return values - already enabled */ 1271 /* Fallthrough on positive return values - already enabled */
@@ -1308,7 +1306,7 @@ static int _regulator_disable(struct regulator_dev *rdev)
1308 1306
1309 if (WARN(rdev->use_count <= 0, 1307 if (WARN(rdev->use_count <= 0,
1310 "unbalanced disables for %s\n", 1308 "unbalanced disables for %s\n",
1311 rdev->desc->name)) 1309 rdev_get_name(rdev)))
1312 return -EIO; 1310 return -EIO;
1313 1311
1314 /* are we the last user and permitted to disable ? */ 1312 /* are we the last user and permitted to disable ? */
@@ -1321,7 +1319,7 @@ static int _regulator_disable(struct regulator_dev *rdev)
1321 ret = rdev->desc->ops->disable(rdev); 1319 ret = rdev->desc->ops->disable(rdev);
1322 if (ret < 0) { 1320 if (ret < 0) {
1323 printk(KERN_ERR "%s: failed to disable %s\n", 1321 printk(KERN_ERR "%s: failed to disable %s\n",
1324 __func__, rdev->desc->name); 1322 __func__, rdev_get_name(rdev));
1325 return ret; 1323 return ret;
1326 } 1324 }
1327 } 1325 }
@@ -1378,7 +1376,7 @@ static int _regulator_force_disable(struct regulator_dev *rdev)
1378 ret = rdev->desc->ops->disable(rdev); 1376 ret = rdev->desc->ops->disable(rdev);
1379 if (ret < 0) { 1377 if (ret < 0) {
1380 printk(KERN_ERR "%s: failed to force disable %s\n", 1378 printk(KERN_ERR "%s: failed to force disable %s\n",
1381 __func__, rdev->desc->name); 1379 __func__, rdev_get_name(rdev));
1382 return ret; 1380 return ret;
1383 } 1381 }
1384 /* notify other consumers that power has been forced off */ 1382 /* notify other consumers that power has been forced off */
@@ -1795,7 +1793,7 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
1795 output_uV = rdev->desc->ops->get_voltage(rdev); 1793 output_uV = rdev->desc->ops->get_voltage(rdev);
1796 if (output_uV <= 0) { 1794 if (output_uV <= 0) {
1797 printk(KERN_ERR "%s: invalid output voltage found for %s\n", 1795 printk(KERN_ERR "%s: invalid output voltage found for %s\n",
1798 __func__, rdev->desc->name); 1796 __func__, rdev_get_name(rdev));
1799 goto out; 1797 goto out;
1800 } 1798 }
1801 1799
@@ -1806,7 +1804,7 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
1806 input_uV = rdev->constraints->input_uV; 1804 input_uV = rdev->constraints->input_uV;
1807 if (input_uV <= 0) { 1805 if (input_uV <= 0) {
1808 printk(KERN_ERR "%s: invalid input voltage found for %s\n", 1806 printk(KERN_ERR "%s: invalid input voltage found for %s\n",
1809 __func__, rdev->desc->name); 1807 __func__, rdev_get_name(rdev));
1810 goto out; 1808 goto out;
1811 } 1809 }
1812 1810
@@ -1820,7 +1818,7 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
1820 ret = regulator_check_mode(rdev, mode); 1818 ret = regulator_check_mode(rdev, mode);
1821 if (ret < 0) { 1819 if (ret < 0) {
1822 printk(KERN_ERR "%s: failed to get optimum mode for %s @" 1820 printk(KERN_ERR "%s: failed to get optimum mode for %s @"
1823 " %d uA %d -> %d uV\n", __func__, rdev->desc->name, 1821 " %d uA %d -> %d uV\n", __func__, rdev_get_name(rdev),
1824 total_uA_load, input_uV, output_uV); 1822 total_uA_load, input_uV, output_uV);
1825 goto out; 1823 goto out;
1826 } 1824 }
@@ -1828,7 +1826,7 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
1828 ret = rdev->desc->ops->set_mode(rdev, mode); 1826 ret = rdev->desc->ops->set_mode(rdev, mode);
1829 if (ret < 0) { 1827 if (ret < 0) {
1830 printk(KERN_ERR "%s: failed to set optimum mode %x for %s\n", 1828 printk(KERN_ERR "%s: failed to set optimum mode %x for %s\n",
1831 __func__, mode, rdev->desc->name); 1829 __func__, mode, rdev_get_name(rdev));
1832 goto out; 1830 goto out;
1833 } 1831 }
1834 ret = mode; 1832 ret = mode;
@@ -2346,7 +2344,7 @@ int regulator_suspend_prepare(suspend_state_t state)
2346 2344
2347 if (ret < 0) { 2345 if (ret < 0) {
2348 printk(KERN_ERR "%s: failed to prepare %s\n", 2346 printk(KERN_ERR "%s: failed to prepare %s\n",
2349 __func__, rdev->desc->name); 2347 __func__, rdev_get_name(rdev));
2350 goto out; 2348 goto out;
2351 } 2349 }
2352 } 2350 }
@@ -2459,12 +2457,7 @@ static int __init regulator_init_complete(void)
2459 ops = rdev->desc->ops; 2457 ops = rdev->desc->ops;
2460 c = rdev->constraints; 2458 c = rdev->constraints;
2461 2459
2462 if (c && c->name) 2460 name = rdev_get_name(rdev);
2463 name = c->name;
2464 else if (rdev->desc->name)
2465 name = rdev->desc->name;
2466 else
2467 name = "regulator";
2468 2461
2469 if (!ops->disable || (c && c->always_on)) 2462 if (!ops->disable || (c && c->always_on))
2470 continue; 2463 continue;