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