9a143aebb84b6cf8cf4ce236fb4485161a88e19e
[linux-2.6.git] / drivers / regulator / core.c
1 /*
2  * core.c  --  Voltage/Current Regulator framework.
3  *
4  * Copyright 2007, 2008 Wolfson Microelectronics PLC.
5  * Copyright 2008 SlimLogic Ltd.
6  *
7  * Author: Liam Girdwood <lrg@slimlogic.co.uk>
8  *
9  *  This program is free software; you can redistribute  it and/or modify it
10  *  under  the terms of  the GNU General  Public License as published by the
11  *  Free Software Foundation;  either version 2 of the  License, or (at your
12  *  option) any later version.
13  *
14  */
15
16 #include <linux/kernel.h>
17 #include <linux/init.h>
18 #include <linux/debugfs.h>
19 #include <linux/device.h>
20 #include <linux/slab.h>
21 #include <linux/async.h>
22 #include <linux/err.h>
23 #include <linux/mutex.h>
24 #include <linux/suspend.h>
25 #include <linux/delay.h>
26 #include <linux/of.h>
27 #include <linux/regulator/of_regulator.h>
28 #include <linux/regulator/consumer.h>
29 #include <linux/regulator/driver.h>
30 #include <linux/regulator/machine.h>
31 #include <linux/module.h>
32
33 #define CREATE_TRACE_POINTS
34 #include <trace/events/regulator.h>
35
36 #include "dummy.h"
37
38 #define rdev_crit(rdev, fmt, ...)                                       \
39         pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
40 #define rdev_err(rdev, fmt, ...)                                        \
41         pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
42 #define rdev_warn(rdev, fmt, ...)                                       \
43         pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
44 #define rdev_info(rdev, fmt, ...)                                       \
45         pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
46 #define rdev_dbg(rdev, fmt, ...)                                        \
47         pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
48
49 static DEFINE_MUTEX(regulator_list_mutex);
50 static LIST_HEAD(regulator_list);
51 static LIST_HEAD(regulator_map_list);
52 static bool has_full_constraints;
53 static bool board_wants_dummy_regulator;
54
55 #ifdef CONFIG_DEBUG_FS
56 static struct dentry *debugfs_root;
57 #endif
58
59 /*
60  * struct regulator_map
61  *
62  * Used to provide symbolic supply names to devices.
63  */
64 struct regulator_map {
65         struct list_head list;
66         const char *dev_name;   /* The dev_name() for the consumer */
67         const char *supply;
68         struct regulator_dev *regulator;
69 };
70
71 /*
72  * struct regulator
73  *
74  * One for each consumer device.
75  */
76 struct regulator {
77         struct device *dev;
78         struct list_head list;
79         int uA_load;
80         int min_uV;
81         int max_uV;
82         char *supply_name;
83         struct device_attribute dev_attr;
84         struct regulator_dev *rdev;
85 #ifdef CONFIG_DEBUG_FS
86         struct dentry *debugfs;
87 #endif
88 };
89
90 static int _regulator_is_enabled(struct regulator_dev *rdev);
91 static int _regulator_disable(struct regulator_dev *rdev);
92 static int _regulator_get_voltage(struct regulator_dev *rdev);
93 static int _regulator_get_current_limit(struct regulator_dev *rdev);
94 static unsigned int _regulator_get_mode(struct regulator_dev *rdev);
95 static void _notifier_call_chain(struct regulator_dev *rdev,
96                                   unsigned long event, void *data);
97 static int _regulator_do_set_voltage(struct regulator_dev *rdev,
98                                      int min_uV, int max_uV);
99 static struct regulator *create_regulator(struct regulator_dev *rdev,
100                                           struct device *dev,
101                                           const char *supply_name);
102
103 static const char *rdev_get_name(struct regulator_dev *rdev)
104 {
105         if (rdev->constraints && rdev->constraints->name)
106                 return rdev->constraints->name;
107         else if (rdev->desc->name)
108                 return rdev->desc->name;
109         else
110                 return "";
111 }
112
113 /* gets the regulator for a given consumer device */
114 static struct regulator *get_device_regulator(struct device *dev)
115 {
116         struct regulator *regulator = NULL;
117         struct regulator_dev *rdev;
118
119         mutex_lock(&regulator_list_mutex);
120         list_for_each_entry(rdev, &regulator_list, list) {
121                 mutex_lock(&rdev->mutex);
122                 list_for_each_entry(regulator, &rdev->consumer_list, list) {
123                         if (regulator->dev == dev) {
124                                 mutex_unlock(&rdev->mutex);
125                                 mutex_unlock(&regulator_list_mutex);
126                                 return regulator;
127                         }
128                 }
129                 mutex_unlock(&rdev->mutex);
130         }
131         mutex_unlock(&regulator_list_mutex);
132         return NULL;
133 }
134
135 /**
136  * of_get_regulator - get a regulator device node based on supply name
137  * @dev: Device pointer for the consumer (of regulator) device
138  * @supply: regulator supply name
139  *
140  * Extract the regulator device node corresponding to the supply name.
141  * retruns the device node corresponding to the regulator if found, else
142  * returns NULL.
143  */
144 static struct device_node *of_get_regulator(struct device *dev, const char *supply)
145 {
146         struct device_node *regnode = NULL;
147         char prop_name[32]; /* 32 is max size of property name */
148
149         dev_dbg(dev, "Looking up %s-supply from device tree\n", supply);
150
151         snprintf(prop_name, 32, "%s-supply", supply);
152         regnode = of_parse_phandle(dev->of_node, prop_name, 0);
153
154         if (!regnode) {
155                 dev_warn(dev, "%s property in node %s references invalid phandle",
156                                 prop_name, dev->of_node->full_name);
157                 return NULL;
158         }
159         return regnode;
160 }
161
162 /* Platform voltage constraint check */
163 static int regulator_check_voltage(struct regulator_dev *rdev,
164                                    int *min_uV, int *max_uV)
165 {
166         BUG_ON(*min_uV > *max_uV);
167
168         if (!rdev->constraints) {
169                 rdev_err(rdev, "no constraints\n");
170                 return -ENODEV;
171         }
172         if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) {
173                 rdev_err(rdev, "operation not allowed\n");
174                 return -EPERM;
175         }
176
177         if (*max_uV > rdev->constraints->max_uV)
178                 *max_uV = rdev->constraints->max_uV;
179         if (*min_uV < rdev->constraints->min_uV)
180                 *min_uV = rdev->constraints->min_uV;
181
182         if (*min_uV > *max_uV) {
183                 rdev_err(rdev, "unsupportable voltage range: %d-%duV\n",
184                          *min_uV, *max_uV);
185                 return -EINVAL;
186         }
187
188         return 0;
189 }
190
191 /* Make sure we select a voltage that suits the needs of all
192  * regulator consumers
193  */
194 static int regulator_check_consumers(struct regulator_dev *rdev,
195                                      int *min_uV, int *max_uV)
196 {
197         struct regulator *regulator;
198
199         list_for_each_entry(regulator, &rdev->consumer_list, list) {
200                 /*
201                  * Assume consumers that didn't say anything are OK
202                  * with anything in the constraint range.
203                  */
204                 if (!regulator->min_uV && !regulator->max_uV)
205                         continue;
206
207                 if (*max_uV > regulator->max_uV)
208                         *max_uV = regulator->max_uV;
209                 if (*min_uV < regulator->min_uV)
210                         *min_uV = regulator->min_uV;
211         }
212
213         if (*min_uV > *max_uV)
214                 return -EINVAL;
215
216         return 0;
217 }
218
219 /* current constraint check */
220 static int regulator_check_current_limit(struct regulator_dev *rdev,
221                                         int *min_uA, int *max_uA)
222 {
223         BUG_ON(*min_uA > *max_uA);
224
225         if (!rdev->constraints) {
226                 rdev_err(rdev, "no constraints\n");
227                 return -ENODEV;
228         }
229         if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) {
230                 rdev_err(rdev, "operation not allowed\n");
231                 return -EPERM;
232         }
233
234         if (*max_uA > rdev->constraints->max_uA)
235                 *max_uA = rdev->constraints->max_uA;
236         if (*min_uA < rdev->constraints->min_uA)
237                 *min_uA = rdev->constraints->min_uA;
238
239         if (*min_uA > *max_uA) {
240                 rdev_err(rdev, "unsupportable current range: %d-%duA\n",
241                          *min_uA, *max_uA);
242                 return -EINVAL;
243         }
244
245         return 0;
246 }
247
248 /* operating mode constraint check */
249 static int regulator_mode_constrain(struct regulator_dev *rdev, int *mode)
250 {
251         switch (*mode) {
252         case REGULATOR_MODE_FAST:
253         case REGULATOR_MODE_NORMAL:
254         case REGULATOR_MODE_IDLE:
255         case REGULATOR_MODE_STANDBY:
256                 break;
257         default:
258                 rdev_err(rdev, "invalid mode %x specified\n", *mode);
259                 return -EINVAL;
260         }
261
262         if (!rdev->constraints) {
263                 rdev_err(rdev, "no constraints\n");
264                 return -ENODEV;
265         }
266         if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) {
267                 rdev_err(rdev, "operation not allowed\n");
268                 return -EPERM;
269         }
270
271         /* The modes are bitmasks, the most power hungry modes having
272          * the lowest values. If the requested mode isn't supported
273          * try higher modes. */
274         while (*mode) {
275                 if (rdev->constraints->valid_modes_mask & *mode)
276                         return 0;
277                 *mode /= 2;
278         }
279
280         return -EINVAL;
281 }
282
283 /* dynamic regulator mode switching constraint check */
284 static int regulator_check_drms(struct regulator_dev *rdev)
285 {
286         if (!rdev->constraints) {
287                 rdev_err(rdev, "no constraints\n");
288                 return -ENODEV;
289         }
290         if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) {
291                 rdev_err(rdev, "operation not allowed\n");
292                 return -EPERM;
293         }
294         return 0;
295 }
296
297 static ssize_t device_requested_uA_show(struct device *dev,
298                              struct device_attribute *attr, char *buf)
299 {
300         struct regulator *regulator;
301
302         regulator = get_device_regulator(dev);
303         if (regulator == NULL)
304                 return 0;
305
306         return sprintf(buf, "%d\n", regulator->uA_load);
307 }
308
309 static ssize_t regulator_uV_show(struct device *dev,
310                                 struct device_attribute *attr, char *buf)
311 {
312         struct regulator_dev *rdev = dev_get_drvdata(dev);
313         ssize_t ret;
314
315         mutex_lock(&rdev->mutex);
316         ret = sprintf(buf, "%d\n", _regulator_get_voltage(rdev));
317         mutex_unlock(&rdev->mutex);
318
319         return ret;
320 }
321 static DEVICE_ATTR(microvolts, 0444, regulator_uV_show, NULL);
322
323 static ssize_t regulator_uA_show(struct device *dev,
324                                 struct device_attribute *attr, char *buf)
325 {
326         struct regulator_dev *rdev = dev_get_drvdata(dev);
327
328         return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev));
329 }
330 static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL);
331
332 static ssize_t regulator_name_show(struct device *dev,
333                              struct device_attribute *attr, char *buf)
334 {
335         struct regulator_dev *rdev = dev_get_drvdata(dev);
336
337         return sprintf(buf, "%s\n", rdev_get_name(rdev));
338 }
339
340 static ssize_t regulator_print_opmode(char *buf, int mode)
341 {
342         switch (mode) {
343         case REGULATOR_MODE_FAST:
344                 return sprintf(buf, "fast\n");
345         case REGULATOR_MODE_NORMAL:
346                 return sprintf(buf, "normal\n");
347         case REGULATOR_MODE_IDLE:
348                 return sprintf(buf, "idle\n");
349         case REGULATOR_MODE_STANDBY:
350                 return sprintf(buf, "standby\n");
351         }
352         return sprintf(buf, "unknown\n");
353 }
354
355 static ssize_t regulator_opmode_show(struct device *dev,
356                                     struct device_attribute *attr, char *buf)
357 {
358         struct regulator_dev *rdev = dev_get_drvdata(dev);
359
360         return regulator_print_opmode(buf, _regulator_get_mode(rdev));
361 }
362 static DEVICE_ATTR(opmode, 0444, regulator_opmode_show, NULL);
363
364 static ssize_t regulator_print_state(char *buf, int state)
365 {
366         if (state > 0)
367                 return sprintf(buf, "enabled\n");
368         else if (state == 0)
369                 return sprintf(buf, "disabled\n");
370         else
371                 return sprintf(buf, "unknown\n");
372 }
373
374 static ssize_t regulator_state_show(struct device *dev,
375                                    struct device_attribute *attr, char *buf)
376 {
377         struct regulator_dev *rdev = dev_get_drvdata(dev);
378         ssize_t ret;
379
380         mutex_lock(&rdev->mutex);
381         ret = regulator_print_state(buf, _regulator_is_enabled(rdev));
382         mutex_unlock(&rdev->mutex);
383
384         return ret;
385 }
386 static DEVICE_ATTR(state, 0444, regulator_state_show, NULL);
387
388 static ssize_t regulator_status_show(struct device *dev,
389                                    struct device_attribute *attr, char *buf)
390 {
391         struct regulator_dev *rdev = dev_get_drvdata(dev);
392         int status;
393         char *label;
394
395         status = rdev->desc->ops->get_status(rdev);
396         if (status < 0)
397                 return status;
398
399         switch (status) {
400         case REGULATOR_STATUS_OFF:
401                 label = "off";
402                 break;
403         case REGULATOR_STATUS_ON:
404                 label = "on";
405                 break;
406         case REGULATOR_STATUS_ERROR:
407                 label = "error";
408                 break;
409         case REGULATOR_STATUS_FAST:
410                 label = "fast";
411                 break;
412         case REGULATOR_STATUS_NORMAL:
413                 label = "normal";
414                 break;
415         case REGULATOR_STATUS_IDLE:
416                 label = "idle";
417                 break;
418         case REGULATOR_STATUS_STANDBY:
419                 label = "standby";
420                 break;
421         default:
422                 return -ERANGE;
423         }
424
425         return sprintf(buf, "%s\n", label);
426 }
427 static DEVICE_ATTR(status, 0444, regulator_status_show, NULL);
428
429 static ssize_t regulator_min_uA_show(struct device *dev,
430                                     struct device_attribute *attr, char *buf)
431 {
432         struct regulator_dev *rdev = dev_get_drvdata(dev);
433
434         if (!rdev->constraints)
435                 return sprintf(buf, "constraint not defined\n");
436
437         return sprintf(buf, "%d\n", rdev->constraints->min_uA);
438 }
439 static DEVICE_ATTR(min_microamps, 0444, regulator_min_uA_show, NULL);
440
441 static ssize_t regulator_max_uA_show(struct device *dev,
442                                     struct device_attribute *attr, char *buf)
443 {
444         struct regulator_dev *rdev = dev_get_drvdata(dev);
445
446         if (!rdev->constraints)
447                 return sprintf(buf, "constraint not defined\n");
448
449         return sprintf(buf, "%d\n", rdev->constraints->max_uA);
450 }
451 static DEVICE_ATTR(max_microamps, 0444, regulator_max_uA_show, NULL);
452
453 static ssize_t regulator_min_uV_show(struct device *dev,
454                                     struct device_attribute *attr, char *buf)
455 {
456         struct regulator_dev *rdev = dev_get_drvdata(dev);
457
458         if (!rdev->constraints)
459                 return sprintf(buf, "constraint not defined\n");
460
461         return sprintf(buf, "%d\n", rdev->constraints->min_uV);
462 }
463 static DEVICE_ATTR(min_microvolts, 0444, regulator_min_uV_show, NULL);
464
465 static ssize_t regulator_max_uV_show(struct device *dev,
466                                     struct device_attribute *attr, char *buf)
467 {
468         struct regulator_dev *rdev = dev_get_drvdata(dev);
469
470         if (!rdev->constraints)
471                 return sprintf(buf, "constraint not defined\n");
472
473         return sprintf(buf, "%d\n", rdev->constraints->max_uV);
474 }
475 static DEVICE_ATTR(max_microvolts, 0444, regulator_max_uV_show, NULL);
476
477 static ssize_t regulator_total_uA_show(struct device *dev,
478                                       struct device_attribute *attr, char *buf)
479 {
480         struct regulator_dev *rdev = dev_get_drvdata(dev);
481         struct regulator *regulator;
482         int uA = 0;
483
484         mutex_lock(&rdev->mutex);
485         list_for_each_entry(regulator, &rdev->consumer_list, list)
486                 uA += regulator->uA_load;
487         mutex_unlock(&rdev->mutex);
488         return sprintf(buf, "%d\n", uA);
489 }
490 static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL);
491
492 static ssize_t regulator_num_users_show(struct device *dev,
493                                       struct device_attribute *attr, char *buf)
494 {
495         struct regulator_dev *rdev = dev_get_drvdata(dev);
496         return sprintf(buf, "%d\n", rdev->use_count);
497 }
498
499 static ssize_t regulator_type_show(struct device *dev,
500                                   struct device_attribute *attr, char *buf)
501 {
502         struct regulator_dev *rdev = dev_get_drvdata(dev);
503
504         switch (rdev->desc->type) {
505         case REGULATOR_VOLTAGE:
506                 return sprintf(buf, "voltage\n");
507         case REGULATOR_CURRENT:
508                 return sprintf(buf, "current\n");
509         }
510         return sprintf(buf, "unknown\n");
511 }
512
513 static ssize_t regulator_suspend_mem_uV_show(struct device *dev,
514                                 struct device_attribute *attr, char *buf)
515 {
516         struct regulator_dev *rdev = dev_get_drvdata(dev);
517
518         return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV);
519 }
520 static DEVICE_ATTR(suspend_mem_microvolts, 0444,
521                 regulator_suspend_mem_uV_show, NULL);
522
523 static ssize_t regulator_suspend_disk_uV_show(struct device *dev,
524                                 struct device_attribute *attr, char *buf)
525 {
526         struct regulator_dev *rdev = dev_get_drvdata(dev);
527
528         return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV);
529 }
530 static DEVICE_ATTR(suspend_disk_microvolts, 0444,
531                 regulator_suspend_disk_uV_show, NULL);
532
533 static ssize_t regulator_suspend_standby_uV_show(struct device *dev,
534                                 struct device_attribute *attr, char *buf)
535 {
536         struct regulator_dev *rdev = dev_get_drvdata(dev);
537
538         return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV);
539 }
540 static DEVICE_ATTR(suspend_standby_microvolts, 0444,
541                 regulator_suspend_standby_uV_show, NULL);
542
543 static ssize_t regulator_suspend_mem_mode_show(struct device *dev,
544                                 struct device_attribute *attr, char *buf)
545 {
546         struct regulator_dev *rdev = dev_get_drvdata(dev);
547
548         return regulator_print_opmode(buf,
549                 rdev->constraints->state_mem.mode);
550 }
551 static DEVICE_ATTR(suspend_mem_mode, 0444,
552                 regulator_suspend_mem_mode_show, NULL);
553
554 static ssize_t regulator_suspend_disk_mode_show(struct device *dev,
555                                 struct device_attribute *attr, char *buf)
556 {
557         struct regulator_dev *rdev = dev_get_drvdata(dev);
558
559         return regulator_print_opmode(buf,
560                 rdev->constraints->state_disk.mode);
561 }
562 static DEVICE_ATTR(suspend_disk_mode, 0444,
563                 regulator_suspend_disk_mode_show, NULL);
564
565 static ssize_t regulator_suspend_standby_mode_show(struct device *dev,
566                                 struct device_attribute *attr, char *buf)
567 {
568         struct regulator_dev *rdev = dev_get_drvdata(dev);
569
570         return regulator_print_opmode(buf,
571                 rdev->constraints->state_standby.mode);
572 }
573 static DEVICE_ATTR(suspend_standby_mode, 0444,
574                 regulator_suspend_standby_mode_show, NULL);
575
576 static ssize_t regulator_suspend_mem_state_show(struct device *dev,
577                                    struct device_attribute *attr, char *buf)
578 {
579         struct regulator_dev *rdev = dev_get_drvdata(dev);
580
581         return regulator_print_state(buf,
582                         rdev->constraints->state_mem.enabled);
583 }
584 static DEVICE_ATTR(suspend_mem_state, 0444,
585                 regulator_suspend_mem_state_show, NULL);
586
587 static ssize_t regulator_suspend_disk_state_show(struct device *dev,
588                                    struct device_attribute *attr, char *buf)
589 {
590         struct regulator_dev *rdev = dev_get_drvdata(dev);
591
592         return regulator_print_state(buf,
593                         rdev->constraints->state_disk.enabled);
594 }
595 static DEVICE_ATTR(suspend_disk_state, 0444,
596                 regulator_suspend_disk_state_show, NULL);
597
598 static ssize_t regulator_suspend_standby_state_show(struct device *dev,
599                                    struct device_attribute *attr, char *buf)
600 {
601         struct regulator_dev *rdev = dev_get_drvdata(dev);
602
603         return regulator_print_state(buf,
604                         rdev->constraints->state_standby.enabled);
605 }
606 static DEVICE_ATTR(suspend_standby_state, 0444,
607                 regulator_suspend_standby_state_show, NULL);
608
609
610 /*
611  * These are the only attributes are present for all regulators.
612  * Other attributes are a function of regulator functionality.
613  */
614 static struct device_attribute regulator_dev_attrs[] = {
615         __ATTR(name, 0444, regulator_name_show, NULL),
616         __ATTR(num_users, 0444, regulator_num_users_show, NULL),
617         __ATTR(type, 0444, regulator_type_show, NULL),
618         __ATTR_NULL,
619 };
620
621 static void regulator_dev_release(struct device *dev)
622 {
623         struct regulator_dev *rdev = dev_get_drvdata(dev);
624         kfree(rdev);
625 }
626
627 static struct class regulator_class = {
628         .name = "regulator",
629         .dev_release = regulator_dev_release,
630         .dev_attrs = regulator_dev_attrs,
631 };
632
633 /* Calculate the new optimum regulator operating mode based on the new total
634  * consumer load. All locks held by caller */
635 static void drms_uA_update(struct regulator_dev *rdev)
636 {
637         struct regulator *sibling;
638         int current_uA = 0, output_uV, input_uV, err;
639         unsigned int mode;
640
641         err = regulator_check_drms(rdev);
642         if (err < 0 || !rdev->desc->ops->get_optimum_mode ||
643             (!rdev->desc->ops->get_voltage &&
644              !rdev->desc->ops->get_voltage_sel) ||
645             !rdev->desc->ops->set_mode)
646                 return;
647
648         /* get output voltage */
649         output_uV = _regulator_get_voltage(rdev);
650         if (output_uV <= 0)
651                 return;
652
653         /* get input voltage */
654         input_uV = 0;
655         if (rdev->supply)
656                 input_uV = _regulator_get_voltage(rdev);
657         if (input_uV <= 0)
658                 input_uV = rdev->constraints->input_uV;
659         if (input_uV <= 0)
660                 return;
661
662         /* calc total requested load */
663         list_for_each_entry(sibling, &rdev->consumer_list, list)
664                 current_uA += sibling->uA_load;
665
666         /* now get the optimum mode for our new total regulator load */
667         mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV,
668                                                   output_uV, current_uA);
669
670         /* check the new mode is allowed */
671         err = regulator_mode_constrain(rdev, &mode);
672         if (err == 0)
673                 rdev->desc->ops->set_mode(rdev, mode);
674 }
675
676 static int suspend_set_state(struct regulator_dev *rdev,
677         struct regulator_state *rstate)
678 {
679         int ret = 0;
680         bool can_set_state;
681
682         can_set_state = rdev->desc->ops->set_suspend_enable &&
683                 rdev->desc->ops->set_suspend_disable;
684
685         /* If we have no suspend mode configration don't set anything;
686          * only warn if the driver actually makes the suspend mode
687          * configurable.
688          */
689         if (!rstate->enabled && !rstate->disabled) {
690                 if (can_set_state)
691                         rdev_warn(rdev, "No configuration\n");
692                 return 0;
693         }
694
695         if (rstate->enabled && rstate->disabled) {
696                 rdev_err(rdev, "invalid configuration\n");
697                 return -EINVAL;
698         }
699
700         if (!can_set_state) {
701                 rdev_err(rdev, "no way to set suspend state\n");
702                 return -EINVAL;
703         }
704
705         if (rstate->enabled)
706                 ret = rdev->desc->ops->set_suspend_enable(rdev);
707         else
708                 ret = rdev->desc->ops->set_suspend_disable(rdev);
709         if (ret < 0) {
710                 rdev_err(rdev, "failed to enabled/disable\n");
711                 return ret;
712         }
713
714         if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) {
715                 ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV);
716                 if (ret < 0) {
717                         rdev_err(rdev, "failed to set voltage\n");
718                         return ret;
719                 }
720         }
721
722         if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) {
723                 ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode);
724                 if (ret < 0) {
725                         rdev_err(rdev, "failed to set mode\n");
726                         return ret;
727                 }
728         }
729         return ret;
730 }
731
732 /* locks held by caller */
733 static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state)
734 {
735         if (!rdev->constraints)
736                 return -EINVAL;
737
738         switch (state) {
739         case PM_SUSPEND_STANDBY:
740                 return suspend_set_state(rdev,
741                         &rdev->constraints->state_standby);
742         case PM_SUSPEND_MEM:
743                 return suspend_set_state(rdev,
744                         &rdev->constraints->state_mem);
745         case PM_SUSPEND_MAX:
746                 return suspend_set_state(rdev,
747                         &rdev->constraints->state_disk);
748         default:
749                 return -EINVAL;
750         }
751 }
752
753 static void print_constraints(struct regulator_dev *rdev)
754 {
755         struct regulation_constraints *constraints = rdev->constraints;
756         char buf[80] = "";
757         int count = 0;
758         int ret;
759
760         if (constraints->min_uV && constraints->max_uV) {
761                 if (constraints->min_uV == constraints->max_uV)
762                         count += sprintf(buf + count, "%d mV ",
763                                          constraints->min_uV / 1000);
764                 else
765                         count += sprintf(buf + count, "%d <--> %d mV ",
766                                          constraints->min_uV / 1000,
767                                          constraints->max_uV / 1000);
768         }
769
770         if (!constraints->min_uV ||
771             constraints->min_uV != constraints->max_uV) {
772                 ret = _regulator_get_voltage(rdev);
773                 if (ret > 0)
774                         count += sprintf(buf + count, "at %d mV ", ret / 1000);
775         }
776
777         if (constraints->uV_offset)
778                 count += sprintf(buf, "%dmV offset ",
779                                  constraints->uV_offset / 1000);
780
781         if (constraints->min_uA && constraints->max_uA) {
782                 if (constraints->min_uA == constraints->max_uA)
783                         count += sprintf(buf + count, "%d mA ",
784                                          constraints->min_uA / 1000);
785                 else
786                         count += sprintf(buf + count, "%d <--> %d mA ",
787                                          constraints->min_uA / 1000,
788                                          constraints->max_uA / 1000);
789         }
790
791         if (!constraints->min_uA ||
792             constraints->min_uA != constraints->max_uA) {
793                 ret = _regulator_get_current_limit(rdev);
794                 if (ret > 0)
795                         count += sprintf(buf + count, "at %d mA ", ret / 1000);
796         }
797
798         if (constraints->valid_modes_mask & REGULATOR_MODE_FAST)
799                 count += sprintf(buf + count, "fast ");
800         if (constraints->valid_modes_mask & REGULATOR_MODE_NORMAL)
801                 count += sprintf(buf + count, "normal ");
802         if (constraints->valid_modes_mask & REGULATOR_MODE_IDLE)
803                 count += sprintf(buf + count, "idle ");
804         if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY)
805                 count += sprintf(buf + count, "standby");
806
807         rdev_info(rdev, "%s\n", buf);
808
809         if ((constraints->min_uV != constraints->max_uV) &&
810             !(constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE))
811                 rdev_warn(rdev,
812                           "Voltage range but no REGULATOR_CHANGE_VOLTAGE\n");
813 }
814
815 static int machine_constraints_voltage(struct regulator_dev *rdev,
816         struct regulation_constraints *constraints)
817 {
818         struct regulator_ops *ops = rdev->desc->ops;
819         int ret;
820
821         /* do we need to apply the constraint voltage */
822         if (rdev->constraints->apply_uV &&
823             rdev->constraints->min_uV == rdev->constraints->max_uV) {
824                 ret = _regulator_do_set_voltage(rdev,
825                                                 rdev->constraints->min_uV,
826                                                 rdev->constraints->max_uV);
827                 if (ret < 0) {
828                         rdev_err(rdev, "failed to apply %duV constraint\n",
829                                  rdev->constraints->min_uV);
830                         return ret;
831                 }
832         }
833
834         /* constrain machine-level voltage specs to fit
835          * the actual range supported by this regulator.
836          */
837         if (ops->list_voltage && rdev->desc->n_voltages) {
838                 int     count = rdev->desc->n_voltages;
839                 int     i;
840                 int     min_uV = INT_MAX;
841                 int     max_uV = INT_MIN;
842                 int     cmin = constraints->min_uV;
843                 int     cmax = constraints->max_uV;
844
845                 /* it's safe to autoconfigure fixed-voltage supplies
846                    and the constraints are used by list_voltage. */
847                 if (count == 1 && !cmin) {
848                         cmin = 1;
849                         cmax = INT_MAX;
850                         constraints->min_uV = cmin;
851                         constraints->max_uV = cmax;
852                 }
853
854                 /* voltage constraints are optional */
855                 if ((cmin == 0) && (cmax == 0))
856                         return 0;
857
858                 /* else require explicit machine-level constraints */
859                 if (cmin <= 0 || cmax <= 0 || cmax < cmin) {
860                         rdev_err(rdev, "invalid voltage constraints\n");
861                         return -EINVAL;
862                 }
863
864                 /* initial: [cmin..cmax] valid, [min_uV..max_uV] not */
865                 for (i = 0; i < count; i++) {
866                         int     value;
867
868                         value = ops->list_voltage(rdev, i);
869                         if (value <= 0)
870                                 continue;
871
872                         /* maybe adjust [min_uV..max_uV] */
873                         if (value >= cmin && value < min_uV)
874                                 min_uV = value;
875                         if (value <= cmax && value > max_uV)
876                                 max_uV = value;
877                 }
878
879                 /* final: [min_uV..max_uV] valid iff constraints valid */
880                 if (max_uV < min_uV) {
881                         rdev_err(rdev, "unsupportable voltage constraints\n");
882                         return -EINVAL;
883                 }
884
885                 /* use regulator's subset of machine constraints */
886                 if (constraints->min_uV < min_uV) {
887                         rdev_dbg(rdev, "override min_uV, %d -> %d\n",
888                                  constraints->min_uV, min_uV);
889                         constraints->min_uV = min_uV;
890                 }
891                 if (constraints->max_uV > max_uV) {
892                         rdev_dbg(rdev, "override max_uV, %d -> %d\n",
893                                  constraints->max_uV, max_uV);
894                         constraints->max_uV = max_uV;
895                 }
896         }
897
898         return 0;
899 }
900
901 /**
902  * set_machine_constraints - sets regulator constraints
903  * @rdev: regulator source
904  * @constraints: constraints to apply
905  *
906  * Allows platform initialisation code to define and constrain
907  * regulator circuits e.g. valid voltage/current ranges, etc.  NOTE:
908  * Constraints *must* be set by platform code in order for some
909  * regulator operations to proceed i.e. set_voltage, set_current_limit,
910  * set_mode.
911  */
912 static int set_machine_constraints(struct regulator_dev *rdev,
913         const struct regulation_constraints *constraints)
914 {
915         int ret = 0;
916         struct regulator_ops *ops = rdev->desc->ops;
917
918         if (constraints)
919                 rdev->constraints = kmemdup(constraints, sizeof(*constraints),
920                                             GFP_KERNEL);
921         else
922                 rdev->constraints = kzalloc(sizeof(*constraints),
923                                             GFP_KERNEL);
924         if (!rdev->constraints)
925                 return -ENOMEM;
926
927         ret = machine_constraints_voltage(rdev, rdev->constraints);
928         if (ret != 0)
929                 goto out;
930
931         /* do we need to setup our suspend state */
932         if (rdev->constraints->initial_state) {
933                 ret = suspend_prepare(rdev, rdev->constraints->initial_state);
934                 if (ret < 0) {
935                         rdev_err(rdev, "failed to set suspend state\n");
936                         goto out;
937                 }
938         }
939
940         if (rdev->constraints->initial_mode) {
941                 if (!ops->set_mode) {
942                         rdev_err(rdev, "no set_mode operation\n");
943                         ret = -EINVAL;
944                         goto out;
945                 }
946
947                 ret = ops->set_mode(rdev, rdev->constraints->initial_mode);
948                 if (ret < 0) {
949                         rdev_err(rdev, "failed to set initial mode: %d\n", ret);
950                         goto out;
951                 }
952         }
953
954         /* If the constraints say the regulator should be on at this point
955          * and we have control then make sure it is enabled.
956          */
957         if ((rdev->constraints->always_on || rdev->constraints->boot_on) &&
958             ops->enable) {
959                 ret = ops->enable(rdev);
960                 if (ret < 0) {
961                         rdev_err(rdev, "failed to enable\n");
962                         goto out;
963                 }
964         }
965
966         print_constraints(rdev);
967         return 0;
968 out:
969         kfree(rdev->constraints);
970         rdev->constraints = NULL;
971         return ret;
972 }
973
974 /**
975  * set_supply - set regulator supply regulator
976  * @rdev: regulator name
977  * @supply_rdev: supply regulator name
978  *
979  * Called by platform initialisation code to set the supply regulator for this
980  * regulator. This ensures that a regulators supply will also be enabled by the
981  * core if it's child is enabled.
982  */
983 static int set_supply(struct regulator_dev *rdev,
984                       struct regulator_dev *supply_rdev)
985 {
986         int err;
987
988         rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev));
989
990         rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY");
991         if (rdev->supply == NULL) {
992                 err = -ENOMEM;
993                 return err;
994         }
995
996         return 0;
997 }
998
999 /**
1000  * set_consumer_device_supply - Bind a regulator to a symbolic supply
1001  * @rdev:         regulator source
1002  * @consumer_dev: device the supply applies to
1003  * @consumer_dev_name: dev_name() string for device supply applies to
1004  * @supply:       symbolic name for supply
1005  *
1006  * Allows platform initialisation code to map physical regulator
1007  * sources to symbolic names for supplies for use by devices.  Devices
1008  * should use these symbolic names to request regulators, avoiding the
1009  * need to provide board-specific regulator names as platform data.
1010  *
1011  * Only one of consumer_dev and consumer_dev_name may be specified.
1012  */
1013 static int set_consumer_device_supply(struct regulator_dev *rdev,
1014         struct device *consumer_dev, const char *consumer_dev_name,
1015         const char *supply)
1016 {
1017         struct regulator_map *node;
1018         int has_dev;
1019
1020         if (consumer_dev && consumer_dev_name)
1021                 return -EINVAL;
1022
1023         if (!consumer_dev_name && consumer_dev)
1024                 consumer_dev_name = dev_name(consumer_dev);
1025
1026         if (supply == NULL)
1027                 return -EINVAL;
1028
1029         if (consumer_dev_name != NULL)
1030                 has_dev = 1;
1031         else
1032                 has_dev = 0;
1033
1034         list_for_each_entry(node, &regulator_map_list, list) {
1035                 if (node->dev_name && consumer_dev_name) {
1036                         if (strcmp(node->dev_name, consumer_dev_name) != 0)
1037                                 continue;
1038                 } else if (node->dev_name || consumer_dev_name) {
1039                         continue;
1040                 }
1041
1042                 if (strcmp(node->supply, supply) != 0)
1043                         continue;
1044
1045                 dev_dbg(consumer_dev, "%s/%s is '%s' supply; fail %s/%s\n",
1046                         dev_name(&node->regulator->dev),
1047                         node->regulator->desc->name,
1048                         supply,
1049                         dev_name(&rdev->dev), rdev_get_name(rdev));
1050                 return -EBUSY;
1051         }
1052
1053         node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL);
1054         if (node == NULL)
1055                 return -ENOMEM;
1056
1057         node->regulator = rdev;
1058         node->supply = supply;
1059
1060         if (has_dev) {
1061                 node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL);
1062                 if (node->dev_name == NULL) {
1063                         kfree(node);
1064                         return -ENOMEM;
1065                 }
1066         }
1067
1068         list_add(&node->list, &regulator_map_list);
1069         return 0;
1070 }
1071
1072 static void unset_regulator_supplies(struct regulator_dev *rdev)
1073 {
1074         struct regulator_map *node, *n;
1075
1076         list_for_each_entry_safe(node, n, &regulator_map_list, list) {
1077                 if (rdev == node->regulator) {
1078                         list_del(&node->list);
1079                         kfree(node->dev_name);
1080                         kfree(node);
1081                 }
1082         }
1083 }
1084
1085 #define REG_STR_SIZE    64
1086
1087 static struct regulator *create_regulator(struct regulator_dev *rdev,
1088                                           struct device *dev,
1089                                           const char *supply_name)
1090 {
1091         struct regulator *regulator;
1092         char buf[REG_STR_SIZE];
1093         int err, size;
1094
1095         regulator = kzalloc(sizeof(*regulator), GFP_KERNEL);
1096         if (regulator == NULL)
1097                 return NULL;
1098
1099         mutex_lock(&rdev->mutex);
1100         regulator->rdev = rdev;
1101         list_add(&regulator->list, &rdev->consumer_list);
1102
1103         if (dev) {
1104                 /* create a 'requested_microamps_name' sysfs entry */
1105                 size = scnprintf(buf, REG_STR_SIZE,
1106                                  "microamps_requested_%s-%s",
1107                                  dev_name(dev), supply_name);
1108                 if (size >= REG_STR_SIZE)
1109                         goto overflow_err;
1110
1111                 regulator->dev = dev;
1112                 sysfs_attr_init(&regulator->dev_attr.attr);
1113                 regulator->dev_attr.attr.name = kstrdup(buf, GFP_KERNEL);
1114                 if (regulator->dev_attr.attr.name == NULL)
1115                         goto attr_name_err;
1116
1117                 regulator->dev_attr.attr.mode = 0444;
1118                 regulator->dev_attr.show = device_requested_uA_show;
1119                 err = device_create_file(dev, &regulator->dev_attr);
1120                 if (err < 0) {
1121                         rdev_warn(rdev, "could not add regulator_dev requested microamps sysfs entry\n");
1122                         goto attr_name_err;
1123                 }
1124
1125                 /* also add a link to the device sysfs entry */
1126                 size = scnprintf(buf, REG_STR_SIZE, "%s-%s",
1127                                  dev->kobj.name, supply_name);
1128                 if (size >= REG_STR_SIZE)
1129                         goto attr_err;
1130
1131                 regulator->supply_name = kstrdup(buf, GFP_KERNEL);
1132                 if (regulator->supply_name == NULL)
1133                         goto attr_err;
1134
1135                 err = sysfs_create_link(&rdev->dev.kobj, &dev->kobj,
1136                                         buf);
1137                 if (err) {
1138                         rdev_warn(rdev, "could not add device link %s err %d\n",
1139                                   dev->kobj.name, err);
1140                         goto link_name_err;
1141                 }
1142         } else {
1143                 regulator->supply_name = kstrdup(supply_name, GFP_KERNEL);
1144                 if (regulator->supply_name == NULL)
1145                         goto attr_err;
1146         }
1147
1148 #ifdef CONFIG_DEBUG_FS
1149         regulator->debugfs = debugfs_create_dir(regulator->supply_name,
1150                                                 rdev->debugfs);
1151         if (IS_ERR_OR_NULL(regulator->debugfs)) {
1152                 rdev_warn(rdev, "Failed to create debugfs directory\n");
1153                 regulator->debugfs = NULL;
1154         } else {
1155                 debugfs_create_u32("uA_load", 0444, regulator->debugfs,
1156                                    &regulator->uA_load);
1157                 debugfs_create_u32("min_uV", 0444, regulator->debugfs,
1158                                    &regulator->min_uV);
1159                 debugfs_create_u32("max_uV", 0444, regulator->debugfs,
1160                                    &regulator->max_uV);
1161         }
1162 #endif
1163
1164         mutex_unlock(&rdev->mutex);
1165         return regulator;
1166 link_name_err:
1167         kfree(regulator->supply_name);
1168 attr_err:
1169         device_remove_file(regulator->dev, &regulator->dev_attr);
1170 attr_name_err:
1171         kfree(regulator->dev_attr.attr.name);
1172 overflow_err:
1173         list_del(&regulator->list);
1174         kfree(regulator);
1175         mutex_unlock(&rdev->mutex);
1176         return NULL;
1177 }
1178
1179 static int _regulator_get_enable_time(struct regulator_dev *rdev)
1180 {
1181         if (!rdev->desc->ops->enable_time)
1182                 return 0;
1183         return rdev->desc->ops->enable_time(rdev);
1184 }
1185
1186 static struct regulator_dev *regulator_dev_lookup(struct device *dev,
1187                                                          const char *supply)
1188 {
1189         struct regulator_dev *r;
1190         struct device_node *node;
1191
1192         /* first do a dt based lookup */
1193         if (dev && dev->of_node) {
1194                 node = of_get_regulator(dev, supply);
1195                 if (node)
1196                         list_for_each_entry(r, &regulator_list, list)
1197                                 if (r->dev.parent &&
1198                                         node == r->dev.of_node)
1199                                         return r;
1200         }
1201
1202         /* if not found, try doing it non-dt way */
1203         list_for_each_entry(r, &regulator_list, list)
1204                 if (strcmp(rdev_get_name(r), supply) == 0)
1205                         return r;
1206
1207         return NULL;
1208 }
1209
1210 /* Internal regulator request function */
1211 static struct regulator *_regulator_get(struct device *dev, const char *id,
1212                                         int exclusive)
1213 {
1214         struct regulator_dev *rdev;
1215         struct regulator_map *map;
1216         struct regulator *regulator = ERR_PTR(-ENODEV);
1217         const char *devname = NULL;
1218         int ret;
1219
1220         if (id == NULL) {
1221                 pr_err("get() with no identifier\n");
1222                 return regulator;
1223         }
1224
1225         if (dev)
1226                 devname = dev_name(dev);
1227
1228         mutex_lock(&regulator_list_mutex);
1229
1230         rdev = regulator_dev_lookup(dev, id);
1231         if (rdev)
1232                 goto found;
1233
1234         list_for_each_entry(map, &regulator_map_list, list) {
1235                 /* If the mapping has a device set up it must match */
1236                 if (map->dev_name &&
1237                     (!devname || strcmp(map->dev_name, devname)))
1238                         continue;
1239
1240                 if (strcmp(map->supply, id) == 0) {
1241                         rdev = map->regulator;
1242                         goto found;
1243                 }
1244         }
1245
1246         if (board_wants_dummy_regulator) {
1247                 rdev = dummy_regulator_rdev;
1248                 goto found;
1249         }
1250
1251 #ifdef CONFIG_REGULATOR_DUMMY
1252         if (!devname)
1253                 devname = "deviceless";
1254
1255         /* If the board didn't flag that it was fully constrained then
1256          * substitute in a dummy regulator so consumers can continue.
1257          */
1258         if (!has_full_constraints) {
1259                 pr_warn("%s supply %s not found, using dummy regulator\n",
1260                         devname, id);
1261                 rdev = dummy_regulator_rdev;
1262                 goto found;
1263         }
1264 #endif
1265
1266         mutex_unlock(&regulator_list_mutex);
1267         return regulator;
1268
1269 found:
1270         if (rdev->exclusive) {
1271                 regulator = ERR_PTR(-EPERM);
1272                 goto out;
1273         }
1274
1275         if (exclusive && rdev->open_count) {
1276                 regulator = ERR_PTR(-EBUSY);
1277                 goto out;
1278         }
1279
1280         if (!try_module_get(rdev->owner))
1281                 goto out;
1282
1283         regulator = create_regulator(rdev, dev, id);
1284         if (regulator == NULL) {
1285                 regulator = ERR_PTR(-ENOMEM);
1286                 module_put(rdev->owner);
1287                 goto out;
1288         }
1289
1290         rdev->open_count++;
1291         if (exclusive) {
1292                 rdev->exclusive = 1;
1293
1294                 ret = _regulator_is_enabled(rdev);
1295                 if (ret > 0)
1296                         rdev->use_count = 1;
1297                 else
1298                         rdev->use_count = 0;
1299         }
1300
1301 out:
1302         mutex_unlock(&regulator_list_mutex);
1303
1304         return regulator;
1305 }
1306
1307 /**
1308  * regulator_get - lookup and obtain a reference to a regulator.
1309  * @dev: device for regulator "consumer"
1310  * @id: Supply name or regulator ID.
1311  *
1312  * Returns a struct regulator corresponding to the regulator producer,
1313  * or IS_ERR() condition containing errno.
1314  *
1315  * Use of supply names configured via regulator_set_device_supply() is
1316  * strongly encouraged.  It is recommended that the supply name used
1317  * should match the name used for the supply and/or the relevant
1318  * device pins in the datasheet.
1319  */
1320 struct regulator *regulator_get(struct device *dev, const char *id)
1321 {
1322         return _regulator_get(dev, id, 0);
1323 }
1324 EXPORT_SYMBOL_GPL(regulator_get);
1325
1326 /**
1327  * regulator_get_exclusive - obtain exclusive access to a regulator.
1328  * @dev: device for regulator "consumer"
1329  * @id: Supply name or regulator ID.
1330  *
1331  * Returns a struct regulator corresponding to the regulator producer,
1332  * or IS_ERR() condition containing errno.  Other consumers will be
1333  * unable to obtain this reference is held and the use count for the
1334  * regulator will be initialised to reflect the current state of the
1335  * regulator.
1336  *
1337  * This is intended for use by consumers which cannot tolerate shared
1338  * use of the regulator such as those which need to force the
1339  * regulator off for correct operation of the hardware they are
1340  * controlling.
1341  *
1342  * Use of supply names configured via regulator_set_device_supply() is
1343  * strongly encouraged.  It is recommended that the supply name used
1344  * should match the name used for the supply and/or the relevant
1345  * device pins in the datasheet.
1346  */
1347 struct regulator *regulator_get_exclusive(struct device *dev, const char *id)
1348 {
1349         return _regulator_get(dev, id, 1);
1350 }
1351 EXPORT_SYMBOL_GPL(regulator_get_exclusive);
1352
1353 /**
1354  * regulator_put - "free" the regulator source
1355  * @regulator: regulator source
1356  *
1357  * Note: drivers must ensure that all regulator_enable calls made on this
1358  * regulator source are balanced by regulator_disable calls prior to calling
1359  * this function.
1360  */
1361 void regulator_put(struct regulator *regulator)
1362 {
1363         struct regulator_dev *rdev;
1364
1365         if (regulator == NULL || IS_ERR(regulator))
1366                 return;
1367
1368         mutex_lock(&regulator_list_mutex);
1369         rdev = regulator->rdev;
1370
1371 #ifdef CONFIG_DEBUG_FS
1372         debugfs_remove_recursive(regulator->debugfs);
1373 #endif
1374
1375         /* remove any sysfs entries */
1376         if (regulator->dev) {
1377                 sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name);
1378                 device_remove_file(regulator->dev, &regulator->dev_attr);
1379                 kfree(regulator->dev_attr.attr.name);
1380         }
1381         kfree(regulator->supply_name);
1382         list_del(&regulator->list);
1383         kfree(regulator);
1384
1385         rdev->open_count--;
1386         rdev->exclusive = 0;
1387
1388         module_put(rdev->owner);
1389         mutex_unlock(&regulator_list_mutex);
1390 }
1391 EXPORT_SYMBOL_GPL(regulator_put);
1392
1393 static int _regulator_can_change_status(struct regulator_dev *rdev)
1394 {
1395         if (!rdev->constraints)
1396                 return 0;
1397
1398         if (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_STATUS)
1399                 return 1;
1400         else
1401                 return 0;
1402 }
1403
1404 /* locks held by regulator_enable() */
1405 static int _regulator_enable(struct regulator_dev *rdev)
1406 {
1407         int ret, delay;
1408
1409         /* check voltage and requested load before enabling */
1410         if (rdev->constraints &&
1411             (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS))
1412                 drms_uA_update(rdev);
1413
1414         if (rdev->use_count == 0) {
1415                 /* The regulator may on if it's not switchable or left on */
1416                 ret = _regulator_is_enabled(rdev);
1417                 if (ret == -EINVAL || ret == 0) {
1418                         if (!_regulator_can_change_status(rdev))
1419                                 return -EPERM;
1420
1421                         if (!rdev->desc->ops->enable)
1422                                 return -EINVAL;
1423
1424                         /* Query before enabling in case configuration
1425                          * dependent.  */
1426                         ret = _regulator_get_enable_time(rdev);
1427                         if (ret >= 0) {
1428                                 delay = ret;
1429                         } else {
1430                                 rdev_warn(rdev, "enable_time() failed: %d\n",
1431                                            ret);
1432                                 delay = 0;
1433                         }
1434
1435                         trace_regulator_enable(rdev_get_name(rdev));
1436
1437                         /* Allow the regulator to ramp; it would be useful
1438                          * to extend this for bulk operations so that the
1439                          * regulators can ramp together.  */
1440                         ret = rdev->desc->ops->enable(rdev);
1441                         if (ret < 0)
1442                                 return ret;
1443
1444                         trace_regulator_enable_delay(rdev_get_name(rdev));
1445
1446                         if (delay >= 1000) {
1447                                 mdelay(delay / 1000);
1448                                 udelay(delay % 1000);
1449                         } else if (delay) {
1450                                 udelay(delay);
1451                         }
1452
1453                         trace_regulator_enable_complete(rdev_get_name(rdev));
1454
1455                 } else if (ret < 0) {
1456                         rdev_err(rdev, "is_enabled() failed: %d\n", ret);
1457                         return ret;
1458                 }
1459                 /* Fallthrough on positive return values - already enabled */
1460         }
1461
1462         rdev->use_count++;
1463
1464         return 0;
1465 }
1466
1467 /**
1468  * regulator_enable - enable regulator output
1469  * @regulator: regulator source
1470  *
1471  * Request that the regulator be enabled with the regulator output at
1472  * the predefined voltage or current value.  Calls to regulator_enable()
1473  * must be balanced with calls to regulator_disable().
1474  *
1475  * NOTE: the output value can be set by other drivers, boot loader or may be
1476  * hardwired in the regulator.
1477  */
1478 int regulator_enable(struct regulator *regulator)
1479 {
1480         struct regulator_dev *rdev = regulator->rdev;
1481         int ret = 0;
1482
1483         if (rdev->supply) {
1484                 ret = regulator_enable(rdev->supply);
1485                 if (ret != 0)
1486                         return ret;
1487         }
1488
1489         mutex_lock(&rdev->mutex);
1490         ret = _regulator_enable(rdev);
1491         mutex_unlock(&rdev->mutex);
1492
1493         if (ret != 0 && rdev->supply)
1494                 regulator_disable(rdev->supply);
1495
1496         return ret;
1497 }
1498 EXPORT_SYMBOL_GPL(regulator_enable);
1499
1500 /* locks held by regulator_disable() */
1501 static int _regulator_disable(struct regulator_dev *rdev)
1502 {
1503         int ret = 0;
1504
1505         if (WARN(rdev->use_count <= 0,
1506                  "unbalanced disables for %s\n", rdev_get_name(rdev)))
1507                 return -EIO;
1508
1509         /* are we the last user and permitted to disable ? */
1510         if (rdev->use_count == 1 &&
1511             (rdev->constraints && !rdev->constraints->always_on)) {
1512
1513                 /* we are last user */
1514                 if (_regulator_can_change_status(rdev) &&
1515                     rdev->desc->ops->disable) {
1516                         trace_regulator_disable(rdev_get_name(rdev));
1517
1518                         ret = rdev->desc->ops->disable(rdev);
1519                         if (ret < 0) {
1520                                 rdev_err(rdev, "failed to disable\n");
1521                                 return ret;
1522                         }
1523
1524                         trace_regulator_disable_complete(rdev_get_name(rdev));
1525
1526                         _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE,
1527                                              NULL);
1528                 }
1529
1530                 rdev->use_count = 0;
1531         } else if (rdev->use_count > 1) {
1532
1533                 if (rdev->constraints &&
1534                         (rdev->constraints->valid_ops_mask &
1535                         REGULATOR_CHANGE_DRMS))
1536                         drms_uA_update(rdev);
1537
1538                 rdev->use_count--;
1539         }
1540
1541         return ret;
1542 }
1543
1544 /**
1545  * regulator_disable - disable regulator output
1546  * @regulator: regulator source
1547  *
1548  * Disable the regulator output voltage or current.  Calls to
1549  * regulator_enable() must be balanced with calls to
1550  * regulator_disable().
1551  *
1552  * NOTE: this will only disable the regulator output if no other consumer
1553  * devices have it enabled, the regulator device supports disabling and
1554  * machine constraints permit this operation.
1555  */
1556 int regulator_disable(struct regulator *regulator)
1557 {
1558         struct regulator_dev *rdev = regulator->rdev;
1559         int ret = 0;
1560
1561         mutex_lock(&rdev->mutex);
1562         ret = _regulator_disable(rdev);
1563         mutex_unlock(&rdev->mutex);
1564
1565         if (ret == 0 && rdev->supply)
1566                 regulator_disable(rdev->supply);
1567
1568         return ret;
1569 }
1570 EXPORT_SYMBOL_GPL(regulator_disable);
1571
1572 /* locks held by regulator_force_disable() */
1573 static int _regulator_force_disable(struct regulator_dev *rdev)
1574 {
1575         int ret = 0;
1576
1577         /* force disable */
1578         if (rdev->desc->ops->disable) {
1579                 /* ah well, who wants to live forever... */
1580                 ret = rdev->desc->ops->disable(rdev);
1581                 if (ret < 0) {
1582                         rdev_err(rdev, "failed to force disable\n");
1583                         return ret;
1584                 }
1585                 /* notify other consumers that power has been forced off */
1586                 _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE |
1587                         REGULATOR_EVENT_DISABLE, NULL);
1588         }
1589
1590         return ret;
1591 }
1592
1593 /**
1594  * regulator_force_disable - force disable regulator output
1595  * @regulator: regulator source
1596  *
1597  * Forcibly disable the regulator output voltage or current.
1598  * NOTE: this *will* disable the regulator output even if other consumer
1599  * devices have it enabled. This should be used for situations when device
1600  * damage will likely occur if the regulator is not disabled (e.g. over temp).
1601  */
1602 int regulator_force_disable(struct regulator *regulator)
1603 {
1604         struct regulator_dev *rdev = regulator->rdev;
1605         int ret;
1606
1607         mutex_lock(&rdev->mutex);
1608         regulator->uA_load = 0;
1609         ret = _regulator_force_disable(regulator->rdev);
1610         mutex_unlock(&rdev->mutex);
1611
1612         if (rdev->supply)
1613                 while (rdev->open_count--)
1614                         regulator_disable(rdev->supply);
1615
1616         return ret;
1617 }
1618 EXPORT_SYMBOL_GPL(regulator_force_disable);
1619
1620 static void regulator_disable_work(struct work_struct *work)
1621 {
1622         struct regulator_dev *rdev = container_of(work, struct regulator_dev,
1623                                                   disable_work.work);
1624         int count, i, ret;
1625
1626         mutex_lock(&rdev->mutex);
1627
1628         BUG_ON(!rdev->deferred_disables);
1629
1630         count = rdev->deferred_disables;
1631         rdev->deferred_disables = 0;
1632
1633         for (i = 0; i < count; i++) {
1634                 ret = _regulator_disable(rdev);
1635                 if (ret != 0)
1636                         rdev_err(rdev, "Deferred disable failed: %d\n", ret);
1637         }
1638
1639         mutex_unlock(&rdev->mutex);
1640
1641         if (rdev->supply) {
1642                 for (i = 0; i < count; i++) {
1643                         ret = regulator_disable(rdev->supply);
1644                         if (ret != 0) {
1645                                 rdev_err(rdev,
1646                                          "Supply disable failed: %d\n", ret);
1647                         }
1648                 }
1649         }
1650 }
1651
1652 /**
1653  * regulator_disable_deferred - disable regulator output with delay
1654  * @regulator: regulator source
1655  * @ms: miliseconds until the regulator is disabled
1656  *
1657  * Execute regulator_disable() on the regulator after a delay.  This
1658  * is intended for use with devices that require some time to quiesce.
1659  *
1660  * NOTE: this will only disable the regulator output if no other consumer
1661  * devices have it enabled, the regulator device supports disabling and
1662  * machine constraints permit this operation.
1663  */
1664 int regulator_disable_deferred(struct regulator *regulator, int ms)
1665 {
1666         struct regulator_dev *rdev = regulator->rdev;
1667         int ret;
1668
1669         mutex_lock(&rdev->mutex);
1670         rdev->deferred_disables++;
1671         mutex_unlock(&rdev->mutex);
1672
1673         ret = schedule_delayed_work(&rdev->disable_work,
1674                                     msecs_to_jiffies(ms));
1675         if (ret < 0)
1676                 return ret;
1677         else
1678                 return 0;
1679 }
1680 EXPORT_SYMBOL_GPL(regulator_disable_deferred);
1681
1682 static int _regulator_is_enabled(struct regulator_dev *rdev)
1683 {
1684         /* If we don't know then assume that the regulator is always on */
1685         if (!rdev->desc->ops->is_enabled)
1686                 return 1;
1687
1688         return rdev->desc->ops->is_enabled(rdev);
1689 }
1690
1691 /**
1692  * regulator_is_enabled - is the regulator output enabled
1693  * @regulator: regulator source
1694  *
1695  * Returns positive if the regulator driver backing the source/client
1696  * has requested that the device be enabled, zero if it hasn't, else a
1697  * negative errno code.
1698  *
1699  * Note that the device backing this regulator handle can have multiple
1700  * users, so it might be enabled even if regulator_enable() was never
1701  * called for this particular source.
1702  */
1703 int regulator_is_enabled(struct regulator *regulator)
1704 {
1705         int ret;
1706
1707         mutex_lock(&regulator->rdev->mutex);
1708         ret = _regulator_is_enabled(regulator->rdev);
1709         mutex_unlock(&regulator->rdev->mutex);
1710
1711         return ret;
1712 }
1713 EXPORT_SYMBOL_GPL(regulator_is_enabled);
1714
1715 /**
1716  * regulator_count_voltages - count regulator_list_voltage() selectors
1717  * @regulator: regulator source
1718  *
1719  * Returns number of selectors, or negative errno.  Selectors are
1720  * numbered starting at zero, and typically correspond to bitfields
1721  * in hardware registers.
1722  */
1723 int regulator_count_voltages(struct regulator *regulator)
1724 {
1725         struct regulator_dev    *rdev = regulator->rdev;
1726
1727         return rdev->desc->n_voltages ? : -EINVAL;
1728 }
1729 EXPORT_SYMBOL_GPL(regulator_count_voltages);
1730
1731 /**
1732  * regulator_list_voltage - enumerate supported voltages
1733  * @regulator: regulator source
1734  * @selector: identify voltage to list
1735  * Context: can sleep
1736  *
1737  * Returns a voltage that can be passed to @regulator_set_voltage(),
1738  * zero if this selector code can't be used on this system, or a
1739  * negative errno.
1740  */
1741 int regulator_list_voltage(struct regulator *regulator, unsigned selector)
1742 {
1743         struct regulator_dev    *rdev = regulator->rdev;
1744         struct regulator_ops    *ops = rdev->desc->ops;
1745         int                     ret;
1746
1747         if (!ops->list_voltage || selector >= rdev->desc->n_voltages)
1748                 return -EINVAL;
1749
1750         mutex_lock(&rdev->mutex);
1751         ret = ops->list_voltage(rdev, selector);
1752         mutex_unlock(&rdev->mutex);
1753
1754         if (ret > 0) {
1755                 if (ret < rdev->constraints->min_uV)
1756                         ret = 0;
1757                 else if (ret > rdev->constraints->max_uV)
1758                         ret = 0;
1759         }
1760
1761         return ret;
1762 }
1763 EXPORT_SYMBOL_GPL(regulator_list_voltage);
1764
1765 /**
1766  * regulator_is_supported_voltage - check if a voltage range can be supported
1767  *
1768  * @regulator: Regulator to check.
1769  * @min_uV: Minimum required voltage in uV.
1770  * @max_uV: Maximum required voltage in uV.
1771  *
1772  * Returns a boolean or a negative error code.
1773  */
1774 int regulator_is_supported_voltage(struct regulator *regulator,
1775                                    int min_uV, int max_uV)
1776 {
1777         int i, voltages, ret;
1778
1779         ret = regulator_count_voltages(regulator);
1780         if (ret < 0)
1781                 return ret;
1782         voltages = ret;
1783
1784         for (i = 0; i < voltages; i++) {
1785                 ret = regulator_list_voltage(regulator, i);
1786
1787                 if (ret >= min_uV && ret <= max_uV)
1788                         return 1;
1789         }
1790
1791         return 0;
1792 }
1793 EXPORT_SYMBOL_GPL(regulator_is_supported_voltage);
1794
1795 static int _regulator_do_set_voltage(struct regulator_dev *rdev,
1796                                      int min_uV, int max_uV)
1797 {
1798         int ret;
1799         int delay = 0;
1800         unsigned int selector;
1801
1802         trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV);
1803
1804         min_uV += rdev->constraints->uV_offset;
1805         max_uV += rdev->constraints->uV_offset;
1806
1807         if (rdev->desc->ops->set_voltage) {
1808                 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV,
1809                                                    &selector);
1810
1811                 if (rdev->desc->ops->list_voltage)
1812                         selector = rdev->desc->ops->list_voltage(rdev,
1813                                                                  selector);
1814                 else
1815                         selector = -1;
1816         } else if (rdev->desc->ops->set_voltage_sel) {
1817                 int best_val = INT_MAX;
1818                 int i;
1819
1820                 selector = 0;
1821
1822                 /* Find the smallest voltage that falls within the specified
1823                  * range.
1824                  */
1825                 for (i = 0; i < rdev->desc->n_voltages; i++) {
1826                         ret = rdev->desc->ops->list_voltage(rdev, i);
1827                         if (ret < 0)
1828                                 continue;
1829
1830                         if (ret < best_val && ret >= min_uV && ret <= max_uV) {
1831                                 best_val = ret;
1832                                 selector = i;
1833                         }
1834                 }
1835
1836                 /*
1837                  * If we can't obtain the old selector there is not enough
1838                  * info to call set_voltage_time_sel().
1839                  */
1840                 if (rdev->desc->ops->set_voltage_time_sel &&
1841                     rdev->desc->ops->get_voltage_sel) {
1842                         unsigned int old_selector = 0;
1843
1844                         ret = rdev->desc->ops->get_voltage_sel(rdev);
1845                         if (ret < 0)
1846                                 return ret;
1847                         old_selector = ret;
1848                         delay = rdev->desc->ops->set_voltage_time_sel(rdev,
1849                                                 old_selector, selector);
1850                 }
1851
1852                 if (best_val != INT_MAX) {
1853                         ret = rdev->desc->ops->set_voltage_sel(rdev, selector);
1854                         selector = best_val;
1855                 } else {
1856                         ret = -EINVAL;
1857                 }
1858         } else {
1859                 ret = -EINVAL;
1860         }
1861
1862         /* Insert any necessary delays */
1863         if (delay >= 1000) {
1864                 mdelay(delay / 1000);
1865                 udelay(delay % 1000);
1866         } else if (delay) {
1867                 udelay(delay);
1868         }
1869
1870         if (ret == 0)
1871                 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE,
1872                                      NULL);
1873
1874         trace_regulator_set_voltage_complete(rdev_get_name(rdev), selector);
1875
1876         return ret;
1877 }
1878
1879 /**
1880  * regulator_set_voltage - set regulator output voltage
1881  * @regulator: regulator source
1882  * @min_uV: Minimum required voltage in uV
1883  * @max_uV: Maximum acceptable voltage in uV
1884  *
1885  * Sets a voltage regulator to the desired output voltage. This can be set
1886  * during any regulator state. IOW, regulator can be disabled or enabled.
1887  *
1888  * If the regulator is enabled then the voltage will change to the new value
1889  * immediately otherwise if the regulator is disabled the regulator will
1890  * output at the new voltage when enabled.
1891  *
1892  * NOTE: If the regulator is shared between several devices then the lowest
1893  * request voltage that meets the system constraints will be used.
1894  * Regulator system constraints must be set for this regulator before
1895  * calling this function otherwise this call will fail.
1896  */
1897 int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV)
1898 {
1899         struct regulator_dev *rdev = regulator->rdev;
1900         int ret = 0;
1901
1902         mutex_lock(&rdev->mutex);
1903
1904         /* If we're setting the same range as last time the change
1905          * should be a noop (some cpufreq implementations use the same
1906          * voltage for multiple frequencies, for example).
1907          */
1908         if (regulator->min_uV == min_uV && regulator->max_uV == max_uV)
1909                 goto out;
1910
1911         /* sanity check */
1912         if (!rdev->desc->ops->set_voltage &&
1913             !rdev->desc->ops->set_voltage_sel) {
1914                 ret = -EINVAL;
1915                 goto out;
1916         }
1917
1918         /* constraints check */
1919         ret = regulator_check_voltage(rdev, &min_uV, &max_uV);
1920         if (ret < 0)
1921                 goto out;
1922         regulator->min_uV = min_uV;
1923         regulator->max_uV = max_uV;
1924
1925         ret = regulator_check_consumers(rdev, &min_uV, &max_uV);
1926         if (ret < 0)
1927                 goto out;
1928
1929         ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
1930
1931 out:
1932         mutex_unlock(&rdev->mutex);
1933         return ret;
1934 }
1935 EXPORT_SYMBOL_GPL(regulator_set_voltage);
1936
1937 /**
1938  * regulator_set_voltage_time - get raise/fall time
1939  * @regulator: regulator source
1940  * @old_uV: starting voltage in microvolts
1941  * @new_uV: target voltage in microvolts
1942  *
1943  * Provided with the starting and ending voltage, this function attempts to
1944  * calculate the time in microseconds required to rise or fall to this new
1945  * voltage.
1946  */
1947 int regulator_set_voltage_time(struct regulator *regulator,
1948                                int old_uV, int new_uV)
1949 {
1950         struct regulator_dev    *rdev = regulator->rdev;
1951         struct regulator_ops    *ops = rdev->desc->ops;
1952         int old_sel = -1;
1953         int new_sel = -1;
1954         int voltage;
1955         int i;
1956
1957         /* Currently requires operations to do this */
1958         if (!ops->list_voltage || !ops->set_voltage_time_sel
1959             || !rdev->desc->n_voltages)
1960                 return -EINVAL;
1961
1962         for (i = 0; i < rdev->desc->n_voltages; i++) {
1963                 /* We only look for exact voltage matches here */
1964                 voltage = regulator_list_voltage(regulator, i);
1965                 if (voltage < 0)
1966                         return -EINVAL;
1967                 if (voltage == 0)
1968                         continue;
1969                 if (voltage == old_uV)
1970                         old_sel = i;
1971                 if (voltage == new_uV)
1972                         new_sel = i;
1973         }
1974
1975         if (old_sel < 0 || new_sel < 0)
1976                 return -EINVAL;
1977
1978         return ops->set_voltage_time_sel(rdev, old_sel, new_sel);
1979 }
1980 EXPORT_SYMBOL_GPL(regulator_set_voltage_time);
1981
1982 /**
1983  * regulator_sync_voltage - re-apply last regulator output voltage
1984  * @regulator: regulator source
1985  *
1986  * Re-apply the last configured voltage.  This is intended to be used
1987  * where some external control source the consumer is cooperating with
1988  * has caused the configured voltage to change.
1989  */
1990 int regulator_sync_voltage(struct regulator *regulator)
1991 {
1992         struct regulator_dev *rdev = regulator->rdev;
1993         int ret, min_uV, max_uV;
1994
1995         mutex_lock(&rdev->mutex);
1996
1997         if (!rdev->desc->ops->set_voltage &&
1998             !rdev->desc->ops->set_voltage_sel) {
1999                 ret = -EINVAL;
2000                 goto out;
2001         }
2002
2003         /* This is only going to work if we've had a voltage configured. */
2004         if (!regulator->min_uV && !regulator->max_uV) {
2005                 ret = -EINVAL;
2006                 goto out;
2007         }
2008
2009         min_uV = regulator->min_uV;
2010         max_uV = regulator->max_uV;
2011
2012         /* This should be a paranoia check... */
2013         ret = regulator_check_voltage(rdev, &min_uV, &max_uV);
2014         if (ret < 0)
2015                 goto out;
2016
2017         ret = regulator_check_consumers(rdev, &min_uV, &max_uV);
2018         if (ret < 0)
2019                 goto out;
2020
2021         ret = _regulator_do_set_voltage(rdev, min_uV, max_uV);
2022
2023 out:
2024         mutex_unlock(&rdev->mutex);
2025         return ret;
2026 }
2027 EXPORT_SYMBOL_GPL(regulator_sync_voltage);
2028
2029 static int _regulator_get_voltage(struct regulator_dev *rdev)
2030 {
2031         int sel, ret;
2032
2033         if (rdev->desc->ops->get_voltage_sel) {
2034                 sel = rdev->desc->ops->get_voltage_sel(rdev);
2035                 if (sel < 0)
2036                         return sel;
2037                 ret = rdev->desc->ops->list_voltage(rdev, sel);
2038         } else if (rdev->desc->ops->get_voltage) {
2039                 ret = rdev->desc->ops->get_voltage(rdev);
2040         } else {
2041                 return -EINVAL;
2042         }
2043
2044         if (ret < 0)
2045                 return ret;
2046         return ret - rdev->constraints->uV_offset;
2047 }
2048
2049 /**
2050  * regulator_get_voltage - get regulator output voltage
2051  * @regulator: regulator source
2052  *
2053  * This returns the current regulator voltage in uV.
2054  *
2055  * NOTE: If the regulator is disabled it will return the voltage value. This
2056  * function should not be used to determine regulator state.
2057  */
2058 int regulator_get_voltage(struct regulator *regulator)
2059 {
2060         int ret;
2061
2062         mutex_lock(&regulator->rdev->mutex);
2063
2064         ret = _regulator_get_voltage(regulator->rdev);
2065
2066         mutex_unlock(&regulator->rdev->mutex);
2067
2068         return ret;
2069 }
2070 EXPORT_SYMBOL_GPL(regulator_get_voltage);
2071
2072 /**
2073  * regulator_set_current_limit - set regulator output current limit
2074  * @regulator: regulator source
2075  * @min_uA: Minimuum supported current in uA
2076  * @max_uA: Maximum supported current in uA
2077  *
2078  * Sets current sink to the desired output current. This can be set during
2079  * any regulator state. IOW, regulator can be disabled or enabled.
2080  *
2081  * If the regulator is enabled then the current will change to the new value
2082  * immediately otherwise if the regulator is disabled the regulator will
2083  * output at the new current when enabled.
2084  *
2085  * NOTE: Regulator system constraints must be set for this regulator before
2086  * calling this function otherwise this call will fail.
2087  */
2088 int regulator_set_current_limit(struct regulator *regulator,
2089                                int min_uA, int max_uA)
2090 {
2091         struct regulator_dev *rdev = regulator->rdev;
2092         int ret;
2093
2094         mutex_lock(&rdev->mutex);
2095
2096         /* sanity check */
2097         if (!rdev->desc->ops->set_current_limit) {
2098                 ret = -EINVAL;
2099                 goto out;
2100         }
2101
2102         /* constraints check */
2103         ret = regulator_check_current_limit(rdev, &min_uA, &max_uA);
2104         if (ret < 0)
2105                 goto out;
2106
2107         ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA);
2108 out:
2109         mutex_unlock(&rdev->mutex);
2110         return ret;
2111 }
2112 EXPORT_SYMBOL_GPL(regulator_set_current_limit);
2113
2114 static int _regulator_get_current_limit(struct regulator_dev *rdev)
2115 {
2116         int ret;
2117
2118         mutex_lock(&rdev->mutex);
2119
2120         /* sanity check */
2121         if (!rdev->desc->ops->get_current_limit) {
2122                 ret = -EINVAL;
2123                 goto out;
2124         }
2125
2126         ret = rdev->desc->ops->get_current_limit(rdev);
2127 out:
2128         mutex_unlock(&rdev->mutex);
2129         return ret;
2130 }
2131
2132 /**
2133  * regulator_get_current_limit - get regulator output current
2134  * @regulator: regulator source
2135  *
2136  * This returns the current supplied by the specified current sink in uA.
2137  *
2138  * NOTE: If the regulator is disabled it will return the current value. This
2139  * function should not be used to determine regulator state.
2140  */
2141 int regulator_get_current_limit(struct regulator *regulator)
2142 {
2143         return _regulator_get_current_limit(regulator->rdev);
2144 }
2145 EXPORT_SYMBOL_GPL(regulator_get_current_limit);
2146
2147 /**
2148  * regulator_set_mode - set regulator operating mode
2149  * @regulator: regulator source
2150  * @mode: operating mode - one of the REGULATOR_MODE constants
2151  *
2152  * Set regulator operating mode to increase regulator efficiency or improve
2153  * regulation performance.
2154  *
2155  * NOTE: Regulator system constraints must be set for this regulator before
2156  * calling this function otherwise this call will fail.
2157  */
2158 int regulator_set_mode(struct regulator *regulator, unsigned int mode)
2159 {
2160         struct regulator_dev *rdev = regulator->rdev;
2161         int ret;
2162         int regulator_curr_mode;
2163
2164         mutex_lock(&rdev->mutex);
2165
2166         /* sanity check */
2167         if (!rdev->desc->ops->set_mode) {
2168                 ret = -EINVAL;
2169                 goto out;
2170         }
2171
2172         /* return if the same mode is requested */
2173         if (rdev->desc->ops->get_mode) {
2174                 regulator_curr_mode = rdev->desc->ops->get_mode(rdev);
2175                 if (regulator_curr_mode == mode) {
2176                         ret = 0;
2177                         goto out;
2178                 }
2179         }
2180
2181         /* constraints check */
2182         ret = regulator_mode_constrain(rdev, &mode);
2183         if (ret < 0)
2184                 goto out;
2185
2186         ret = rdev->desc->ops->set_mode(rdev, mode);
2187 out:
2188         mutex_unlock(&rdev->mutex);
2189         return ret;
2190 }
2191 EXPORT_SYMBOL_GPL(regulator_set_mode);
2192
2193 static unsigned int _regulator_get_mode(struct regulator_dev *rdev)
2194 {
2195         int ret;
2196
2197         mutex_lock(&rdev->mutex);
2198
2199         /* sanity check */
2200         if (!rdev->desc->ops->get_mode) {
2201                 ret = -EINVAL;
2202                 goto out;
2203         }
2204
2205         ret = rdev->desc->ops->get_mode(rdev);
2206 out:
2207         mutex_unlock(&rdev->mutex);
2208         return ret;
2209 }
2210
2211 /**
2212  * regulator_get_mode - get regulator operating mode
2213  * @regulator: regulator source
2214  *
2215  * Get the current regulator operating mode.
2216  */
2217 unsigned int regulator_get_mode(struct regulator *regulator)
2218 {
2219         return _regulator_get_mode(regulator->rdev);
2220 }
2221 EXPORT_SYMBOL_GPL(regulator_get_mode);
2222
2223 /**
2224  * regulator_set_optimum_mode - set regulator optimum operating mode
2225  * @regulator: regulator source
2226  * @uA_load: load current
2227  *
2228  * Notifies the regulator core of a new device load. This is then used by
2229  * DRMS (if enabled by constraints) to set the most efficient regulator
2230  * operating mode for the new regulator loading.
2231  *
2232  * Consumer devices notify their supply regulator of the maximum power
2233  * they will require (can be taken from device datasheet in the power
2234  * consumption tables) when they change operational status and hence power
2235  * state. Examples of operational state changes that can affect power
2236  * consumption are :-
2237  *
2238  *    o Device is opened / closed.
2239  *    o Device I/O is about to begin or has just finished.
2240  *    o Device is idling in between work.
2241  *
2242  * This information is also exported via sysfs to userspace.
2243  *
2244  * DRMS will sum the total requested load on the regulator and change
2245  * to the most efficient operating mode if platform constraints allow.
2246  *
2247  * Returns the new regulator mode or error.
2248  */
2249 int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
2250 {
2251         struct regulator_dev *rdev = regulator->rdev;
2252         struct regulator *consumer;
2253         int ret, output_uV, input_uV, total_uA_load = 0;
2254         unsigned int mode;
2255
2256         mutex_lock(&rdev->mutex);
2257
2258         /*
2259          * first check to see if we can set modes at all, otherwise just
2260          * tell the consumer everything is OK.
2261          */
2262         regulator->uA_load = uA_load;
2263         ret = regulator_check_drms(rdev);
2264         if (ret < 0) {
2265                 ret = 0;
2266                 goto out;
2267         }
2268
2269         if (!rdev->desc->ops->get_optimum_mode)
2270                 goto out;
2271
2272         /*
2273          * we can actually do this so any errors are indicators of
2274          * potential real failure.
2275          */
2276         ret = -EINVAL;
2277
2278         /* get output voltage */
2279         output_uV = _regulator_get_voltage(rdev);
2280         if (output_uV <= 0) {
2281                 rdev_err(rdev, "invalid output voltage found\n");
2282                 goto out;
2283         }
2284
2285         /* get input voltage */
2286         input_uV = 0;
2287         if (rdev->supply)
2288                 input_uV = regulator_get_voltage(rdev->supply);
2289         if (input_uV <= 0)
2290                 input_uV = rdev->constraints->input_uV;
2291         if (input_uV <= 0) {
2292                 rdev_err(rdev, "invalid input voltage found\n");
2293                 goto out;
2294         }
2295
2296         /* calc total requested load for this regulator */
2297         list_for_each_entry(consumer, &rdev->consumer_list, list)
2298                 total_uA_load += consumer->uA_load;
2299
2300         mode = rdev->desc->ops->get_optimum_mode(rdev,
2301                                                  input_uV, output_uV,
2302                                                  total_uA_load);
2303         ret = regulator_mode_constrain(rdev, &mode);
2304         if (ret < 0) {
2305                 rdev_err(rdev, "failed to get optimum mode @ %d uA %d -> %d uV\n",
2306                          total_uA_load, input_uV, output_uV);
2307                 goto out;
2308         }
2309
2310         ret = rdev->desc->ops->set_mode(rdev, mode);
2311         if (ret < 0) {
2312                 rdev_err(rdev, "failed to set optimum mode %x\n", mode);
2313                 goto out;
2314         }
2315         ret = mode;
2316 out:
2317         mutex_unlock(&rdev->mutex);
2318         return ret;
2319 }
2320 EXPORT_SYMBOL_GPL(regulator_set_optimum_mode);
2321
2322 /**
2323  * regulator_register_notifier - register regulator event notifier
2324  * @regulator: regulator source
2325  * @nb: notifier block
2326  *
2327  * Register notifier block to receive regulator events.
2328  */
2329 int regulator_register_notifier(struct regulator *regulator,
2330                               struct notifier_block *nb)
2331 {
2332         return blocking_notifier_chain_register(&regulator->rdev->notifier,
2333                                                 nb);
2334 }
2335 EXPORT_SYMBOL_GPL(regulator_register_notifier);
2336
2337 /**
2338  * regulator_unregister_notifier - unregister regulator event notifier
2339  * @regulator: regulator source
2340  * @nb: notifier block
2341  *
2342  * Unregister regulator event notifier block.
2343  */
2344 int regulator_unregister_notifier(struct regulator *regulator,
2345                                 struct notifier_block *nb)
2346 {
2347         return blocking_notifier_chain_unregister(&regulator->rdev->notifier,
2348                                                   nb);
2349 }
2350 EXPORT_SYMBOL_GPL(regulator_unregister_notifier);
2351
2352 /* notify regulator consumers and downstream regulator consumers.
2353  * Note mutex must be held by caller.
2354  */
2355 static void _notifier_call_chain(struct regulator_dev *rdev,
2356                                   unsigned long event, void *data)
2357 {
2358         /* call rdev chain first */
2359         blocking_notifier_call_chain(&rdev->notifier, event, NULL);
2360 }
2361
2362 /**
2363  * regulator_bulk_get - get multiple regulator consumers
2364  *
2365  * @dev:           Device to supply
2366  * @num_consumers: Number of consumers to register
2367  * @consumers:     Configuration of consumers; clients are stored here.
2368  *
2369  * @return 0 on success, an errno on failure.
2370  *
2371  * This helper function allows drivers to get several regulator
2372  * consumers in one operation.  If any of the regulators cannot be
2373  * acquired then any regulators that were allocated will be freed
2374  * before returning to the caller.
2375  */
2376 int regulator_bulk_get(struct device *dev, int num_consumers,
2377                        struct regulator_bulk_data *consumers)
2378 {
2379         int i;
2380         int ret;
2381
2382         for (i = 0; i < num_consumers; i++)
2383                 consumers[i].consumer = NULL;
2384
2385         for (i = 0; i < num_consumers; i++) {
2386                 consumers[i].consumer = regulator_get(dev,
2387                                                       consumers[i].supply);
2388                 if (IS_ERR(consumers[i].consumer)) {
2389                         ret = PTR_ERR(consumers[i].consumer);
2390                         dev_err(dev, "Failed to get supply '%s': %d\n",
2391                                 consumers[i].supply, ret);
2392                         consumers[i].consumer = NULL;
2393                         goto err;
2394                 }
2395         }
2396
2397         return 0;
2398
2399 err:
2400         for (i = 0; i < num_consumers && consumers[i].consumer; i++)
2401                 regulator_put(consumers[i].consumer);
2402
2403         return ret;
2404 }
2405 EXPORT_SYMBOL_GPL(regulator_bulk_get);
2406
2407 static void regulator_bulk_enable_async(void *data, async_cookie_t cookie)
2408 {
2409         struct regulator_bulk_data *bulk = data;
2410
2411         bulk->ret = regulator_enable(bulk->consumer);
2412 }
2413
2414 /**
2415  * regulator_bulk_enable - enable multiple regulator consumers
2416  *
2417  * @num_consumers: Number of consumers
2418  * @consumers:     Consumer data; clients are stored here.
2419  * @return         0 on success, an errno on failure
2420  *
2421  * This convenience API allows consumers to enable multiple regulator
2422  * clients in a single API call.  If any consumers cannot be enabled
2423  * then any others that were enabled will be disabled again prior to
2424  * return.
2425  */
2426 int regulator_bulk_enable(int num_consumers,
2427                           struct regulator_bulk_data *consumers)
2428 {
2429         LIST_HEAD(async_domain);
2430         int i;
2431         int ret = 0;
2432
2433         for (i = 0; i < num_consumers; i++)
2434                 async_schedule_domain(regulator_bulk_enable_async,
2435                                       &consumers[i], &async_domain);
2436
2437         async_synchronize_full_domain(&async_domain);
2438
2439         /* If any consumer failed we need to unwind any that succeeded */
2440         for (i = 0; i < num_consumers; i++) {
2441                 if (consumers[i].ret != 0) {
2442                         ret = consumers[i].ret;
2443                         goto err;
2444                 }
2445         }
2446
2447         return 0;
2448
2449 err:
2450         for (i = 0; i < num_consumers; i++)
2451                 if (consumers[i].ret == 0)
2452                         regulator_disable(consumers[i].consumer);
2453                 else
2454                         pr_err("Failed to enable %s: %d\n",
2455                                consumers[i].supply, consumers[i].ret);
2456
2457         return ret;
2458 }
2459 EXPORT_SYMBOL_GPL(regulator_bulk_enable);
2460
2461 /**
2462  * regulator_bulk_disable - disable multiple regulator consumers
2463  *
2464  * @num_consumers: Number of consumers
2465  * @consumers:     Consumer data; clients are stored here.
2466  * @return         0 on success, an errno on failure
2467  *
2468  * This convenience API allows consumers to disable multiple regulator
2469  * clients in a single API call.  If any consumers cannot be disabled
2470  * then any others that were disabled will be enabled again prior to
2471  * return.
2472  */
2473 int regulator_bulk_disable(int num_consumers,
2474                            struct regulator_bulk_data *consumers)
2475 {
2476         int i;
2477         int ret;
2478
2479         for (i = num_consumers - 1; i >= 0; --i) {
2480                 ret = regulator_disable(consumers[i].consumer);
2481                 if (ret != 0)
2482                         goto err;
2483         }
2484
2485         return 0;
2486
2487 err:
2488         pr_err("Failed to disable %s: %d\n", consumers[i].supply, ret);
2489         for (++i; i < num_consumers; ++i)
2490                 regulator_enable(consumers[i].consumer);
2491
2492         return ret;
2493 }
2494 EXPORT_SYMBOL_GPL(regulator_bulk_disable);
2495
2496 /**
2497  * regulator_bulk_force_disable - force disable multiple regulator consumers
2498  *
2499  * @num_consumers: Number of consumers
2500  * @consumers:     Consumer data; clients are stored here.
2501  * @return         0 on success, an errno on failure
2502  *
2503  * This convenience API allows consumers to forcibly disable multiple regulator
2504  * clients in a single API call.
2505  * NOTE: This should be used for situations when device damage will
2506  * likely occur if the regulators are not disabled (e.g. over temp).
2507  * Although regulator_force_disable function call for some consumers can
2508  * return error numbers, the function is called for all consumers.
2509  */
2510 int regulator_bulk_force_disable(int num_consumers,
2511                            struct regulator_bulk_data *consumers)
2512 {
2513         int i;
2514         int ret;
2515
2516         for (i = 0; i < num_consumers; i++)
2517                 consumers[i].ret =
2518                             regulator_force_disable(consumers[i].consumer);
2519
2520         for (i = 0; i < num_consumers; i++) {
2521                 if (consumers[i].ret != 0) {
2522                         ret = consumers[i].ret;
2523                         goto out;
2524                 }
2525         }
2526
2527         return 0;
2528 out:
2529         return ret;
2530 }
2531 EXPORT_SYMBOL_GPL(regulator_bulk_force_disable);
2532
2533 /**
2534  * regulator_bulk_free - free multiple regulator consumers
2535  *
2536  * @num_consumers: Number of consumers
2537  * @consumers:     Consumer data; clients are stored here.
2538  *
2539  * This convenience API allows consumers to free multiple regulator
2540  * clients in a single API call.
2541  */
2542 void regulator_bulk_free(int num_consumers,
2543                          struct regulator_bulk_data *consumers)
2544 {
2545         int i;
2546
2547         for (i = 0; i < num_consumers; i++) {
2548                 regulator_put(consumers[i].consumer);
2549                 consumers[i].consumer = NULL;
2550         }
2551 }
2552 EXPORT_SYMBOL_GPL(regulator_bulk_free);
2553
2554 /**
2555  * regulator_notifier_call_chain - call regulator event notifier
2556  * @rdev: regulator source
2557  * @event: notifier block
2558  * @data: callback-specific data.
2559  *
2560  * Called by regulator drivers to notify clients a regulator event has
2561  * occurred. We also notify regulator clients downstream.
2562  * Note lock must be held by caller.
2563  */
2564 int regulator_notifier_call_chain(struct regulator_dev *rdev,
2565                                   unsigned long event, void *data)
2566 {
2567         _notifier_call_chain(rdev, event, data);
2568         return NOTIFY_DONE;
2569
2570 }
2571 EXPORT_SYMBOL_GPL(regulator_notifier_call_chain);
2572
2573 /**
2574  * regulator_mode_to_status - convert a regulator mode into a status
2575  *
2576  * @mode: Mode to convert
2577  *
2578  * Convert a regulator mode into a status.
2579  */
2580 int regulator_mode_to_status(unsigned int mode)
2581 {
2582         switch (mode) {
2583         case REGULATOR_MODE_FAST:
2584                 return REGULATOR_STATUS_FAST;
2585         case REGULATOR_MODE_NORMAL:
2586                 return REGULATOR_STATUS_NORMAL;
2587         case REGULATOR_MODE_IDLE:
2588                 return REGULATOR_STATUS_IDLE;
2589         case REGULATOR_STATUS_STANDBY:
2590                 return REGULATOR_STATUS_STANDBY;
2591         default:
2592                 return 0;
2593         }
2594 }
2595 EXPORT_SYMBOL_GPL(regulator_mode_to_status);
2596
2597 /*
2598  * To avoid cluttering sysfs (and memory) with useless state, only
2599  * create attributes that can be meaningfully displayed.
2600  */
2601 static int add_regulator_attributes(struct regulator_dev *rdev)
2602 {
2603         struct device           *dev = &rdev->dev;
2604         struct regulator_ops    *ops = rdev->desc->ops;
2605         int                     status = 0;
2606
2607         /* some attributes need specific methods to be displayed */
2608         if ((ops->get_voltage && ops->get_voltage(rdev) >= 0) ||
2609             (ops->get_voltage_sel && ops->get_voltage_sel(rdev) >= 0)) {
2610                 status = device_create_file(dev, &dev_attr_microvolts);
2611                 if (status < 0)
2612                         return status;
2613         }
2614         if (ops->get_current_limit) {
2615                 status = device_create_file(dev, &dev_attr_microamps);
2616                 if (status < 0)
2617                         return status;
2618         }
2619         if (ops->get_mode) {
2620                 status = device_create_file(dev, &dev_attr_opmode);
2621                 if (status < 0)
2622                         return status;
2623         }
2624         if (ops->is_enabled) {
2625                 status = device_create_file(dev, &dev_attr_state);
2626                 if (status < 0)
2627                         return status;
2628         }
2629         if (ops->get_status) {
2630                 status = device_create_file(dev, &dev_attr_status);
2631                 if (status < 0)
2632                         return status;
2633         }
2634
2635         /* some attributes are type-specific */
2636         if (rdev->desc->type == REGULATOR_CURRENT) {
2637                 status = device_create_file(dev, &dev_attr_requested_microamps);
2638                 if (status < 0)
2639                         return status;
2640         }
2641
2642         /* all the other attributes exist to support constraints;
2643          * don't show them if there are no constraints, or if the
2644          * relevant supporting methods are missing.
2645          */
2646         if (!rdev->constraints)
2647                 return status;
2648
2649         /* constraints need specific supporting methods */
2650         if (ops->set_voltage || ops->set_voltage_sel) {
2651                 status = device_create_file(dev, &dev_attr_min_microvolts);
2652                 if (status < 0)
2653                         return status;
2654                 status = device_create_file(dev, &dev_attr_max_microvolts);
2655                 if (status < 0)
2656                         return status;
2657         }
2658         if (ops->set_current_limit) {
2659                 status = device_create_file(dev, &dev_attr_min_microamps);
2660                 if (status < 0)
2661                         return status;
2662                 status = device_create_file(dev, &dev_attr_max_microamps);
2663                 if (status < 0)
2664                         return status;
2665         }
2666
2667         /* suspend mode constraints need multiple supporting methods */
2668         if (!(ops->set_suspend_enable && ops->set_suspend_disable))
2669                 return status;
2670
2671         status = device_create_file(dev, &dev_attr_suspend_standby_state);
2672         if (status < 0)
2673                 return status;
2674         status = device_create_file(dev, &dev_attr_suspend_mem_state);
2675         if (status < 0)
2676                 return status;
2677         status = device_create_file(dev, &dev_attr_suspend_disk_state);
2678         if (status < 0)
2679                 return status;
2680
2681         if (ops->set_suspend_voltage) {
2682                 status = device_create_file(dev,
2683                                 &dev_attr_suspend_standby_microvolts);
2684                 if (status < 0)
2685                         return status;
2686                 status = device_create_file(dev,
2687                                 &dev_attr_suspend_mem_microvolts);
2688                 if (status < 0)
2689                         return status;
2690                 status = device_create_file(dev,
2691                                 &dev_attr_suspend_disk_microvolts);
2692                 if (status < 0)
2693                         return status;
2694         }
2695
2696         if (ops->set_suspend_mode) {
2697                 status = device_create_file(dev,
2698                                 &dev_attr_suspend_standby_mode);
2699                 if (status < 0)
2700                         return status;
2701                 status = device_create_file(dev,
2702                                 &dev_attr_suspend_mem_mode);
2703                 if (status < 0)
2704                         return status;
2705                 status = device_create_file(dev,
2706                                 &dev_attr_suspend_disk_mode);
2707                 if (status < 0)
2708                         return status;
2709         }
2710
2711         return status;
2712 }
2713
2714 static void rdev_init_debugfs(struct regulator_dev *rdev)
2715 {
2716 #ifdef CONFIG_DEBUG_FS
2717         rdev->debugfs = debugfs_create_dir(rdev_get_name(rdev), debugfs_root);
2718         if (IS_ERR(rdev->debugfs) || !rdev->debugfs) {
2719                 rdev_warn(rdev, "Failed to create debugfs directory\n");
2720                 rdev->debugfs = NULL;
2721                 return;
2722         }
2723
2724         debugfs_create_u32("use_count", 0444, rdev->debugfs,
2725                            &rdev->use_count);
2726         debugfs_create_u32("open_count", 0444, rdev->debugfs,
2727                            &rdev->open_count);
2728 #endif
2729 }
2730
2731 /**
2732  * regulator_register - register regulator
2733  * @regulator_desc: regulator to register
2734  * @dev: struct device for the regulator
2735  * @init_data: platform provided init data, passed through by driver
2736  * @driver_data: private regulator data
2737  *
2738  * Called by regulator drivers to register a regulator.
2739  * Returns 0 on success.
2740  */
2741 struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
2742         struct device *dev, const struct regulator_init_data *init_data,
2743         void *driver_data, struct device_node *of_node)
2744 {
2745         const struct regulation_constraints *constraints = NULL;
2746         static atomic_t regulator_no = ATOMIC_INIT(0);
2747         struct regulator_dev *rdev;
2748         int ret, i;
2749         const char *supply = NULL;
2750
2751         if (regulator_desc == NULL)
2752                 return ERR_PTR(-EINVAL);
2753
2754         if (regulator_desc->name == NULL || regulator_desc->ops == NULL)
2755                 return ERR_PTR(-EINVAL);
2756
2757         if (regulator_desc->type != REGULATOR_VOLTAGE &&
2758             regulator_desc->type != REGULATOR_CURRENT)
2759                 return ERR_PTR(-EINVAL);
2760
2761         /* Only one of each should be implemented */
2762         WARN_ON(regulator_desc->ops->get_voltage &&
2763                 regulator_desc->ops->get_voltage_sel);
2764         WARN_ON(regulator_desc->ops->set_voltage &&
2765                 regulator_desc->ops->set_voltage_sel);
2766
2767         /* If we're using selectors we must implement list_voltage. */
2768         if (regulator_desc->ops->get_voltage_sel &&
2769             !regulator_desc->ops->list_voltage) {
2770                 return ERR_PTR(-EINVAL);
2771         }
2772         if (regulator_desc->ops->set_voltage_sel &&
2773             !regulator_desc->ops->list_voltage) {
2774                 return ERR_PTR(-EINVAL);
2775         }
2776
2777         rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL);
2778         if (rdev == NULL)
2779                 return ERR_PTR(-ENOMEM);
2780
2781         mutex_lock(&regulator_list_mutex);
2782
2783         mutex_init(&rdev->mutex);
2784         rdev->reg_data = driver_data;
2785         rdev->owner = regulator_desc->owner;
2786         rdev->desc = regulator_desc;
2787         INIT_LIST_HEAD(&rdev->consumer_list);
2788         INIT_LIST_HEAD(&rdev->list);
2789         BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
2790         INIT_DELAYED_WORK(&rdev->disable_work, regulator_disable_work);
2791
2792         /* preform any regulator specific init */
2793         if (init_data && init_data->regulator_init) {
2794                 ret = init_data->regulator_init(rdev->reg_data);
2795                 if (ret < 0)
2796                         goto clean;
2797         }
2798
2799         /* register with sysfs */
2800         rdev->dev.class = &regulator_class;
2801         rdev->dev.of_node = of_node;
2802         rdev->dev.parent = dev;
2803         dev_set_name(&rdev->dev, "regulator.%d",
2804                      atomic_inc_return(&regulator_no) - 1);
2805         ret = device_register(&rdev->dev);
2806         if (ret != 0) {
2807                 put_device(&rdev->dev);
2808                 goto clean;
2809         }
2810
2811         dev_set_drvdata(&rdev->dev, rdev);
2812
2813         /* set regulator constraints */
2814         if (init_data)
2815                 constraints = &init_data->constraints;
2816
2817         ret = set_machine_constraints(rdev, constraints);
2818         if (ret < 0)
2819                 goto scrub;
2820
2821         /* add attributes supported by this regulator */
2822         ret = add_regulator_attributes(rdev);
2823         if (ret < 0)
2824                 goto scrub;
2825
2826         if (init_data && init_data->supply_regulator)
2827                 supply = init_data->supply_regulator;
2828         else if (regulator_desc->supply_name)
2829                 supply = regulator_desc->supply_name;
2830
2831         if (supply) {
2832                 struct regulator_dev *r;
2833
2834                 r = regulator_dev_lookup(dev, supply);
2835
2836                 if (!r) {
2837                         dev_err(dev, "Failed to find supply %s\n", supply);
2838                         ret = -ENODEV;
2839                         goto scrub;
2840                 }
2841
2842                 ret = set_supply(rdev, r);
2843                 if (ret < 0)
2844                         goto scrub;
2845
2846                 /* Enable supply if rail is enabled */
2847                 if (rdev->desc->ops->is_enabled &&
2848                                 rdev->desc->ops->is_enabled(rdev)) {
2849                         ret = regulator_enable(rdev->supply);
2850                         if (ret < 0)
2851                                 goto scrub;
2852                 }
2853         }
2854
2855         /* add consumers devices */
2856         if (init_data) {
2857                 for (i = 0; i < init_data->num_consumer_supplies; i++) {
2858                         ret = set_consumer_device_supply(rdev,
2859                                 init_data->consumer_supplies[i].dev,
2860                                 init_data->consumer_supplies[i].dev_name,
2861                                 init_data->consumer_supplies[i].supply);
2862                         if (ret < 0) {
2863                                 dev_err(dev, "Failed to set supply %s\n",
2864                                         init_data->consumer_supplies[i].supply);
2865                                 goto unset_supplies;
2866                         }
2867                 }
2868         }
2869
2870         list_add(&rdev->list, &regulator_list);
2871
2872         rdev_init_debugfs(rdev);
2873 out:
2874         mutex_unlock(&regulator_list_mutex);
2875         return rdev;
2876
2877 unset_supplies:
2878         unset_regulator_supplies(rdev);
2879
2880 scrub:
2881         kfree(rdev->constraints);
2882         device_unregister(&rdev->dev);
2883         /* device core frees rdev */
2884         rdev = ERR_PTR(ret);
2885         goto out;
2886
2887 clean:
2888         kfree(rdev);
2889         rdev = ERR_PTR(ret);
2890         goto out;
2891 }
2892 EXPORT_SYMBOL_GPL(regulator_register);
2893
2894 /**
2895  * regulator_unregister - unregister regulator
2896  * @rdev: regulator to unregister
2897  *
2898  * Called by regulator drivers to unregister a regulator.
2899  */
2900 void regulator_unregister(struct regulator_dev *rdev)
2901 {
2902         if (rdev == NULL)
2903                 return;
2904
2905         mutex_lock(&regulator_list_mutex);
2906 #ifdef CONFIG_DEBUG_FS
2907         debugfs_remove_recursive(rdev->debugfs);
2908 #endif
2909         flush_work_sync(&rdev->disable_work.work);
2910         WARN_ON(rdev->open_count);
2911         unset_regulator_supplies(rdev);
2912         list_del(&rdev->list);
2913         if (rdev->supply)
2914                 regulator_put(rdev->supply);
2915         kfree(rdev->constraints);
2916         device_unregister(&rdev->dev);
2917         mutex_unlock(&regulator_list_mutex);
2918 }
2919 EXPORT_SYMBOL_GPL(regulator_unregister);
2920
2921 /**
2922  * regulator_suspend_prepare - prepare regulators for system wide suspend
2923  * @state: system suspend state
2924  *
2925  * Configure each regulator with it's suspend operating parameters for state.
2926  * This will usually be called by machine suspend code prior to supending.
2927  */
2928 int regulator_suspend_prepare(suspend_state_t state)
2929 {
2930         struct regulator_dev *rdev;
2931         int ret = 0;
2932
2933         /* ON is handled by regulator active state */
2934         if (state == PM_SUSPEND_ON)
2935                 return -EINVAL;
2936
2937         mutex_lock(&regulator_list_mutex);
2938         list_for_each_entry(rdev, &regulator_list, list) {
2939
2940                 mutex_lock(&rdev->mutex);
2941                 ret = suspend_prepare(rdev, state);
2942                 mutex_unlock(&rdev->mutex);
2943
2944                 if (ret < 0) {
2945                         rdev_err(rdev, "failed to prepare\n");
2946                         goto out;
2947                 }
2948         }
2949 out:
2950         mutex_unlock(&regulator_list_mutex);
2951         return ret;
2952 }
2953 EXPORT_SYMBOL_GPL(regulator_suspend_prepare);
2954
2955 /**
2956  * regulator_suspend_finish - resume regulators from system wide suspend
2957  *
2958  * Turn on regulators that might be turned off by regulator_suspend_prepare
2959  * and that should be turned on according to the regulators properties.
2960  */
2961 int regulator_suspend_finish(void)
2962 {
2963         struct regulator_dev *rdev;
2964         int ret = 0, error;
2965
2966         mutex_lock(&regulator_list_mutex);
2967         list_for_each_entry(rdev, &regulator_list, list) {
2968                 struct regulator_ops *ops = rdev->desc->ops;
2969
2970                 mutex_lock(&rdev->mutex);
2971                 if ((rdev->use_count > 0  || rdev->constraints->always_on) &&
2972                                 ops->enable) {
2973                         error = ops->enable(rdev);
2974                         if (error)
2975                                 ret = error;
2976                 } else {
2977                         if (!has_full_constraints)
2978                                 goto unlock;
2979                         if (!ops->disable)
2980                                 goto unlock;
2981                         if (ops->is_enabled && !ops->is_enabled(rdev))
2982                                 goto unlock;
2983
2984                         error = ops->disable(rdev);
2985                         if (error)
2986                                 ret = error;
2987                 }
2988 unlock:
2989                 mutex_unlock(&rdev->mutex);
2990         }
2991         mutex_unlock(&regulator_list_mutex);
2992         return ret;
2993 }
2994 EXPORT_SYMBOL_GPL(regulator_suspend_finish);
2995
2996 /**
2997  * regulator_has_full_constraints - the system has fully specified constraints
2998  *
2999  * Calling this function will cause the regulator API to disable all
3000  * regulators which have a zero use count and don't have an always_on
3001  * constraint in a late_initcall.
3002  *
3003  * The intention is that this will become the default behaviour in a
3004  * future kernel release so users are encouraged to use this facility
3005  * now.
3006  */
3007 void regulator_has_full_constraints(void)
3008 {
3009         has_full_constraints = 1;
3010 }
3011 EXPORT_SYMBOL_GPL(regulator_has_full_constraints);
3012
3013 /**
3014  * regulator_use_dummy_regulator - Provide a dummy regulator when none is found
3015  *
3016  * Calling this function will cause the regulator API to provide a
3017  * dummy regulator to consumers if no physical regulator is found,
3018  * allowing most consumers to proceed as though a regulator were
3019  * configured.  This allows systems such as those with software
3020  * controllable regulators for the CPU core only to be brought up more
3021  * readily.
3022  */
3023 void regulator_use_dummy_regulator(void)
3024 {
3025         board_wants_dummy_regulator = true;
3026 }
3027 EXPORT_SYMBOL_GPL(regulator_use_dummy_regulator);
3028
3029 /**
3030  * rdev_get_drvdata - get rdev regulator driver data
3031  * @rdev: regulator
3032  *
3033  * Get rdev regulator driver private data. This call can be used in the
3034  * regulator driver context.
3035  */
3036 void *rdev_get_drvdata(struct regulator_dev *rdev)
3037 {
3038         return rdev->reg_data;
3039 }
3040 EXPORT_SYMBOL_GPL(rdev_get_drvdata);
3041
3042 /**
3043  * regulator_get_drvdata - get regulator driver data
3044  * @regulator: regulator
3045  *
3046  * Get regulator driver private data. This call can be used in the consumer
3047  * driver context when non API regulator specific functions need to be called.
3048  */
3049 void *regulator_get_drvdata(struct regulator *regulator)
3050 {
3051         return regulator->rdev->reg_data;
3052 }
3053 EXPORT_SYMBOL_GPL(regulator_get_drvdata);
3054
3055 /**
3056  * regulator_set_drvdata - set regulator driver data
3057  * @regulator: regulator
3058  * @data: data
3059  */
3060 void regulator_set_drvdata(struct regulator *regulator, void *data)
3061 {
3062         regulator->rdev->reg_data = data;
3063 }
3064 EXPORT_SYMBOL_GPL(regulator_set_drvdata);
3065
3066 /**
3067  * regulator_get_id - get regulator ID
3068  * @rdev: regulator
3069  */
3070 int rdev_get_id(struct regulator_dev *rdev)
3071 {
3072         return rdev->desc->id;
3073 }
3074 EXPORT_SYMBOL_GPL(rdev_get_id);
3075
3076 struct device *rdev_get_dev(struct regulator_dev *rdev)
3077 {
3078         return &rdev->dev;
3079 }
3080 EXPORT_SYMBOL_GPL(rdev_get_dev);
3081
3082 void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data)
3083 {
3084         return reg_init_data->driver_data;
3085 }
3086 EXPORT_SYMBOL_GPL(regulator_get_init_drvdata);
3087
3088 #ifdef CONFIG_DEBUG_FS
3089 static ssize_t supply_map_read_file(struct file *file, char __user *user_buf,
3090                                     size_t count, loff_t *ppos)
3091 {
3092         char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
3093         ssize_t len, ret = 0;
3094         struct regulator_map *map;
3095
3096         if (!buf)
3097                 return -ENOMEM;
3098
3099         list_for_each_entry(map, &regulator_map_list, list) {
3100                 len = snprintf(buf + ret, PAGE_SIZE - ret,
3101                                "%s -> %s.%s\n",
3102                                rdev_get_name(map->regulator), map->dev_name,
3103                                map->supply);
3104                 if (len >= 0)
3105                         ret += len;
3106                 if (ret > PAGE_SIZE) {
3107                         ret = PAGE_SIZE;
3108                         break;
3109                 }
3110         }
3111
3112         ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
3113
3114         kfree(buf);
3115
3116         return ret;
3117 }
3118
3119 static const struct file_operations supply_map_fops = {
3120         .read = supply_map_read_file,
3121         .llseek = default_llseek,
3122 };
3123 #endif
3124
3125 static int __init regulator_init(void)
3126 {
3127         int ret;
3128
3129         ret = class_register(&regulator_class);
3130
3131 #ifdef CONFIG_DEBUG_FS
3132         debugfs_root = debugfs_create_dir("regulator", NULL);
3133         if (IS_ERR(debugfs_root) || !debugfs_root) {
3134                 pr_warn("regulator: Failed to create debugfs directory\n");
3135                 debugfs_root = NULL;
3136         }
3137
3138         if (IS_ERR(debugfs_create_file("supply_map", 0444, debugfs_root,
3139                                        NULL, &supply_map_fops)))
3140                 pr_warn("regulator: Failed to create supplies debugfs\n");
3141 #endif
3142
3143         regulator_dummy_init();
3144
3145         return ret;
3146 }
3147
3148 /* init early to allow our consumers to complete system booting */
3149 core_initcall(regulator_init);
3150
3151 static int __init regulator_init_complete(void)
3152 {
3153         struct regulator_dev *rdev;
3154         struct regulator_ops *ops;
3155         struct regulation_constraints *c;
3156         int enabled, ret;
3157
3158         mutex_lock(&regulator_list_mutex);
3159
3160         /* If we have a full configuration then disable any regulators
3161          * which are not in use or always_on.  This will become the
3162          * default behaviour in the future.
3163          */
3164         list_for_each_entry(rdev, &regulator_list, list) {
3165                 ops = rdev->desc->ops;
3166                 c = rdev->constraints;
3167
3168                 if (!ops->disable || (c && c->always_on))
3169                         continue;
3170
3171                 mutex_lock(&rdev->mutex);
3172
3173                 if (rdev->use_count)
3174                         goto unlock;
3175
3176                 /* If we can't read the status assume it's on. */
3177                 if (ops->is_enabled)
3178                         enabled = ops->is_enabled(rdev);
3179                 else
3180                         enabled = 1;
3181
3182                 if (!enabled)
3183                         goto unlock;
3184
3185                 if (has_full_constraints) {
3186                         /* We log since this may kill the system if it
3187                          * goes wrong. */
3188                         rdev_info(rdev, "disabling\n");
3189                         ret = ops->disable(rdev);
3190                         if (ret != 0) {
3191                                 rdev_err(rdev, "couldn't disable: %d\n", ret);
3192                         }
3193                 } else {
3194                         /* The intention is that in future we will
3195                          * assume that full constraints are provided
3196                          * so warn even if we aren't going to do
3197                          * anything here.
3198                          */
3199                         rdev_warn(rdev, "incomplete constraints, leaving on\n");
3200                 }
3201
3202 unlock:
3203                 mutex_unlock(&rdev->mutex);
3204         }
3205
3206         mutex_unlock(&regulator_list_mutex);
3207
3208         return 0;
3209 }
3210 late_initcall(regulator_init_complete);