Skip to content

Commit

Permalink
regulator: Add option for machine drivers to enable the dummy regulator
Browse files Browse the repository at this point in the history
Allow machine drivers to explicitly enable the use of the dummy regulator,
enabling simpler support for systems with only a few specific supplies
visible to software.

It is strongly recommended that this is not used on systems with
substantial software control over their PMICs, for maximum functionality
constrints should be as fully specified as possible.

Signed-off-by: Mark Brown <[email protected]>
Signed-off-by: Liam Girdwood <[email protected]>
  • Loading branch information
broonie authored and Liam Girdwood committed Oct 28, 2010
1 parent 993af7c commit 688fe99
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
3 changes: 1 addition & 2 deletions drivers/regulator/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@
#


obj-$(CONFIG_REGULATOR) += core.o
obj-$(CONFIG_REGULATOR) += core.o dummy.o
obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE) += fixed.o
obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o
obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER) += userspace-consumer.o

obj-$(CONFIG_REGULATOR_AD5398) += ad5398.o
obj-$(CONFIG_REGULATOR_BQ24022) += bq24022.o
obj-$(CONFIG_REGULATOR_DUMMY) += dummy.o
obj-$(CONFIG_REGULATOR_LP3971) += lp3971.o
obj-$(CONFIG_REGULATOR_LP3972) += lp3972.o
obj-$(CONFIG_REGULATOR_MAX1586) += max1586.o
Expand Down
22 changes: 22 additions & 0 deletions drivers/regulator/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ static DEFINE_MUTEX(regulator_list_mutex);
static LIST_HEAD(regulator_list);
static LIST_HEAD(regulator_map_list);
static int has_full_constraints;
static bool board_wants_dummy_regulator;

/*
* struct regulator_map
Expand Down Expand Up @@ -1108,6 +1109,11 @@ static struct regulator *_regulator_get(struct device *dev, const char *id,
}
}

if (board_wants_dummy_regulator) {
rdev = dummy_regulator_rdev;
goto found;
}

#ifdef CONFIG_REGULATOR_DUMMY
if (!devname)
devname = "deviceless";
Expand Down Expand Up @@ -2462,6 +2468,22 @@ void regulator_has_full_constraints(void)
}
EXPORT_SYMBOL_GPL(regulator_has_full_constraints);

/**
* regulator_use_dummy_regulator - Provide a dummy regulator when none is found
*
* Calling this function will cause the regulator API to provide a
* dummy regulator to consumers if no physical regulator is found,
* allowing most consumers to proceed as though a regulator were
* configured. This allows systems such as those with software
* controllable regulators for the CPU core only to be brought up more
* readily.
*/
void regulator_use_dummy_regulator(void)
{
board_wants_dummy_regulator = true;
}
EXPORT_SYMBOL_GPL(regulator_use_dummy_regulator);

/**
* rdev_get_drvdata - get rdev regulator driver data
* @rdev: regulator
Expand Down
5 changes: 5 additions & 0 deletions include/linux/regulator/machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,15 @@ int regulator_suspend_prepare(suspend_state_t state);

#ifdef CONFIG_REGULATOR
void regulator_has_full_constraints(void);
void regulator_use_dummy_regulator(void);
#else
static inline void regulator_has_full_constraints(void)
{
}

static inline void regulator_use_dummy_regulator(void)
{
}
#endif

#endif

0 comments on commit 688fe99

Please sign in to comment.