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