xref: /linux/drivers/regulator/core.c (revision a115bc070b1fc57ab23f3972401425927b5b465c)
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/device.h>
19 #include <linux/err.h>
20 #include <linux/mutex.h>
21 #include <linux/suspend.h>
22 #include <linux/delay.h>
23 #include <linux/regulator/consumer.h>
24 #include <linux/regulator/driver.h>
25 #include <linux/regulator/machine.h>
26 
27 #include "dummy.h"
28 
29 #define REGULATOR_VERSION "0.5"
30 
31 static DEFINE_MUTEX(regulator_list_mutex);
32 static LIST_HEAD(regulator_list);
33 static LIST_HEAD(regulator_map_list);
34 static int has_full_constraints;
35 
36 /*
37  * struct regulator_map
38  *
39  * Used to provide symbolic supply names to devices.
40  */
41 struct regulator_map {
42 	struct list_head list;
43 	const char *dev_name;   /* The dev_name() for the consumer */
44 	const char *supply;
45 	struct regulator_dev *regulator;
46 };
47 
48 /*
49  * struct regulator
50  *
51  * One for each consumer device.
52  */
53 struct regulator {
54 	struct device *dev;
55 	struct list_head list;
56 	int uA_load;
57 	int min_uV;
58 	int max_uV;
59 	char *supply_name;
60 	struct device_attribute dev_attr;
61 	struct regulator_dev *rdev;
62 };
63 
64 static int _regulator_is_enabled(struct regulator_dev *rdev);
65 static int _regulator_disable(struct regulator_dev *rdev);
66 static int _regulator_get_voltage(struct regulator_dev *rdev);
67 static int _regulator_get_current_limit(struct regulator_dev *rdev);
68 static unsigned int _regulator_get_mode(struct regulator_dev *rdev);
69 static void _notifier_call_chain(struct regulator_dev *rdev,
70 				  unsigned long event, void *data);
71 
72 static const char *rdev_get_name(struct regulator_dev *rdev)
73 {
74 	if (rdev->constraints && rdev->constraints->name)
75 		return rdev->constraints->name;
76 	else if (rdev->desc->name)
77 		return rdev->desc->name;
78 	else
79 		return "";
80 }
81 
82 /* gets the regulator for a given consumer device */
83 static struct regulator *get_device_regulator(struct device *dev)
84 {
85 	struct regulator *regulator = NULL;
86 	struct regulator_dev *rdev;
87 
88 	mutex_lock(&regulator_list_mutex);
89 	list_for_each_entry(rdev, &regulator_list, list) {
90 		mutex_lock(&rdev->mutex);
91 		list_for_each_entry(regulator, &rdev->consumer_list, list) {
92 			if (regulator->dev == dev) {
93 				mutex_unlock(&rdev->mutex);
94 				mutex_unlock(&regulator_list_mutex);
95 				return regulator;
96 			}
97 		}
98 		mutex_unlock(&rdev->mutex);
99 	}
100 	mutex_unlock(&regulator_list_mutex);
101 	return NULL;
102 }
103 
104 /* Platform voltage constraint check */
105 static int regulator_check_voltage(struct regulator_dev *rdev,
106 				   int *min_uV, int *max_uV)
107 {
108 	BUG_ON(*min_uV > *max_uV);
109 
110 	if (!rdev->constraints) {
111 		printk(KERN_ERR "%s: no constraints for %s\n", __func__,
112 		       rdev_get_name(rdev));
113 		return -ENODEV;
114 	}
115 	if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) {
116 		printk(KERN_ERR "%s: operation not allowed for %s\n",
117 		       __func__, rdev_get_name(rdev));
118 		return -EPERM;
119 	}
120 
121 	if (*max_uV > rdev->constraints->max_uV)
122 		*max_uV = rdev->constraints->max_uV;
123 	if (*min_uV < rdev->constraints->min_uV)
124 		*min_uV = rdev->constraints->min_uV;
125 
126 	if (*min_uV > *max_uV)
127 		return -EINVAL;
128 
129 	return 0;
130 }
131 
132 /* current constraint check */
133 static int regulator_check_current_limit(struct regulator_dev *rdev,
134 					int *min_uA, int *max_uA)
135 {
136 	BUG_ON(*min_uA > *max_uA);
137 
138 	if (!rdev->constraints) {
139 		printk(KERN_ERR "%s: no constraints for %s\n", __func__,
140 		       rdev_get_name(rdev));
141 		return -ENODEV;
142 	}
143 	if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_CURRENT)) {
144 		printk(KERN_ERR "%s: operation not allowed for %s\n",
145 		       __func__, rdev_get_name(rdev));
146 		return -EPERM;
147 	}
148 
149 	if (*max_uA > rdev->constraints->max_uA)
150 		*max_uA = rdev->constraints->max_uA;
151 	if (*min_uA < rdev->constraints->min_uA)
152 		*min_uA = rdev->constraints->min_uA;
153 
154 	if (*min_uA > *max_uA)
155 		return -EINVAL;
156 
157 	return 0;
158 }
159 
160 /* operating mode constraint check */
161 static int regulator_check_mode(struct regulator_dev *rdev, int mode)
162 {
163 	switch (mode) {
164 	case REGULATOR_MODE_FAST:
165 	case REGULATOR_MODE_NORMAL:
166 	case REGULATOR_MODE_IDLE:
167 	case REGULATOR_MODE_STANDBY:
168 		break;
169 	default:
170 		return -EINVAL;
171 	}
172 
173 	if (!rdev->constraints) {
174 		printk(KERN_ERR "%s: no constraints for %s\n", __func__,
175 		       rdev_get_name(rdev));
176 		return -ENODEV;
177 	}
178 	if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_MODE)) {
179 		printk(KERN_ERR "%s: operation not allowed for %s\n",
180 		       __func__, rdev_get_name(rdev));
181 		return -EPERM;
182 	}
183 	if (!(rdev->constraints->valid_modes_mask & mode)) {
184 		printk(KERN_ERR "%s: invalid mode %x for %s\n",
185 		       __func__, mode, rdev_get_name(rdev));
186 		return -EINVAL;
187 	}
188 	return 0;
189 }
190 
191 /* dynamic regulator mode switching constraint check */
192 static int regulator_check_drms(struct regulator_dev *rdev)
193 {
194 	if (!rdev->constraints) {
195 		printk(KERN_ERR "%s: no constraints for %s\n", __func__,
196 		       rdev_get_name(rdev));
197 		return -ENODEV;
198 	}
199 	if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) {
200 		printk(KERN_ERR "%s: operation not allowed for %s\n",
201 		       __func__, rdev_get_name(rdev));
202 		return -EPERM;
203 	}
204 	return 0;
205 }
206 
207 static ssize_t device_requested_uA_show(struct device *dev,
208 			     struct device_attribute *attr, char *buf)
209 {
210 	struct regulator *regulator;
211 
212 	regulator = get_device_regulator(dev);
213 	if (regulator == NULL)
214 		return 0;
215 
216 	return sprintf(buf, "%d\n", regulator->uA_load);
217 }
218 
219 static ssize_t regulator_uV_show(struct device *dev,
220 				struct device_attribute *attr, char *buf)
221 {
222 	struct regulator_dev *rdev = dev_get_drvdata(dev);
223 	ssize_t ret;
224 
225 	mutex_lock(&rdev->mutex);
226 	ret = sprintf(buf, "%d\n", _regulator_get_voltage(rdev));
227 	mutex_unlock(&rdev->mutex);
228 
229 	return ret;
230 }
231 static DEVICE_ATTR(microvolts, 0444, regulator_uV_show, NULL);
232 
233 static ssize_t regulator_uA_show(struct device *dev,
234 				struct device_attribute *attr, char *buf)
235 {
236 	struct regulator_dev *rdev = dev_get_drvdata(dev);
237 
238 	return sprintf(buf, "%d\n", _regulator_get_current_limit(rdev));
239 }
240 static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL);
241 
242 static ssize_t regulator_name_show(struct device *dev,
243 			     struct device_attribute *attr, char *buf)
244 {
245 	struct regulator_dev *rdev = dev_get_drvdata(dev);
246 
247 	return sprintf(buf, "%s\n", rdev_get_name(rdev));
248 }
249 
250 static ssize_t regulator_print_opmode(char *buf, int mode)
251 {
252 	switch (mode) {
253 	case REGULATOR_MODE_FAST:
254 		return sprintf(buf, "fast\n");
255 	case REGULATOR_MODE_NORMAL:
256 		return sprintf(buf, "normal\n");
257 	case REGULATOR_MODE_IDLE:
258 		return sprintf(buf, "idle\n");
259 	case REGULATOR_MODE_STANDBY:
260 		return sprintf(buf, "standby\n");
261 	}
262 	return sprintf(buf, "unknown\n");
263 }
264 
265 static ssize_t regulator_opmode_show(struct device *dev,
266 				    struct device_attribute *attr, char *buf)
267 {
268 	struct regulator_dev *rdev = dev_get_drvdata(dev);
269 
270 	return regulator_print_opmode(buf, _regulator_get_mode(rdev));
271 }
272 static DEVICE_ATTR(opmode, 0444, regulator_opmode_show, NULL);
273 
274 static ssize_t regulator_print_state(char *buf, int state)
275 {
276 	if (state > 0)
277 		return sprintf(buf, "enabled\n");
278 	else if (state == 0)
279 		return sprintf(buf, "disabled\n");
280 	else
281 		return sprintf(buf, "unknown\n");
282 }
283 
284 static ssize_t regulator_state_show(struct device *dev,
285 				   struct device_attribute *attr, char *buf)
286 {
287 	struct regulator_dev *rdev = dev_get_drvdata(dev);
288 	ssize_t ret;
289 
290 	mutex_lock(&rdev->mutex);
291 	ret = regulator_print_state(buf, _regulator_is_enabled(rdev));
292 	mutex_unlock(&rdev->mutex);
293 
294 	return ret;
295 }
296 static DEVICE_ATTR(state, 0444, regulator_state_show, NULL);
297 
298 static ssize_t regulator_status_show(struct device *dev,
299 				   struct device_attribute *attr, char *buf)
300 {
301 	struct regulator_dev *rdev = dev_get_drvdata(dev);
302 	int status;
303 	char *label;
304 
305 	status = rdev->desc->ops->get_status(rdev);
306 	if (status < 0)
307 		return status;
308 
309 	switch (status) {
310 	case REGULATOR_STATUS_OFF:
311 		label = "off";
312 		break;
313 	case REGULATOR_STATUS_ON:
314 		label = "on";
315 		break;
316 	case REGULATOR_STATUS_ERROR:
317 		label = "error";
318 		break;
319 	case REGULATOR_STATUS_FAST:
320 		label = "fast";
321 		break;
322 	case REGULATOR_STATUS_NORMAL:
323 		label = "normal";
324 		break;
325 	case REGULATOR_STATUS_IDLE:
326 		label = "idle";
327 		break;
328 	case REGULATOR_STATUS_STANDBY:
329 		label = "standby";
330 		break;
331 	default:
332 		return -ERANGE;
333 	}
334 
335 	return sprintf(buf, "%s\n", label);
336 }
337 static DEVICE_ATTR(status, 0444, regulator_status_show, NULL);
338 
339 static ssize_t regulator_min_uA_show(struct device *dev,
340 				    struct device_attribute *attr, char *buf)
341 {
342 	struct regulator_dev *rdev = dev_get_drvdata(dev);
343 
344 	if (!rdev->constraints)
345 		return sprintf(buf, "constraint not defined\n");
346 
347 	return sprintf(buf, "%d\n", rdev->constraints->min_uA);
348 }
349 static DEVICE_ATTR(min_microamps, 0444, regulator_min_uA_show, NULL);
350 
351 static ssize_t regulator_max_uA_show(struct device *dev,
352 				    struct device_attribute *attr, char *buf)
353 {
354 	struct regulator_dev *rdev = dev_get_drvdata(dev);
355 
356 	if (!rdev->constraints)
357 		return sprintf(buf, "constraint not defined\n");
358 
359 	return sprintf(buf, "%d\n", rdev->constraints->max_uA);
360 }
361 static DEVICE_ATTR(max_microamps, 0444, regulator_max_uA_show, NULL);
362 
363 static ssize_t regulator_min_uV_show(struct device *dev,
364 				    struct device_attribute *attr, char *buf)
365 {
366 	struct regulator_dev *rdev = dev_get_drvdata(dev);
367 
368 	if (!rdev->constraints)
369 		return sprintf(buf, "constraint not defined\n");
370 
371 	return sprintf(buf, "%d\n", rdev->constraints->min_uV);
372 }
373 static DEVICE_ATTR(min_microvolts, 0444, regulator_min_uV_show, NULL);
374 
375 static ssize_t regulator_max_uV_show(struct device *dev,
376 				    struct device_attribute *attr, char *buf)
377 {
378 	struct regulator_dev *rdev = dev_get_drvdata(dev);
379 
380 	if (!rdev->constraints)
381 		return sprintf(buf, "constraint not defined\n");
382 
383 	return sprintf(buf, "%d\n", rdev->constraints->max_uV);
384 }
385 static DEVICE_ATTR(max_microvolts, 0444, regulator_max_uV_show, NULL);
386 
387 static ssize_t regulator_total_uA_show(struct device *dev,
388 				      struct device_attribute *attr, char *buf)
389 {
390 	struct regulator_dev *rdev = dev_get_drvdata(dev);
391 	struct regulator *regulator;
392 	int uA = 0;
393 
394 	mutex_lock(&rdev->mutex);
395 	list_for_each_entry(regulator, &rdev->consumer_list, list)
396 		uA += regulator->uA_load;
397 	mutex_unlock(&rdev->mutex);
398 	return sprintf(buf, "%d\n", uA);
399 }
400 static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL);
401 
402 static ssize_t regulator_num_users_show(struct device *dev,
403 				      struct device_attribute *attr, char *buf)
404 {
405 	struct regulator_dev *rdev = dev_get_drvdata(dev);
406 	return sprintf(buf, "%d\n", rdev->use_count);
407 }
408 
409 static ssize_t regulator_type_show(struct device *dev,
410 				  struct device_attribute *attr, char *buf)
411 {
412 	struct regulator_dev *rdev = dev_get_drvdata(dev);
413 
414 	switch (rdev->desc->type) {
415 	case REGULATOR_VOLTAGE:
416 		return sprintf(buf, "voltage\n");
417 	case REGULATOR_CURRENT:
418 		return sprintf(buf, "current\n");
419 	}
420 	return sprintf(buf, "unknown\n");
421 }
422 
423 static ssize_t regulator_suspend_mem_uV_show(struct device *dev,
424 				struct device_attribute *attr, char *buf)
425 {
426 	struct regulator_dev *rdev = dev_get_drvdata(dev);
427 
428 	return sprintf(buf, "%d\n", rdev->constraints->state_mem.uV);
429 }
430 static DEVICE_ATTR(suspend_mem_microvolts, 0444,
431 		regulator_suspend_mem_uV_show, NULL);
432 
433 static ssize_t regulator_suspend_disk_uV_show(struct device *dev,
434 				struct device_attribute *attr, char *buf)
435 {
436 	struct regulator_dev *rdev = dev_get_drvdata(dev);
437 
438 	return sprintf(buf, "%d\n", rdev->constraints->state_disk.uV);
439 }
440 static DEVICE_ATTR(suspend_disk_microvolts, 0444,
441 		regulator_suspend_disk_uV_show, NULL);
442 
443 static ssize_t regulator_suspend_standby_uV_show(struct device *dev,
444 				struct device_attribute *attr, char *buf)
445 {
446 	struct regulator_dev *rdev = dev_get_drvdata(dev);
447 
448 	return sprintf(buf, "%d\n", rdev->constraints->state_standby.uV);
449 }
450 static DEVICE_ATTR(suspend_standby_microvolts, 0444,
451 		regulator_suspend_standby_uV_show, NULL);
452 
453 static ssize_t regulator_suspend_mem_mode_show(struct device *dev,
454 				struct device_attribute *attr, char *buf)
455 {
456 	struct regulator_dev *rdev = dev_get_drvdata(dev);
457 
458 	return regulator_print_opmode(buf,
459 		rdev->constraints->state_mem.mode);
460 }
461 static DEVICE_ATTR(suspend_mem_mode, 0444,
462 		regulator_suspend_mem_mode_show, NULL);
463 
464 static ssize_t regulator_suspend_disk_mode_show(struct device *dev,
465 				struct device_attribute *attr, char *buf)
466 {
467 	struct regulator_dev *rdev = dev_get_drvdata(dev);
468 
469 	return regulator_print_opmode(buf,
470 		rdev->constraints->state_disk.mode);
471 }
472 static DEVICE_ATTR(suspend_disk_mode, 0444,
473 		regulator_suspend_disk_mode_show, NULL);
474 
475 static ssize_t regulator_suspend_standby_mode_show(struct device *dev,
476 				struct device_attribute *attr, char *buf)
477 {
478 	struct regulator_dev *rdev = dev_get_drvdata(dev);
479 
480 	return regulator_print_opmode(buf,
481 		rdev->constraints->state_standby.mode);
482 }
483 static DEVICE_ATTR(suspend_standby_mode, 0444,
484 		regulator_suspend_standby_mode_show, NULL);
485 
486 static ssize_t regulator_suspend_mem_state_show(struct device *dev,
487 				   struct device_attribute *attr, char *buf)
488 {
489 	struct regulator_dev *rdev = dev_get_drvdata(dev);
490 
491 	return regulator_print_state(buf,
492 			rdev->constraints->state_mem.enabled);
493 }
494 static DEVICE_ATTR(suspend_mem_state, 0444,
495 		regulator_suspend_mem_state_show, NULL);
496 
497 static ssize_t regulator_suspend_disk_state_show(struct device *dev,
498 				   struct device_attribute *attr, char *buf)
499 {
500 	struct regulator_dev *rdev = dev_get_drvdata(dev);
501 
502 	return regulator_print_state(buf,
503 			rdev->constraints->state_disk.enabled);
504 }
505 static DEVICE_ATTR(suspend_disk_state, 0444,
506 		regulator_suspend_disk_state_show, NULL);
507 
508 static ssize_t regulator_suspend_standby_state_show(struct device *dev,
509 				   struct device_attribute *attr, char *buf)
510 {
511 	struct regulator_dev *rdev = dev_get_drvdata(dev);
512 
513 	return regulator_print_state(buf,
514 			rdev->constraints->state_standby.enabled);
515 }
516 static DEVICE_ATTR(suspend_standby_state, 0444,
517 		regulator_suspend_standby_state_show, NULL);
518 
519 
520 /*
521  * These are the only attributes are present for all regulators.
522  * Other attributes are a function of regulator functionality.
523  */
524 static struct device_attribute regulator_dev_attrs[] = {
525 	__ATTR(name, 0444, regulator_name_show, NULL),
526 	__ATTR(num_users, 0444, regulator_num_users_show, NULL),
527 	__ATTR(type, 0444, regulator_type_show, NULL),
528 	__ATTR_NULL,
529 };
530 
531 static void regulator_dev_release(struct device *dev)
532 {
533 	struct regulator_dev *rdev = dev_get_drvdata(dev);
534 	kfree(rdev);
535 }
536 
537 static struct class regulator_class = {
538 	.name = "regulator",
539 	.dev_release = regulator_dev_release,
540 	.dev_attrs = regulator_dev_attrs,
541 };
542 
543 /* Calculate the new optimum regulator operating mode based on the new total
544  * consumer load. All locks held by caller */
545 static void drms_uA_update(struct regulator_dev *rdev)
546 {
547 	struct regulator *sibling;
548 	int current_uA = 0, output_uV, input_uV, err;
549 	unsigned int mode;
550 
551 	err = regulator_check_drms(rdev);
552 	if (err < 0 || !rdev->desc->ops->get_optimum_mode ||
553 	    !rdev->desc->ops->get_voltage || !rdev->desc->ops->set_mode)
554 		return;
555 
556 	/* get output voltage */
557 	output_uV = rdev->desc->ops->get_voltage(rdev);
558 	if (output_uV <= 0)
559 		return;
560 
561 	/* get input voltage */
562 	if (rdev->supply && rdev->supply->desc->ops->get_voltage)
563 		input_uV = rdev->supply->desc->ops->get_voltage(rdev->supply);
564 	else
565 		input_uV = rdev->constraints->input_uV;
566 	if (input_uV <= 0)
567 		return;
568 
569 	/* calc total requested load */
570 	list_for_each_entry(sibling, &rdev->consumer_list, list)
571 		current_uA += sibling->uA_load;
572 
573 	/* now get the optimum mode for our new total regulator load */
574 	mode = rdev->desc->ops->get_optimum_mode(rdev, input_uV,
575 						  output_uV, current_uA);
576 
577 	/* check the new mode is allowed */
578 	err = regulator_check_mode(rdev, mode);
579 	if (err == 0)
580 		rdev->desc->ops->set_mode(rdev, mode);
581 }
582 
583 static int suspend_set_state(struct regulator_dev *rdev,
584 	struct regulator_state *rstate)
585 {
586 	int ret = 0;
587 	bool can_set_state;
588 
589 	can_set_state = rdev->desc->ops->set_suspend_enable &&
590 		rdev->desc->ops->set_suspend_disable;
591 
592 	/* If we have no suspend mode configration don't set anything;
593 	 * only warn if the driver actually makes the suspend mode
594 	 * configurable.
595 	 */
596 	if (!rstate->enabled && !rstate->disabled) {
597 		if (can_set_state)
598 			printk(KERN_WARNING "%s: No configuration for %s\n",
599 			       __func__, rdev_get_name(rdev));
600 		return 0;
601 	}
602 
603 	if (rstate->enabled && rstate->disabled) {
604 		printk(KERN_ERR "%s: invalid configuration for %s\n",
605 		       __func__, rdev_get_name(rdev));
606 		return -EINVAL;
607 	}
608 
609 	if (!can_set_state) {
610 		printk(KERN_ERR "%s: no way to set suspend state\n",
611 			__func__);
612 		return -EINVAL;
613 	}
614 
615 	if (rstate->enabled)
616 		ret = rdev->desc->ops->set_suspend_enable(rdev);
617 	else
618 		ret = rdev->desc->ops->set_suspend_disable(rdev);
619 	if (ret < 0) {
620 		printk(KERN_ERR "%s: failed to enabled/disable\n", __func__);
621 		return ret;
622 	}
623 
624 	if (rdev->desc->ops->set_suspend_voltage && rstate->uV > 0) {
625 		ret = rdev->desc->ops->set_suspend_voltage(rdev, rstate->uV);
626 		if (ret < 0) {
627 			printk(KERN_ERR "%s: failed to set voltage\n",
628 				__func__);
629 			return ret;
630 		}
631 	}
632 
633 	if (rdev->desc->ops->set_suspend_mode && rstate->mode > 0) {
634 		ret = rdev->desc->ops->set_suspend_mode(rdev, rstate->mode);
635 		if (ret < 0) {
636 			printk(KERN_ERR "%s: failed to set mode\n", __func__);
637 			return ret;
638 		}
639 	}
640 	return ret;
641 }
642 
643 /* locks held by caller */
644 static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state)
645 {
646 	if (!rdev->constraints)
647 		return -EINVAL;
648 
649 	switch (state) {
650 	case PM_SUSPEND_STANDBY:
651 		return suspend_set_state(rdev,
652 			&rdev->constraints->state_standby);
653 	case PM_SUSPEND_MEM:
654 		return suspend_set_state(rdev,
655 			&rdev->constraints->state_mem);
656 	case PM_SUSPEND_MAX:
657 		return suspend_set_state(rdev,
658 			&rdev->constraints->state_disk);
659 	default:
660 		return -EINVAL;
661 	}
662 }
663 
664 static void print_constraints(struct regulator_dev *rdev)
665 {
666 	struct regulation_constraints *constraints = rdev->constraints;
667 	char buf[80] = "";
668 	int count = 0;
669 	int ret;
670 
671 	if (constraints->min_uV && constraints->max_uV) {
672 		if (constraints->min_uV == constraints->max_uV)
673 			count += sprintf(buf + count, "%d mV ",
674 					 constraints->min_uV / 1000);
675 		else
676 			count += sprintf(buf + count, "%d <--> %d mV ",
677 					 constraints->min_uV / 1000,
678 					 constraints->max_uV / 1000);
679 	}
680 
681 	if (!constraints->min_uV ||
682 	    constraints->min_uV != constraints->max_uV) {
683 		ret = _regulator_get_voltage(rdev);
684 		if (ret > 0)
685 			count += sprintf(buf + count, "at %d mV ", ret / 1000);
686 	}
687 
688 	if (constraints->min_uA && constraints->max_uA) {
689 		if (constraints->min_uA == constraints->max_uA)
690 			count += sprintf(buf + count, "%d mA ",
691 					 constraints->min_uA / 1000);
692 		else
693 			count += sprintf(buf + count, "%d <--> %d mA ",
694 					 constraints->min_uA / 1000,
695 					 constraints->max_uA / 1000);
696 	}
697 
698 	if (!constraints->min_uA ||
699 	    constraints->min_uA != constraints->max_uA) {
700 		ret = _regulator_get_current_limit(rdev);
701 		if (ret > 0)
702 			count += sprintf(buf + count, "at %d uA ", ret / 1000);
703 	}
704 
705 	if (constraints->valid_modes_mask & REGULATOR_MODE_FAST)
706 		count += sprintf(buf + count, "fast ");
707 	if (constraints->valid_modes_mask & REGULATOR_MODE_NORMAL)
708 		count += sprintf(buf + count, "normal ");
709 	if (constraints->valid_modes_mask & REGULATOR_MODE_IDLE)
710 		count += sprintf(buf + count, "idle ");
711 	if (constraints->valid_modes_mask & REGULATOR_MODE_STANDBY)
712 		count += sprintf(buf + count, "standby");
713 
714 	printk(KERN_INFO "regulator: %s: %s\n", rdev_get_name(rdev), buf);
715 }
716 
717 static int machine_constraints_voltage(struct regulator_dev *rdev,
718 	struct regulation_constraints *constraints)
719 {
720 	struct regulator_ops *ops = rdev->desc->ops;
721 	const char *name = rdev_get_name(rdev);
722 	int ret;
723 
724 	/* do we need to apply the constraint voltage */
725 	if (rdev->constraints->apply_uV &&
726 		rdev->constraints->min_uV == rdev->constraints->max_uV &&
727 		ops->set_voltage) {
728 		ret = ops->set_voltage(rdev,
729 			rdev->constraints->min_uV, rdev->constraints->max_uV);
730 			if (ret < 0) {
731 				printk(KERN_ERR "%s: failed to apply %duV constraint to %s\n",
732 				       __func__,
733 				       rdev->constraints->min_uV, name);
734 				rdev->constraints = NULL;
735 				return ret;
736 			}
737 	}
738 
739 	/* constrain machine-level voltage specs to fit
740 	 * the actual range supported by this regulator.
741 	 */
742 	if (ops->list_voltage && rdev->desc->n_voltages) {
743 		int	count = rdev->desc->n_voltages;
744 		int	i;
745 		int	min_uV = INT_MAX;
746 		int	max_uV = INT_MIN;
747 		int	cmin = constraints->min_uV;
748 		int	cmax = constraints->max_uV;
749 
750 		/* it's safe to autoconfigure fixed-voltage supplies
751 		   and the constraints are used by list_voltage. */
752 		if (count == 1 && !cmin) {
753 			cmin = 1;
754 			cmax = INT_MAX;
755 			constraints->min_uV = cmin;
756 			constraints->max_uV = cmax;
757 		}
758 
759 		/* voltage constraints are optional */
760 		if ((cmin == 0) && (cmax == 0))
761 			return 0;
762 
763 		/* else require explicit machine-level constraints */
764 		if (cmin <= 0 || cmax <= 0 || cmax < cmin) {
765 			pr_err("%s: %s '%s' voltage constraints\n",
766 				       __func__, "invalid", name);
767 			return -EINVAL;
768 		}
769 
770 		/* initial: [cmin..cmax] valid, [min_uV..max_uV] not */
771 		for (i = 0; i < count; i++) {
772 			int	value;
773 
774 			value = ops->list_voltage(rdev, i);
775 			if (value <= 0)
776 				continue;
777 
778 			/* maybe adjust [min_uV..max_uV] */
779 			if (value >= cmin && value < min_uV)
780 				min_uV = value;
781 			if (value <= cmax && value > max_uV)
782 				max_uV = value;
783 		}
784 
785 		/* final: [min_uV..max_uV] valid iff constraints valid */
786 		if (max_uV < min_uV) {
787 			pr_err("%s: %s '%s' voltage constraints\n",
788 				       __func__, "unsupportable", name);
789 			return -EINVAL;
790 		}
791 
792 		/* use regulator's subset of machine constraints */
793 		if (constraints->min_uV < min_uV) {
794 			pr_debug("%s: override '%s' %s, %d -> %d\n",
795 				       __func__, name, "min_uV",
796 					constraints->min_uV, min_uV);
797 			constraints->min_uV = min_uV;
798 		}
799 		if (constraints->max_uV > max_uV) {
800 			pr_debug("%s: override '%s' %s, %d -> %d\n",
801 				       __func__, name, "max_uV",
802 					constraints->max_uV, max_uV);
803 			constraints->max_uV = max_uV;
804 		}
805 	}
806 
807 	return 0;
808 }
809 
810 /**
811  * set_machine_constraints - sets regulator constraints
812  * @rdev: regulator source
813  * @constraints: constraints to apply
814  *
815  * Allows platform initialisation code to define and constrain
816  * regulator circuits e.g. valid voltage/current ranges, etc.  NOTE:
817  * Constraints *must* be set by platform code in order for some
818  * regulator operations to proceed i.e. set_voltage, set_current_limit,
819  * set_mode.
820  */
821 static int set_machine_constraints(struct regulator_dev *rdev,
822 	struct regulation_constraints *constraints)
823 {
824 	int ret = 0;
825 	const char *name;
826 	struct regulator_ops *ops = rdev->desc->ops;
827 
828 	rdev->constraints = constraints;
829 
830 	name = rdev_get_name(rdev);
831 
832 	ret = machine_constraints_voltage(rdev, constraints);
833 	if (ret != 0)
834 		goto out;
835 
836 	/* do we need to setup our suspend state */
837 	if (constraints->initial_state) {
838 		ret = suspend_prepare(rdev, constraints->initial_state);
839 		if (ret < 0) {
840 			printk(KERN_ERR "%s: failed to set suspend state for %s\n",
841 			       __func__, name);
842 			rdev->constraints = NULL;
843 			goto out;
844 		}
845 	}
846 
847 	if (constraints->initial_mode) {
848 		if (!ops->set_mode) {
849 			printk(KERN_ERR "%s: no set_mode operation for %s\n",
850 			       __func__, name);
851 			ret = -EINVAL;
852 			goto out;
853 		}
854 
855 		ret = ops->set_mode(rdev, constraints->initial_mode);
856 		if (ret < 0) {
857 			printk(KERN_ERR
858 			       "%s: failed to set initial mode for %s: %d\n",
859 			       __func__, name, ret);
860 			goto out;
861 		}
862 	}
863 
864 	/* If the constraints say the regulator should be on at this point
865 	 * and we have control then make sure it is enabled.
866 	 */
867 	if ((constraints->always_on || constraints->boot_on) && ops->enable) {
868 		ret = ops->enable(rdev);
869 		if (ret < 0) {
870 			printk(KERN_ERR "%s: failed to enable %s\n",
871 			       __func__, name);
872 			rdev->constraints = NULL;
873 			goto out;
874 		}
875 	}
876 
877 	print_constraints(rdev);
878 out:
879 	return ret;
880 }
881 
882 /**
883  * set_supply - set regulator supply regulator
884  * @rdev: regulator name
885  * @supply_rdev: supply regulator name
886  *
887  * Called by platform initialisation code to set the supply regulator for this
888  * regulator. This ensures that a regulators supply will also be enabled by the
889  * core if it's child is enabled.
890  */
891 static int set_supply(struct regulator_dev *rdev,
892 	struct regulator_dev *supply_rdev)
893 {
894 	int err;
895 
896 	err = sysfs_create_link(&rdev->dev.kobj, &supply_rdev->dev.kobj,
897 				"supply");
898 	if (err) {
899 		printk(KERN_ERR
900 		       "%s: could not add device link %s err %d\n",
901 		       __func__, supply_rdev->dev.kobj.name, err);
902 		       goto out;
903 	}
904 	rdev->supply = supply_rdev;
905 	list_add(&rdev->slist, &supply_rdev->supply_list);
906 out:
907 	return err;
908 }
909 
910 /**
911  * set_consumer_device_supply: Bind a regulator to a symbolic supply
912  * @rdev:         regulator source
913  * @consumer_dev: device the supply applies to
914  * @consumer_dev_name: dev_name() string for device supply applies to
915  * @supply:       symbolic name for supply
916  *
917  * Allows platform initialisation code to map physical regulator
918  * sources to symbolic names for supplies for use by devices.  Devices
919  * should use these symbolic names to request regulators, avoiding the
920  * need to provide board-specific regulator names as platform data.
921  *
922  * Only one of consumer_dev and consumer_dev_name may be specified.
923  */
924 static int set_consumer_device_supply(struct regulator_dev *rdev,
925 	struct device *consumer_dev, const char *consumer_dev_name,
926 	const char *supply)
927 {
928 	struct regulator_map *node;
929 	int has_dev;
930 
931 	if (consumer_dev && consumer_dev_name)
932 		return -EINVAL;
933 
934 	if (!consumer_dev_name && consumer_dev)
935 		consumer_dev_name = dev_name(consumer_dev);
936 
937 	if (supply == NULL)
938 		return -EINVAL;
939 
940 	if (consumer_dev_name != NULL)
941 		has_dev = 1;
942 	else
943 		has_dev = 0;
944 
945 	list_for_each_entry(node, &regulator_map_list, list) {
946 		if (consumer_dev_name != node->dev_name)
947 			continue;
948 		if (strcmp(node->supply, supply) != 0)
949 			continue;
950 
951 		dev_dbg(consumer_dev, "%s/%s is '%s' supply; fail %s/%s\n",
952 				dev_name(&node->regulator->dev),
953 				node->regulator->desc->name,
954 				supply,
955 				dev_name(&rdev->dev), rdev_get_name(rdev));
956 		return -EBUSY;
957 	}
958 
959 	node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL);
960 	if (node == NULL)
961 		return -ENOMEM;
962 
963 	node->regulator = rdev;
964 	node->supply = supply;
965 
966 	if (has_dev) {
967 		node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL);
968 		if (node->dev_name == NULL) {
969 			kfree(node);
970 			return -ENOMEM;
971 		}
972 	}
973 
974 	list_add(&node->list, &regulator_map_list);
975 	return 0;
976 }
977 
978 static void unset_consumer_device_supply(struct regulator_dev *rdev,
979 	const char *consumer_dev_name, struct device *consumer_dev)
980 {
981 	struct regulator_map *node, *n;
982 
983 	if (consumer_dev && !consumer_dev_name)
984 		consumer_dev_name = dev_name(consumer_dev);
985 
986 	list_for_each_entry_safe(node, n, &regulator_map_list, list) {
987 		if (rdev != node->regulator)
988 			continue;
989 
990 		if (consumer_dev_name && node->dev_name &&
991 		    strcmp(consumer_dev_name, node->dev_name))
992 			continue;
993 
994 		list_del(&node->list);
995 		kfree(node->dev_name);
996 		kfree(node);
997 		return;
998 	}
999 }
1000 
1001 static void unset_regulator_supplies(struct regulator_dev *rdev)
1002 {
1003 	struct regulator_map *node, *n;
1004 
1005 	list_for_each_entry_safe(node, n, &regulator_map_list, list) {
1006 		if (rdev == node->regulator) {
1007 			list_del(&node->list);
1008 			kfree(node->dev_name);
1009 			kfree(node);
1010 			return;
1011 		}
1012 	}
1013 }
1014 
1015 #define REG_STR_SIZE	32
1016 
1017 static struct regulator *create_regulator(struct regulator_dev *rdev,
1018 					  struct device *dev,
1019 					  const char *supply_name)
1020 {
1021 	struct regulator *regulator;
1022 	char buf[REG_STR_SIZE];
1023 	int err, size;
1024 
1025 	regulator = kzalloc(sizeof(*regulator), GFP_KERNEL);
1026 	if (regulator == NULL)
1027 		return NULL;
1028 
1029 	mutex_lock(&rdev->mutex);
1030 	regulator->rdev = rdev;
1031 	list_add(&regulator->list, &rdev->consumer_list);
1032 
1033 	if (dev) {
1034 		/* create a 'requested_microamps_name' sysfs entry */
1035 		size = scnprintf(buf, REG_STR_SIZE, "microamps_requested_%s",
1036 			supply_name);
1037 		if (size >= REG_STR_SIZE)
1038 			goto overflow_err;
1039 
1040 		regulator->dev = dev;
1041 		regulator->dev_attr.attr.name = kstrdup(buf, GFP_KERNEL);
1042 		if (regulator->dev_attr.attr.name == NULL)
1043 			goto attr_name_err;
1044 
1045 		regulator->dev_attr.attr.owner = THIS_MODULE;
1046 		regulator->dev_attr.attr.mode = 0444;
1047 		regulator->dev_attr.show = device_requested_uA_show;
1048 		err = device_create_file(dev, &regulator->dev_attr);
1049 		if (err < 0) {
1050 			printk(KERN_WARNING "%s: could not add regulator_dev"
1051 				" load sysfs\n", __func__);
1052 			goto attr_name_err;
1053 		}
1054 
1055 		/* also add a link to the device sysfs entry */
1056 		size = scnprintf(buf, REG_STR_SIZE, "%s-%s",
1057 				 dev->kobj.name, supply_name);
1058 		if (size >= REG_STR_SIZE)
1059 			goto attr_err;
1060 
1061 		regulator->supply_name = kstrdup(buf, GFP_KERNEL);
1062 		if (regulator->supply_name == NULL)
1063 			goto attr_err;
1064 
1065 		err = sysfs_create_link(&rdev->dev.kobj, &dev->kobj,
1066 					buf);
1067 		if (err) {
1068 			printk(KERN_WARNING
1069 			       "%s: could not add device link %s err %d\n",
1070 			       __func__, dev->kobj.name, err);
1071 			device_remove_file(dev, &regulator->dev_attr);
1072 			goto link_name_err;
1073 		}
1074 	}
1075 	mutex_unlock(&rdev->mutex);
1076 	return regulator;
1077 link_name_err:
1078 	kfree(regulator->supply_name);
1079 attr_err:
1080 	device_remove_file(regulator->dev, &regulator->dev_attr);
1081 attr_name_err:
1082 	kfree(regulator->dev_attr.attr.name);
1083 overflow_err:
1084 	list_del(&regulator->list);
1085 	kfree(regulator);
1086 	mutex_unlock(&rdev->mutex);
1087 	return NULL;
1088 }
1089 
1090 static int _regulator_get_enable_time(struct regulator_dev *rdev)
1091 {
1092 	if (!rdev->desc->ops->enable_time)
1093 		return 0;
1094 	return rdev->desc->ops->enable_time(rdev);
1095 }
1096 
1097 /* Internal regulator request function */
1098 static struct regulator *_regulator_get(struct device *dev, const char *id,
1099 					int exclusive)
1100 {
1101 	struct regulator_dev *rdev;
1102 	struct regulator_map *map;
1103 	struct regulator *regulator = ERR_PTR(-ENODEV);
1104 	const char *devname = NULL;
1105 	int ret;
1106 
1107 	if (id == NULL) {
1108 		printk(KERN_ERR "regulator: get() with no identifier\n");
1109 		return regulator;
1110 	}
1111 
1112 	if (dev)
1113 		devname = dev_name(dev);
1114 
1115 	mutex_lock(&regulator_list_mutex);
1116 
1117 	list_for_each_entry(map, &regulator_map_list, list) {
1118 		/* If the mapping has a device set up it must match */
1119 		if (map->dev_name &&
1120 		    (!devname || strcmp(map->dev_name, devname)))
1121 			continue;
1122 
1123 		if (strcmp(map->supply, id) == 0) {
1124 			rdev = map->regulator;
1125 			goto found;
1126 		}
1127 	}
1128 
1129 #ifdef CONFIG_REGULATOR_DUMMY
1130 	if (!devname)
1131 		devname = "deviceless";
1132 
1133 	/* If the board didn't flag that it was fully constrained then
1134 	 * substitute in a dummy regulator so consumers can continue.
1135 	 */
1136 	if (!has_full_constraints) {
1137 		pr_warning("%s supply %s not found, using dummy regulator\n",
1138 			   devname, id);
1139 		rdev = dummy_regulator_rdev;
1140 		goto found;
1141 	}
1142 #endif
1143 
1144 	mutex_unlock(&regulator_list_mutex);
1145 	return regulator;
1146 
1147 found:
1148 	if (rdev->exclusive) {
1149 		regulator = ERR_PTR(-EPERM);
1150 		goto out;
1151 	}
1152 
1153 	if (exclusive && rdev->open_count) {
1154 		regulator = ERR_PTR(-EBUSY);
1155 		goto out;
1156 	}
1157 
1158 	if (!try_module_get(rdev->owner))
1159 		goto out;
1160 
1161 	regulator = create_regulator(rdev, dev, id);
1162 	if (regulator == NULL) {
1163 		regulator = ERR_PTR(-ENOMEM);
1164 		module_put(rdev->owner);
1165 	}
1166 
1167 	rdev->open_count++;
1168 	if (exclusive) {
1169 		rdev->exclusive = 1;
1170 
1171 		ret = _regulator_is_enabled(rdev);
1172 		if (ret > 0)
1173 			rdev->use_count = 1;
1174 		else
1175 			rdev->use_count = 0;
1176 	}
1177 
1178 out:
1179 	mutex_unlock(&regulator_list_mutex);
1180 
1181 	return regulator;
1182 }
1183 
1184 /**
1185  * regulator_get - lookup and obtain a reference to a regulator.
1186  * @dev: device for regulator "consumer"
1187  * @id: Supply name or regulator ID.
1188  *
1189  * Returns a struct regulator corresponding to the regulator producer,
1190  * or IS_ERR() condition containing errno.
1191  *
1192  * Use of supply names configured via regulator_set_device_supply() is
1193  * strongly encouraged.  It is recommended that the supply name used
1194  * should match the name used for the supply and/or the relevant
1195  * device pins in the datasheet.
1196  */
1197 struct regulator *regulator_get(struct device *dev, const char *id)
1198 {
1199 	return _regulator_get(dev, id, 0);
1200 }
1201 EXPORT_SYMBOL_GPL(regulator_get);
1202 
1203 /**
1204  * regulator_get_exclusive - obtain exclusive access to a regulator.
1205  * @dev: device for regulator "consumer"
1206  * @id: Supply name or regulator ID.
1207  *
1208  * Returns a struct regulator corresponding to the regulator producer,
1209  * or IS_ERR() condition containing errno.  Other consumers will be
1210  * unable to obtain this reference is held and the use count for the
1211  * regulator will be initialised to reflect the current state of the
1212  * regulator.
1213  *
1214  * This is intended for use by consumers which cannot tolerate shared
1215  * use of the regulator such as those which need to force the
1216  * regulator off for correct operation of the hardware they are
1217  * controlling.
1218  *
1219  * Use of supply names configured via regulator_set_device_supply() is
1220  * strongly encouraged.  It is recommended that the supply name used
1221  * should match the name used for the supply and/or the relevant
1222  * device pins in the datasheet.
1223  */
1224 struct regulator *regulator_get_exclusive(struct device *dev, const char *id)
1225 {
1226 	return _regulator_get(dev, id, 1);
1227 }
1228 EXPORT_SYMBOL_GPL(regulator_get_exclusive);
1229 
1230 /**
1231  * regulator_put - "free" the regulator source
1232  * @regulator: regulator source
1233  *
1234  * Note: drivers must ensure that all regulator_enable calls made on this
1235  * regulator source are balanced by regulator_disable calls prior to calling
1236  * this function.
1237  */
1238 void regulator_put(struct regulator *regulator)
1239 {
1240 	struct regulator_dev *rdev;
1241 
1242 	if (regulator == NULL || IS_ERR(regulator))
1243 		return;
1244 
1245 	mutex_lock(&regulator_list_mutex);
1246 	rdev = regulator->rdev;
1247 
1248 	/* remove any sysfs entries */
1249 	if (regulator->dev) {
1250 		sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name);
1251 		kfree(regulator->supply_name);
1252 		device_remove_file(regulator->dev, &regulator->dev_attr);
1253 		kfree(regulator->dev_attr.attr.name);
1254 	}
1255 	list_del(&regulator->list);
1256 	kfree(regulator);
1257 
1258 	rdev->open_count--;
1259 	rdev->exclusive = 0;
1260 
1261 	module_put(rdev->owner);
1262 	mutex_unlock(&regulator_list_mutex);
1263 }
1264 EXPORT_SYMBOL_GPL(regulator_put);
1265 
1266 static int _regulator_can_change_status(struct regulator_dev *rdev)
1267 {
1268 	if (!rdev->constraints)
1269 		return 0;
1270 
1271 	if (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_STATUS)
1272 		return 1;
1273 	else
1274 		return 0;
1275 }
1276 
1277 /* locks held by regulator_enable() */
1278 static int _regulator_enable(struct regulator_dev *rdev)
1279 {
1280 	int ret, delay;
1281 
1282 	/* do we need to enable the supply regulator first */
1283 	if (rdev->supply) {
1284 		ret = _regulator_enable(rdev->supply);
1285 		if (ret < 0) {
1286 			printk(KERN_ERR "%s: failed to enable %s: %d\n",
1287 			       __func__, rdev_get_name(rdev), ret);
1288 			return ret;
1289 		}
1290 	}
1291 
1292 	/* check voltage and requested load before enabling */
1293 	if (rdev->constraints &&
1294 	    (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS))
1295 		drms_uA_update(rdev);
1296 
1297 	if (rdev->use_count == 0) {
1298 		/* The regulator may on if it's not switchable or left on */
1299 		ret = _regulator_is_enabled(rdev);
1300 		if (ret == -EINVAL || ret == 0) {
1301 			if (!_regulator_can_change_status(rdev))
1302 				return -EPERM;
1303 
1304 			if (!rdev->desc->ops->enable)
1305 				return -EINVAL;
1306 
1307 			/* Query before enabling in case configuration
1308 			 * dependant.  */
1309 			ret = _regulator_get_enable_time(rdev);
1310 			if (ret >= 0) {
1311 				delay = ret;
1312 			} else {
1313 				printk(KERN_WARNING
1314 					"%s: enable_time() failed for %s: %d\n",
1315 					__func__, rdev_get_name(rdev),
1316 					ret);
1317 				delay = 0;
1318 			}
1319 
1320 			/* Allow the regulator to ramp; it would be useful
1321 			 * to extend this for bulk operations so that the
1322 			 * regulators can ramp together.  */
1323 			ret = rdev->desc->ops->enable(rdev);
1324 			if (ret < 0)
1325 				return ret;
1326 
1327 			if (delay >= 1000)
1328 				mdelay(delay / 1000);
1329 			else if (delay)
1330 				udelay(delay);
1331 
1332 		} else if (ret < 0) {
1333 			printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n",
1334 			       __func__, rdev_get_name(rdev), ret);
1335 			return ret;
1336 		}
1337 		/* Fallthrough on positive return values - already enabled */
1338 	}
1339 
1340 	rdev->use_count++;
1341 
1342 	return 0;
1343 }
1344 
1345 /**
1346  * regulator_enable - enable regulator output
1347  * @regulator: regulator source
1348  *
1349  * Request that the regulator be enabled with the regulator output at
1350  * the predefined voltage or current value.  Calls to regulator_enable()
1351  * must be balanced with calls to regulator_disable().
1352  *
1353  * NOTE: the output value can be set by other drivers, boot loader or may be
1354  * hardwired in the regulator.
1355  */
1356 int regulator_enable(struct regulator *regulator)
1357 {
1358 	struct regulator_dev *rdev = regulator->rdev;
1359 	int ret = 0;
1360 
1361 	mutex_lock(&rdev->mutex);
1362 	ret = _regulator_enable(rdev);
1363 	mutex_unlock(&rdev->mutex);
1364 	return ret;
1365 }
1366 EXPORT_SYMBOL_GPL(regulator_enable);
1367 
1368 /* locks held by regulator_disable() */
1369 static int _regulator_disable(struct regulator_dev *rdev)
1370 {
1371 	int ret = 0;
1372 
1373 	if (WARN(rdev->use_count <= 0,
1374 			"unbalanced disables for %s\n",
1375 			rdev_get_name(rdev)))
1376 		return -EIO;
1377 
1378 	/* are we the last user and permitted to disable ? */
1379 	if (rdev->use_count == 1 &&
1380 	    (rdev->constraints && !rdev->constraints->always_on)) {
1381 
1382 		/* we are last user */
1383 		if (_regulator_can_change_status(rdev) &&
1384 		    rdev->desc->ops->disable) {
1385 			ret = rdev->desc->ops->disable(rdev);
1386 			if (ret < 0) {
1387 				printk(KERN_ERR "%s: failed to disable %s\n",
1388 				       __func__, rdev_get_name(rdev));
1389 				return ret;
1390 			}
1391 
1392 			_notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE,
1393 					     NULL);
1394 		}
1395 
1396 		/* decrease our supplies ref count and disable if required */
1397 		if (rdev->supply)
1398 			_regulator_disable(rdev->supply);
1399 
1400 		rdev->use_count = 0;
1401 	} else if (rdev->use_count > 1) {
1402 
1403 		if (rdev->constraints &&
1404 			(rdev->constraints->valid_ops_mask &
1405 			REGULATOR_CHANGE_DRMS))
1406 			drms_uA_update(rdev);
1407 
1408 		rdev->use_count--;
1409 	}
1410 	return ret;
1411 }
1412 
1413 /**
1414  * regulator_disable - disable regulator output
1415  * @regulator: regulator source
1416  *
1417  * Disable the regulator output voltage or current.  Calls to
1418  * regulator_enable() must be balanced with calls to
1419  * regulator_disable().
1420  *
1421  * NOTE: this will only disable the regulator output if no other consumer
1422  * devices have it enabled, the regulator device supports disabling and
1423  * machine constraints permit this operation.
1424  */
1425 int regulator_disable(struct regulator *regulator)
1426 {
1427 	struct regulator_dev *rdev = regulator->rdev;
1428 	int ret = 0;
1429 
1430 	mutex_lock(&rdev->mutex);
1431 	ret = _regulator_disable(rdev);
1432 	mutex_unlock(&rdev->mutex);
1433 	return ret;
1434 }
1435 EXPORT_SYMBOL_GPL(regulator_disable);
1436 
1437 /* locks held by regulator_force_disable() */
1438 static int _regulator_force_disable(struct regulator_dev *rdev)
1439 {
1440 	int ret = 0;
1441 
1442 	/* force disable */
1443 	if (rdev->desc->ops->disable) {
1444 		/* ah well, who wants to live forever... */
1445 		ret = rdev->desc->ops->disable(rdev);
1446 		if (ret < 0) {
1447 			printk(KERN_ERR "%s: failed to force disable %s\n",
1448 			       __func__, rdev_get_name(rdev));
1449 			return ret;
1450 		}
1451 		/* notify other consumers that power has been forced off */
1452 		_notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE |
1453 			REGULATOR_EVENT_DISABLE, NULL);
1454 	}
1455 
1456 	/* decrease our supplies ref count and disable if required */
1457 	if (rdev->supply)
1458 		_regulator_disable(rdev->supply);
1459 
1460 	rdev->use_count = 0;
1461 	return ret;
1462 }
1463 
1464 /**
1465  * regulator_force_disable - force disable regulator output
1466  * @regulator: regulator source
1467  *
1468  * Forcibly disable the regulator output voltage or current.
1469  * NOTE: this *will* disable the regulator output even if other consumer
1470  * devices have it enabled. This should be used for situations when device
1471  * damage will likely occur if the regulator is not disabled (e.g. over temp).
1472  */
1473 int regulator_force_disable(struct regulator *regulator)
1474 {
1475 	int ret;
1476 
1477 	mutex_lock(&regulator->rdev->mutex);
1478 	regulator->uA_load = 0;
1479 	ret = _regulator_force_disable(regulator->rdev);
1480 	mutex_unlock(&regulator->rdev->mutex);
1481 	return ret;
1482 }
1483 EXPORT_SYMBOL_GPL(regulator_force_disable);
1484 
1485 static int _regulator_is_enabled(struct regulator_dev *rdev)
1486 {
1487 	/* If we don't know then assume that the regulator is always on */
1488 	if (!rdev->desc->ops->is_enabled)
1489 		return 1;
1490 
1491 	return rdev->desc->ops->is_enabled(rdev);
1492 }
1493 
1494 /**
1495  * regulator_is_enabled - is the regulator output enabled
1496  * @regulator: regulator source
1497  *
1498  * Returns positive if the regulator driver backing the source/client
1499  * has requested that the device be enabled, zero if it hasn't, else a
1500  * negative errno code.
1501  *
1502  * Note that the device backing this regulator handle can have multiple
1503  * users, so it might be enabled even if regulator_enable() was never
1504  * called for this particular source.
1505  */
1506 int regulator_is_enabled(struct regulator *regulator)
1507 {
1508 	int ret;
1509 
1510 	mutex_lock(&regulator->rdev->mutex);
1511 	ret = _regulator_is_enabled(regulator->rdev);
1512 	mutex_unlock(&regulator->rdev->mutex);
1513 
1514 	return ret;
1515 }
1516 EXPORT_SYMBOL_GPL(regulator_is_enabled);
1517 
1518 /**
1519  * regulator_count_voltages - count regulator_list_voltage() selectors
1520  * @regulator: regulator source
1521  *
1522  * Returns number of selectors, or negative errno.  Selectors are
1523  * numbered starting at zero, and typically correspond to bitfields
1524  * in hardware registers.
1525  */
1526 int regulator_count_voltages(struct regulator *regulator)
1527 {
1528 	struct regulator_dev	*rdev = regulator->rdev;
1529 
1530 	return rdev->desc->n_voltages ? : -EINVAL;
1531 }
1532 EXPORT_SYMBOL_GPL(regulator_count_voltages);
1533 
1534 /**
1535  * regulator_list_voltage - enumerate supported voltages
1536  * @regulator: regulator source
1537  * @selector: identify voltage to list
1538  * Context: can sleep
1539  *
1540  * Returns a voltage that can be passed to @regulator_set_voltage(),
1541  * zero if this selector code can't be used on this sytem, or a
1542  * negative errno.
1543  */
1544 int regulator_list_voltage(struct regulator *regulator, unsigned selector)
1545 {
1546 	struct regulator_dev	*rdev = regulator->rdev;
1547 	struct regulator_ops	*ops = rdev->desc->ops;
1548 	int			ret;
1549 
1550 	if (!ops->list_voltage || selector >= rdev->desc->n_voltages)
1551 		return -EINVAL;
1552 
1553 	mutex_lock(&rdev->mutex);
1554 	ret = ops->list_voltage(rdev, selector);
1555 	mutex_unlock(&rdev->mutex);
1556 
1557 	if (ret > 0) {
1558 		if (ret < rdev->constraints->min_uV)
1559 			ret = 0;
1560 		else if (ret > rdev->constraints->max_uV)
1561 			ret = 0;
1562 	}
1563 
1564 	return ret;
1565 }
1566 EXPORT_SYMBOL_GPL(regulator_list_voltage);
1567 
1568 /**
1569  * regulator_is_supported_voltage - check if a voltage range can be supported
1570  *
1571  * @regulator: Regulator to check.
1572  * @min_uV: Minimum required voltage in uV.
1573  * @max_uV: Maximum required voltage in uV.
1574  *
1575  * Returns a boolean or a negative error code.
1576  */
1577 int regulator_is_supported_voltage(struct regulator *regulator,
1578 				   int min_uV, int max_uV)
1579 {
1580 	int i, voltages, ret;
1581 
1582 	ret = regulator_count_voltages(regulator);
1583 	if (ret < 0)
1584 		return ret;
1585 	voltages = ret;
1586 
1587 	for (i = 0; i < voltages; i++) {
1588 		ret = regulator_list_voltage(regulator, i);
1589 
1590 		if (ret >= min_uV && ret <= max_uV)
1591 			return 1;
1592 	}
1593 
1594 	return 0;
1595 }
1596 
1597 /**
1598  * regulator_set_voltage - set regulator output voltage
1599  * @regulator: regulator source
1600  * @min_uV: Minimum required voltage in uV
1601  * @max_uV: Maximum acceptable voltage in uV
1602  *
1603  * Sets a voltage regulator to the desired output voltage. This can be set
1604  * during any regulator state. IOW, regulator can be disabled or enabled.
1605  *
1606  * If the regulator is enabled then the voltage will change to the new value
1607  * immediately otherwise if the regulator is disabled the regulator will
1608  * output at the new voltage when enabled.
1609  *
1610  * NOTE: If the regulator is shared between several devices then the lowest
1611  * request voltage that meets the system constraints will be used.
1612  * Regulator system constraints must be set for this regulator before
1613  * calling this function otherwise this call will fail.
1614  */
1615 int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV)
1616 {
1617 	struct regulator_dev *rdev = regulator->rdev;
1618 	int ret;
1619 
1620 	mutex_lock(&rdev->mutex);
1621 
1622 	/* sanity check */
1623 	if (!rdev->desc->ops->set_voltage) {
1624 		ret = -EINVAL;
1625 		goto out;
1626 	}
1627 
1628 	/* constraints check */
1629 	ret = regulator_check_voltage(rdev, &min_uV, &max_uV);
1630 	if (ret < 0)
1631 		goto out;
1632 	regulator->min_uV = min_uV;
1633 	regulator->max_uV = max_uV;
1634 	ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV);
1635 
1636 out:
1637 	_notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, NULL);
1638 	mutex_unlock(&rdev->mutex);
1639 	return ret;
1640 }
1641 EXPORT_SYMBOL_GPL(regulator_set_voltage);
1642 
1643 static int _regulator_get_voltage(struct regulator_dev *rdev)
1644 {
1645 	/* sanity check */
1646 	if (rdev->desc->ops->get_voltage)
1647 		return rdev->desc->ops->get_voltage(rdev);
1648 	else
1649 		return -EINVAL;
1650 }
1651 
1652 /**
1653  * regulator_get_voltage - get regulator output voltage
1654  * @regulator: regulator source
1655  *
1656  * This returns the current regulator voltage in uV.
1657  *
1658  * NOTE: If the regulator is disabled it will return the voltage value. This
1659  * function should not be used to determine regulator state.
1660  */
1661 int regulator_get_voltage(struct regulator *regulator)
1662 {
1663 	int ret;
1664 
1665 	mutex_lock(&regulator->rdev->mutex);
1666 
1667 	ret = _regulator_get_voltage(regulator->rdev);
1668 
1669 	mutex_unlock(&regulator->rdev->mutex);
1670 
1671 	return ret;
1672 }
1673 EXPORT_SYMBOL_GPL(regulator_get_voltage);
1674 
1675 /**
1676  * regulator_set_current_limit - set regulator output current limit
1677  * @regulator: regulator source
1678  * @min_uA: Minimuum supported current in uA
1679  * @max_uA: Maximum supported current in uA
1680  *
1681  * Sets current sink to the desired output current. This can be set during
1682  * any regulator state. IOW, regulator can be disabled or enabled.
1683  *
1684  * If the regulator is enabled then the current will change to the new value
1685  * immediately otherwise if the regulator is disabled the regulator will
1686  * output at the new current when enabled.
1687  *
1688  * NOTE: Regulator system constraints must be set for this regulator before
1689  * calling this function otherwise this call will fail.
1690  */
1691 int regulator_set_current_limit(struct regulator *regulator,
1692 			       int min_uA, int max_uA)
1693 {
1694 	struct regulator_dev *rdev = regulator->rdev;
1695 	int ret;
1696 
1697 	mutex_lock(&rdev->mutex);
1698 
1699 	/* sanity check */
1700 	if (!rdev->desc->ops->set_current_limit) {
1701 		ret = -EINVAL;
1702 		goto out;
1703 	}
1704 
1705 	/* constraints check */
1706 	ret = regulator_check_current_limit(rdev, &min_uA, &max_uA);
1707 	if (ret < 0)
1708 		goto out;
1709 
1710 	ret = rdev->desc->ops->set_current_limit(rdev, min_uA, max_uA);
1711 out:
1712 	mutex_unlock(&rdev->mutex);
1713 	return ret;
1714 }
1715 EXPORT_SYMBOL_GPL(regulator_set_current_limit);
1716 
1717 static int _regulator_get_current_limit(struct regulator_dev *rdev)
1718 {
1719 	int ret;
1720 
1721 	mutex_lock(&rdev->mutex);
1722 
1723 	/* sanity check */
1724 	if (!rdev->desc->ops->get_current_limit) {
1725 		ret = -EINVAL;
1726 		goto out;
1727 	}
1728 
1729 	ret = rdev->desc->ops->get_current_limit(rdev);
1730 out:
1731 	mutex_unlock(&rdev->mutex);
1732 	return ret;
1733 }
1734 
1735 /**
1736  * regulator_get_current_limit - get regulator output current
1737  * @regulator: regulator source
1738  *
1739  * This returns the current supplied by the specified current sink in uA.
1740  *
1741  * NOTE: If the regulator is disabled it will return the current value. This
1742  * function should not be used to determine regulator state.
1743  */
1744 int regulator_get_current_limit(struct regulator *regulator)
1745 {
1746 	return _regulator_get_current_limit(regulator->rdev);
1747 }
1748 EXPORT_SYMBOL_GPL(regulator_get_current_limit);
1749 
1750 /**
1751  * regulator_set_mode - set regulator operating mode
1752  * @regulator: regulator source
1753  * @mode: operating mode - one of the REGULATOR_MODE constants
1754  *
1755  * Set regulator operating mode to increase regulator efficiency or improve
1756  * regulation performance.
1757  *
1758  * NOTE: Regulator system constraints must be set for this regulator before
1759  * calling this function otherwise this call will fail.
1760  */
1761 int regulator_set_mode(struct regulator *regulator, unsigned int mode)
1762 {
1763 	struct regulator_dev *rdev = regulator->rdev;
1764 	int ret;
1765 
1766 	mutex_lock(&rdev->mutex);
1767 
1768 	/* sanity check */
1769 	if (!rdev->desc->ops->set_mode) {
1770 		ret = -EINVAL;
1771 		goto out;
1772 	}
1773 
1774 	/* constraints check */
1775 	ret = regulator_check_mode(rdev, mode);
1776 	if (ret < 0)
1777 		goto out;
1778 
1779 	ret = rdev->desc->ops->set_mode(rdev, mode);
1780 out:
1781 	mutex_unlock(&rdev->mutex);
1782 	return ret;
1783 }
1784 EXPORT_SYMBOL_GPL(regulator_set_mode);
1785 
1786 static unsigned int _regulator_get_mode(struct regulator_dev *rdev)
1787 {
1788 	int ret;
1789 
1790 	mutex_lock(&rdev->mutex);
1791 
1792 	/* sanity check */
1793 	if (!rdev->desc->ops->get_mode) {
1794 		ret = -EINVAL;
1795 		goto out;
1796 	}
1797 
1798 	ret = rdev->desc->ops->get_mode(rdev);
1799 out:
1800 	mutex_unlock(&rdev->mutex);
1801 	return ret;
1802 }
1803 
1804 /**
1805  * regulator_get_mode - get regulator operating mode
1806  * @regulator: regulator source
1807  *
1808  * Get the current regulator operating mode.
1809  */
1810 unsigned int regulator_get_mode(struct regulator *regulator)
1811 {
1812 	return _regulator_get_mode(regulator->rdev);
1813 }
1814 EXPORT_SYMBOL_GPL(regulator_get_mode);
1815 
1816 /**
1817  * regulator_set_optimum_mode - set regulator optimum operating mode
1818  * @regulator: regulator source
1819  * @uA_load: load current
1820  *
1821  * Notifies the regulator core of a new device load. This is then used by
1822  * DRMS (if enabled by constraints) to set the most efficient regulator
1823  * operating mode for the new regulator loading.
1824  *
1825  * Consumer devices notify their supply regulator of the maximum power
1826  * they will require (can be taken from device datasheet in the power
1827  * consumption tables) when they change operational status and hence power
1828  * state. Examples of operational state changes that can affect power
1829  * consumption are :-
1830  *
1831  *    o Device is opened / closed.
1832  *    o Device I/O is about to begin or has just finished.
1833  *    o Device is idling in between work.
1834  *
1835  * This information is also exported via sysfs to userspace.
1836  *
1837  * DRMS will sum the total requested load on the regulator and change
1838  * to the most efficient operating mode if platform constraints allow.
1839  *
1840  * Returns the new regulator mode or error.
1841  */
1842 int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
1843 {
1844 	struct regulator_dev *rdev = regulator->rdev;
1845 	struct regulator *consumer;
1846 	int ret, output_uV, input_uV, total_uA_load = 0;
1847 	unsigned int mode;
1848 
1849 	mutex_lock(&rdev->mutex);
1850 
1851 	regulator->uA_load = uA_load;
1852 	ret = regulator_check_drms(rdev);
1853 	if (ret < 0)
1854 		goto out;
1855 	ret = -EINVAL;
1856 
1857 	/* sanity check */
1858 	if (!rdev->desc->ops->get_optimum_mode)
1859 		goto out;
1860 
1861 	/* get output voltage */
1862 	output_uV = rdev->desc->ops->get_voltage(rdev);
1863 	if (output_uV <= 0) {
1864 		printk(KERN_ERR "%s: invalid output voltage found for %s\n",
1865 			__func__, rdev_get_name(rdev));
1866 		goto out;
1867 	}
1868 
1869 	/* get input voltage */
1870 	if (rdev->supply && rdev->supply->desc->ops->get_voltage)
1871 		input_uV = rdev->supply->desc->ops->get_voltage(rdev->supply);
1872 	else
1873 		input_uV = rdev->constraints->input_uV;
1874 	if (input_uV <= 0) {
1875 		printk(KERN_ERR "%s: invalid input voltage found for %s\n",
1876 			__func__, rdev_get_name(rdev));
1877 		goto out;
1878 	}
1879 
1880 	/* calc total requested load for this regulator */
1881 	list_for_each_entry(consumer, &rdev->consumer_list, list)
1882 		total_uA_load += consumer->uA_load;
1883 
1884 	mode = rdev->desc->ops->get_optimum_mode(rdev,
1885 						 input_uV, output_uV,
1886 						 total_uA_load);
1887 	ret = regulator_check_mode(rdev, mode);
1888 	if (ret < 0) {
1889 		printk(KERN_ERR "%s: failed to get optimum mode for %s @"
1890 			" %d uA %d -> %d uV\n", __func__, rdev_get_name(rdev),
1891 			total_uA_load, input_uV, output_uV);
1892 		goto out;
1893 	}
1894 
1895 	ret = rdev->desc->ops->set_mode(rdev, mode);
1896 	if (ret < 0) {
1897 		printk(KERN_ERR "%s: failed to set optimum mode %x for %s\n",
1898 			__func__, mode, rdev_get_name(rdev));
1899 		goto out;
1900 	}
1901 	ret = mode;
1902 out:
1903 	mutex_unlock(&rdev->mutex);
1904 	return ret;
1905 }
1906 EXPORT_SYMBOL_GPL(regulator_set_optimum_mode);
1907 
1908 /**
1909  * regulator_register_notifier - register regulator event notifier
1910  * @regulator: regulator source
1911  * @nb: notifier block
1912  *
1913  * Register notifier block to receive regulator events.
1914  */
1915 int regulator_register_notifier(struct regulator *regulator,
1916 			      struct notifier_block *nb)
1917 {
1918 	return blocking_notifier_chain_register(&regulator->rdev->notifier,
1919 						nb);
1920 }
1921 EXPORT_SYMBOL_GPL(regulator_register_notifier);
1922 
1923 /**
1924  * regulator_unregister_notifier - unregister regulator event notifier
1925  * @regulator: regulator source
1926  * @nb: notifier block
1927  *
1928  * Unregister regulator event notifier block.
1929  */
1930 int regulator_unregister_notifier(struct regulator *regulator,
1931 				struct notifier_block *nb)
1932 {
1933 	return blocking_notifier_chain_unregister(&regulator->rdev->notifier,
1934 						  nb);
1935 }
1936 EXPORT_SYMBOL_GPL(regulator_unregister_notifier);
1937 
1938 /* notify regulator consumers and downstream regulator consumers.
1939  * Note mutex must be held by caller.
1940  */
1941 static void _notifier_call_chain(struct regulator_dev *rdev,
1942 				  unsigned long event, void *data)
1943 {
1944 	struct regulator_dev *_rdev;
1945 
1946 	/* call rdev chain first */
1947 	blocking_notifier_call_chain(&rdev->notifier, event, NULL);
1948 
1949 	/* now notify regulator we supply */
1950 	list_for_each_entry(_rdev, &rdev->supply_list, slist) {
1951 		mutex_lock(&_rdev->mutex);
1952 		_notifier_call_chain(_rdev, event, data);
1953 		mutex_unlock(&_rdev->mutex);
1954 	}
1955 }
1956 
1957 /**
1958  * regulator_bulk_get - get multiple regulator consumers
1959  *
1960  * @dev:           Device to supply
1961  * @num_consumers: Number of consumers to register
1962  * @consumers:     Configuration of consumers; clients are stored here.
1963  *
1964  * @return 0 on success, an errno on failure.
1965  *
1966  * This helper function allows drivers to get several regulator
1967  * consumers in one operation.  If any of the regulators cannot be
1968  * acquired then any regulators that were allocated will be freed
1969  * before returning to the caller.
1970  */
1971 int regulator_bulk_get(struct device *dev, int num_consumers,
1972 		       struct regulator_bulk_data *consumers)
1973 {
1974 	int i;
1975 	int ret;
1976 
1977 	for (i = 0; i < num_consumers; i++)
1978 		consumers[i].consumer = NULL;
1979 
1980 	for (i = 0; i < num_consumers; i++) {
1981 		consumers[i].consumer = regulator_get(dev,
1982 						      consumers[i].supply);
1983 		if (IS_ERR(consumers[i].consumer)) {
1984 			ret = PTR_ERR(consumers[i].consumer);
1985 			dev_err(dev, "Failed to get supply '%s': %d\n",
1986 				consumers[i].supply, ret);
1987 			consumers[i].consumer = NULL;
1988 			goto err;
1989 		}
1990 	}
1991 
1992 	return 0;
1993 
1994 err:
1995 	for (i = 0; i < num_consumers && consumers[i].consumer; i++)
1996 		regulator_put(consumers[i].consumer);
1997 
1998 	return ret;
1999 }
2000 EXPORT_SYMBOL_GPL(regulator_bulk_get);
2001 
2002 /**
2003  * regulator_bulk_enable - enable multiple regulator consumers
2004  *
2005  * @num_consumers: Number of consumers
2006  * @consumers:     Consumer data; clients are stored here.
2007  * @return         0 on success, an errno on failure
2008  *
2009  * This convenience API allows consumers to enable multiple regulator
2010  * clients in a single API call.  If any consumers cannot be enabled
2011  * then any others that were enabled will be disabled again prior to
2012  * return.
2013  */
2014 int regulator_bulk_enable(int num_consumers,
2015 			  struct regulator_bulk_data *consumers)
2016 {
2017 	int i;
2018 	int ret;
2019 
2020 	for (i = 0; i < num_consumers; i++) {
2021 		ret = regulator_enable(consumers[i].consumer);
2022 		if (ret != 0)
2023 			goto err;
2024 	}
2025 
2026 	return 0;
2027 
2028 err:
2029 	printk(KERN_ERR "Failed to enable %s: %d\n", consumers[i].supply, ret);
2030 	for (--i; i >= 0; --i)
2031 		regulator_disable(consumers[i].consumer);
2032 
2033 	return ret;
2034 }
2035 EXPORT_SYMBOL_GPL(regulator_bulk_enable);
2036 
2037 /**
2038  * regulator_bulk_disable - disable multiple regulator consumers
2039  *
2040  * @num_consumers: Number of consumers
2041  * @consumers:     Consumer data; clients are stored here.
2042  * @return         0 on success, an errno on failure
2043  *
2044  * This convenience API allows consumers to disable multiple regulator
2045  * clients in a single API call.  If any consumers cannot be enabled
2046  * then any others that were disabled will be disabled again prior to
2047  * return.
2048  */
2049 int regulator_bulk_disable(int num_consumers,
2050 			   struct regulator_bulk_data *consumers)
2051 {
2052 	int i;
2053 	int ret;
2054 
2055 	for (i = 0; i < num_consumers; i++) {
2056 		ret = regulator_disable(consumers[i].consumer);
2057 		if (ret != 0)
2058 			goto err;
2059 	}
2060 
2061 	return 0;
2062 
2063 err:
2064 	printk(KERN_ERR "Failed to disable %s: %d\n", consumers[i].supply,
2065 	       ret);
2066 	for (--i; i >= 0; --i)
2067 		regulator_enable(consumers[i].consumer);
2068 
2069 	return ret;
2070 }
2071 EXPORT_SYMBOL_GPL(regulator_bulk_disable);
2072 
2073 /**
2074  * regulator_bulk_free - free multiple regulator consumers
2075  *
2076  * @num_consumers: Number of consumers
2077  * @consumers:     Consumer data; clients are stored here.
2078  *
2079  * This convenience API allows consumers to free multiple regulator
2080  * clients in a single API call.
2081  */
2082 void regulator_bulk_free(int num_consumers,
2083 			 struct regulator_bulk_data *consumers)
2084 {
2085 	int i;
2086 
2087 	for (i = 0; i < num_consumers; i++) {
2088 		regulator_put(consumers[i].consumer);
2089 		consumers[i].consumer = NULL;
2090 	}
2091 }
2092 EXPORT_SYMBOL_GPL(regulator_bulk_free);
2093 
2094 /**
2095  * regulator_notifier_call_chain - call regulator event notifier
2096  * @rdev: regulator source
2097  * @event: notifier block
2098  * @data: callback-specific data.
2099  *
2100  * Called by regulator drivers to notify clients a regulator event has
2101  * occurred. We also notify regulator clients downstream.
2102  * Note lock must be held by caller.
2103  */
2104 int regulator_notifier_call_chain(struct regulator_dev *rdev,
2105 				  unsigned long event, void *data)
2106 {
2107 	_notifier_call_chain(rdev, event, data);
2108 	return NOTIFY_DONE;
2109 
2110 }
2111 EXPORT_SYMBOL_GPL(regulator_notifier_call_chain);
2112 
2113 /**
2114  * regulator_mode_to_status - convert a regulator mode into a status
2115  *
2116  * @mode: Mode to convert
2117  *
2118  * Convert a regulator mode into a status.
2119  */
2120 int regulator_mode_to_status(unsigned int mode)
2121 {
2122 	switch (mode) {
2123 	case REGULATOR_MODE_FAST:
2124 		return REGULATOR_STATUS_FAST;
2125 	case REGULATOR_MODE_NORMAL:
2126 		return REGULATOR_STATUS_NORMAL;
2127 	case REGULATOR_MODE_IDLE:
2128 		return REGULATOR_STATUS_IDLE;
2129 	case REGULATOR_STATUS_STANDBY:
2130 		return REGULATOR_STATUS_STANDBY;
2131 	default:
2132 		return 0;
2133 	}
2134 }
2135 EXPORT_SYMBOL_GPL(regulator_mode_to_status);
2136 
2137 /*
2138  * To avoid cluttering sysfs (and memory) with useless state, only
2139  * create attributes that can be meaningfully displayed.
2140  */
2141 static int add_regulator_attributes(struct regulator_dev *rdev)
2142 {
2143 	struct device		*dev = &rdev->dev;
2144 	struct regulator_ops	*ops = rdev->desc->ops;
2145 	int			status = 0;
2146 
2147 	/* some attributes need specific methods to be displayed */
2148 	if (ops->get_voltage) {
2149 		status = device_create_file(dev, &dev_attr_microvolts);
2150 		if (status < 0)
2151 			return status;
2152 	}
2153 	if (ops->get_current_limit) {
2154 		status = device_create_file(dev, &dev_attr_microamps);
2155 		if (status < 0)
2156 			return status;
2157 	}
2158 	if (ops->get_mode) {
2159 		status = device_create_file(dev, &dev_attr_opmode);
2160 		if (status < 0)
2161 			return status;
2162 	}
2163 	if (ops->is_enabled) {
2164 		status = device_create_file(dev, &dev_attr_state);
2165 		if (status < 0)
2166 			return status;
2167 	}
2168 	if (ops->get_status) {
2169 		status = device_create_file(dev, &dev_attr_status);
2170 		if (status < 0)
2171 			return status;
2172 	}
2173 
2174 	/* some attributes are type-specific */
2175 	if (rdev->desc->type == REGULATOR_CURRENT) {
2176 		status = device_create_file(dev, &dev_attr_requested_microamps);
2177 		if (status < 0)
2178 			return status;
2179 	}
2180 
2181 	/* all the other attributes exist to support constraints;
2182 	 * don't show them if there are no constraints, or if the
2183 	 * relevant supporting methods are missing.
2184 	 */
2185 	if (!rdev->constraints)
2186 		return status;
2187 
2188 	/* constraints need specific supporting methods */
2189 	if (ops->set_voltage) {
2190 		status = device_create_file(dev, &dev_attr_min_microvolts);
2191 		if (status < 0)
2192 			return status;
2193 		status = device_create_file(dev, &dev_attr_max_microvolts);
2194 		if (status < 0)
2195 			return status;
2196 	}
2197 	if (ops->set_current_limit) {
2198 		status = device_create_file(dev, &dev_attr_min_microamps);
2199 		if (status < 0)
2200 			return status;
2201 		status = device_create_file(dev, &dev_attr_max_microamps);
2202 		if (status < 0)
2203 			return status;
2204 	}
2205 
2206 	/* suspend mode constraints need multiple supporting methods */
2207 	if (!(ops->set_suspend_enable && ops->set_suspend_disable))
2208 		return status;
2209 
2210 	status = device_create_file(dev, &dev_attr_suspend_standby_state);
2211 	if (status < 0)
2212 		return status;
2213 	status = device_create_file(dev, &dev_attr_suspend_mem_state);
2214 	if (status < 0)
2215 		return status;
2216 	status = device_create_file(dev, &dev_attr_suspend_disk_state);
2217 	if (status < 0)
2218 		return status;
2219 
2220 	if (ops->set_suspend_voltage) {
2221 		status = device_create_file(dev,
2222 				&dev_attr_suspend_standby_microvolts);
2223 		if (status < 0)
2224 			return status;
2225 		status = device_create_file(dev,
2226 				&dev_attr_suspend_mem_microvolts);
2227 		if (status < 0)
2228 			return status;
2229 		status = device_create_file(dev,
2230 				&dev_attr_suspend_disk_microvolts);
2231 		if (status < 0)
2232 			return status;
2233 	}
2234 
2235 	if (ops->set_suspend_mode) {
2236 		status = device_create_file(dev,
2237 				&dev_attr_suspend_standby_mode);
2238 		if (status < 0)
2239 			return status;
2240 		status = device_create_file(dev,
2241 				&dev_attr_suspend_mem_mode);
2242 		if (status < 0)
2243 			return status;
2244 		status = device_create_file(dev,
2245 				&dev_attr_suspend_disk_mode);
2246 		if (status < 0)
2247 			return status;
2248 	}
2249 
2250 	return status;
2251 }
2252 
2253 /**
2254  * regulator_register - register regulator
2255  * @regulator_desc: regulator to register
2256  * @dev: struct device for the regulator
2257  * @init_data: platform provided init data, passed through by driver
2258  * @driver_data: private regulator data
2259  *
2260  * Called by regulator drivers to register a regulator.
2261  * Returns 0 on success.
2262  */
2263 struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
2264 	struct device *dev, struct regulator_init_data *init_data,
2265 	void *driver_data)
2266 {
2267 	static atomic_t regulator_no = ATOMIC_INIT(0);
2268 	struct regulator_dev *rdev;
2269 	int ret, i;
2270 
2271 	if (regulator_desc == NULL)
2272 		return ERR_PTR(-EINVAL);
2273 
2274 	if (regulator_desc->name == NULL || regulator_desc->ops == NULL)
2275 		return ERR_PTR(-EINVAL);
2276 
2277 	if (regulator_desc->type != REGULATOR_VOLTAGE &&
2278 	    regulator_desc->type != REGULATOR_CURRENT)
2279 		return ERR_PTR(-EINVAL);
2280 
2281 	if (!init_data)
2282 		return ERR_PTR(-EINVAL);
2283 
2284 	rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL);
2285 	if (rdev == NULL)
2286 		return ERR_PTR(-ENOMEM);
2287 
2288 	mutex_lock(&regulator_list_mutex);
2289 
2290 	mutex_init(&rdev->mutex);
2291 	rdev->reg_data = driver_data;
2292 	rdev->owner = regulator_desc->owner;
2293 	rdev->desc = regulator_desc;
2294 	INIT_LIST_HEAD(&rdev->consumer_list);
2295 	INIT_LIST_HEAD(&rdev->supply_list);
2296 	INIT_LIST_HEAD(&rdev->list);
2297 	INIT_LIST_HEAD(&rdev->slist);
2298 	BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
2299 
2300 	/* preform any regulator specific init */
2301 	if (init_data->regulator_init) {
2302 		ret = init_data->regulator_init(rdev->reg_data);
2303 		if (ret < 0)
2304 			goto clean;
2305 	}
2306 
2307 	/* register with sysfs */
2308 	rdev->dev.class = &regulator_class;
2309 	rdev->dev.parent = dev;
2310 	dev_set_name(&rdev->dev, "regulator.%d",
2311 		     atomic_inc_return(&regulator_no) - 1);
2312 	ret = device_register(&rdev->dev);
2313 	if (ret != 0)
2314 		goto clean;
2315 
2316 	dev_set_drvdata(&rdev->dev, rdev);
2317 
2318 	/* set regulator constraints */
2319 	ret = set_machine_constraints(rdev, &init_data->constraints);
2320 	if (ret < 0)
2321 		goto scrub;
2322 
2323 	/* add attributes supported by this regulator */
2324 	ret = add_regulator_attributes(rdev);
2325 	if (ret < 0)
2326 		goto scrub;
2327 
2328 	/* set supply regulator if it exists */
2329 	if (init_data->supply_regulator_dev) {
2330 		ret = set_supply(rdev,
2331 			dev_get_drvdata(init_data->supply_regulator_dev));
2332 		if (ret < 0)
2333 			goto scrub;
2334 	}
2335 
2336 	/* add consumers devices */
2337 	for (i = 0; i < init_data->num_consumer_supplies; i++) {
2338 		ret = set_consumer_device_supply(rdev,
2339 			init_data->consumer_supplies[i].dev,
2340 			init_data->consumer_supplies[i].dev_name,
2341 			init_data->consumer_supplies[i].supply);
2342 		if (ret < 0) {
2343 			for (--i; i >= 0; i--)
2344 				unset_consumer_device_supply(rdev,
2345 				    init_data->consumer_supplies[i].dev_name,
2346 				    init_data->consumer_supplies[i].dev);
2347 			goto scrub;
2348 		}
2349 	}
2350 
2351 	list_add(&rdev->list, &regulator_list);
2352 out:
2353 	mutex_unlock(&regulator_list_mutex);
2354 	return rdev;
2355 
2356 scrub:
2357 	device_unregister(&rdev->dev);
2358 	/* device core frees rdev */
2359 	rdev = ERR_PTR(ret);
2360 	goto out;
2361 
2362 clean:
2363 	kfree(rdev);
2364 	rdev = ERR_PTR(ret);
2365 	goto out;
2366 }
2367 EXPORT_SYMBOL_GPL(regulator_register);
2368 
2369 /**
2370  * regulator_unregister - unregister regulator
2371  * @rdev: regulator to unregister
2372  *
2373  * Called by regulator drivers to unregister a regulator.
2374  */
2375 void regulator_unregister(struct regulator_dev *rdev)
2376 {
2377 	if (rdev == NULL)
2378 		return;
2379 
2380 	mutex_lock(&regulator_list_mutex);
2381 	WARN_ON(rdev->open_count);
2382 	unset_regulator_supplies(rdev);
2383 	list_del(&rdev->list);
2384 	if (rdev->supply)
2385 		sysfs_remove_link(&rdev->dev.kobj, "supply");
2386 	device_unregister(&rdev->dev);
2387 	mutex_unlock(&regulator_list_mutex);
2388 }
2389 EXPORT_SYMBOL_GPL(regulator_unregister);
2390 
2391 /**
2392  * regulator_suspend_prepare - prepare regulators for system wide suspend
2393  * @state: system suspend state
2394  *
2395  * Configure each regulator with it's suspend operating parameters for state.
2396  * This will usually be called by machine suspend code prior to supending.
2397  */
2398 int regulator_suspend_prepare(suspend_state_t state)
2399 {
2400 	struct regulator_dev *rdev;
2401 	int ret = 0;
2402 
2403 	/* ON is handled by regulator active state */
2404 	if (state == PM_SUSPEND_ON)
2405 		return -EINVAL;
2406 
2407 	mutex_lock(&regulator_list_mutex);
2408 	list_for_each_entry(rdev, &regulator_list, list) {
2409 
2410 		mutex_lock(&rdev->mutex);
2411 		ret = suspend_prepare(rdev, state);
2412 		mutex_unlock(&rdev->mutex);
2413 
2414 		if (ret < 0) {
2415 			printk(KERN_ERR "%s: failed to prepare %s\n",
2416 				__func__, rdev_get_name(rdev));
2417 			goto out;
2418 		}
2419 	}
2420 out:
2421 	mutex_unlock(&regulator_list_mutex);
2422 	return ret;
2423 }
2424 EXPORT_SYMBOL_GPL(regulator_suspend_prepare);
2425 
2426 /**
2427  * regulator_has_full_constraints - the system has fully specified constraints
2428  *
2429  * Calling this function will cause the regulator API to disable all
2430  * regulators which have a zero use count and don't have an always_on
2431  * constraint in a late_initcall.
2432  *
2433  * The intention is that this will become the default behaviour in a
2434  * future kernel release so users are encouraged to use this facility
2435  * now.
2436  */
2437 void regulator_has_full_constraints(void)
2438 {
2439 	has_full_constraints = 1;
2440 }
2441 EXPORT_SYMBOL_GPL(regulator_has_full_constraints);
2442 
2443 /**
2444  * rdev_get_drvdata - get rdev regulator driver data
2445  * @rdev: regulator
2446  *
2447  * Get rdev regulator driver private data. This call can be used in the
2448  * regulator driver context.
2449  */
2450 void *rdev_get_drvdata(struct regulator_dev *rdev)
2451 {
2452 	return rdev->reg_data;
2453 }
2454 EXPORT_SYMBOL_GPL(rdev_get_drvdata);
2455 
2456 /**
2457  * regulator_get_drvdata - get regulator driver data
2458  * @regulator: regulator
2459  *
2460  * Get regulator driver private data. This call can be used in the consumer
2461  * driver context when non API regulator specific functions need to be called.
2462  */
2463 void *regulator_get_drvdata(struct regulator *regulator)
2464 {
2465 	return regulator->rdev->reg_data;
2466 }
2467 EXPORT_SYMBOL_GPL(regulator_get_drvdata);
2468 
2469 /**
2470  * regulator_set_drvdata - set regulator driver data
2471  * @regulator: regulator
2472  * @data: data
2473  */
2474 void regulator_set_drvdata(struct regulator *regulator, void *data)
2475 {
2476 	regulator->rdev->reg_data = data;
2477 }
2478 EXPORT_SYMBOL_GPL(regulator_set_drvdata);
2479 
2480 /**
2481  * regulator_get_id - get regulator ID
2482  * @rdev: regulator
2483  */
2484 int rdev_get_id(struct regulator_dev *rdev)
2485 {
2486 	return rdev->desc->id;
2487 }
2488 EXPORT_SYMBOL_GPL(rdev_get_id);
2489 
2490 struct device *rdev_get_dev(struct regulator_dev *rdev)
2491 {
2492 	return &rdev->dev;
2493 }
2494 EXPORT_SYMBOL_GPL(rdev_get_dev);
2495 
2496 void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data)
2497 {
2498 	return reg_init_data->driver_data;
2499 }
2500 EXPORT_SYMBOL_GPL(regulator_get_init_drvdata);
2501 
2502 static int __init regulator_init(void)
2503 {
2504 	int ret;
2505 
2506 	printk(KERN_INFO "regulator: core version %s\n", REGULATOR_VERSION);
2507 
2508 	ret = class_register(&regulator_class);
2509 
2510 	regulator_dummy_init();
2511 
2512 	return ret;
2513 }
2514 
2515 /* init early to allow our consumers to complete system booting */
2516 core_initcall(regulator_init);
2517 
2518 static int __init regulator_init_complete(void)
2519 {
2520 	struct regulator_dev *rdev;
2521 	struct regulator_ops *ops;
2522 	struct regulation_constraints *c;
2523 	int enabled, ret;
2524 	const char *name;
2525 
2526 	mutex_lock(&regulator_list_mutex);
2527 
2528 	/* If we have a full configuration then disable any regulators
2529 	 * which are not in use or always_on.  This will become the
2530 	 * default behaviour in the future.
2531 	 */
2532 	list_for_each_entry(rdev, &regulator_list, list) {
2533 		ops = rdev->desc->ops;
2534 		c = rdev->constraints;
2535 
2536 		name = rdev_get_name(rdev);
2537 
2538 		if (!ops->disable || (c && c->always_on))
2539 			continue;
2540 
2541 		mutex_lock(&rdev->mutex);
2542 
2543 		if (rdev->use_count)
2544 			goto unlock;
2545 
2546 		/* If we can't read the status assume it's on. */
2547 		if (ops->is_enabled)
2548 			enabled = ops->is_enabled(rdev);
2549 		else
2550 			enabled = 1;
2551 
2552 		if (!enabled)
2553 			goto unlock;
2554 
2555 		if (has_full_constraints) {
2556 			/* We log since this may kill the system if it
2557 			 * goes wrong. */
2558 			printk(KERN_INFO "%s: disabling %s\n",
2559 			       __func__, name);
2560 			ret = ops->disable(rdev);
2561 			if (ret != 0) {
2562 				printk(KERN_ERR
2563 				       "%s: couldn't disable %s: %d\n",
2564 				       __func__, name, ret);
2565 			}
2566 		} else {
2567 			/* The intention is that in future we will
2568 			 * assume that full constraints are provided
2569 			 * so warn even if we aren't going to do
2570 			 * anything here.
2571 			 */
2572 			printk(KERN_WARNING
2573 			       "%s: incomplete constraints, leaving %s on\n",
2574 			       __func__, name);
2575 		}
2576 
2577 unlock:
2578 		mutex_unlock(&rdev->mutex);
2579 	}
2580 
2581 	mutex_unlock(&regulator_list_mutex);
2582 
2583 	return 0;
2584 }
2585 late_initcall(regulator_init_complete);
2586