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