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