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