-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
regulator: provide a helper for registering a fixed regulator
Some devices require a regulator to work, but boards may not have a software controllable regulator for this device. Provide a helper function to make it simpler for these boards to register a fixed regulator as a dummy regulator. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
- Loading branch information
Sascha Hauer
authored and
Mark Brown
committed
Mar 3, 2012
1 parent
6b21d18
commit 613330a
Showing
3 changed files
with
67 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#include <linux/slab.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/regulator/machine.h> | ||
#include <linux/regulator/fixed.h> | ||
|
||
struct fixed_regulator_data { | ||
struct fixed_voltage_config cfg; | ||
struct regulator_init_data init_data; | ||
struct platform_device pdev; | ||
}; | ||
|
||
static void regulator_fixed_release(struct device *dev) | ||
{ | ||
struct fixed_regulator_data *data = container_of(dev, | ||
struct fixed_regulator_data, pdev.dev); | ||
kfree(data); | ||
} | ||
|
||
/** | ||
* regulator_register_fixed - register a no-op fixed regulator | ||
* @name: supply name | ||
* @id: platform device id | ||
* @supplies: consumers for this regulator | ||
* @num_supplies: number of consumers | ||
*/ | ||
struct platform_device *regulator_register_fixed(int id, | ||
struct regulator_consumer_supply *supplies, int num_supplies) | ||
{ | ||
struct fixed_regulator_data *data; | ||
|
||
data = kzalloc(sizeof(*data), GFP_KERNEL); | ||
if (!data) | ||
return NULL; | ||
|
||
data->cfg.supply_name = "dummy"; | ||
data->cfg.microvolts = 0; | ||
data->cfg.gpio = -EINVAL; | ||
data->cfg.enabled_at_boot = 1; | ||
data->cfg.init_data = &data->init_data; | ||
|
||
data->init_data.constraints.always_on = 1; | ||
data->init_data.consumer_supplies = supplies; | ||
data->init_data.num_consumer_supplies = num_supplies; | ||
|
||
data->pdev.name = "reg-fixed-voltage"; | ||
data->pdev.id = id; | ||
data->pdev.dev.platform_data = &data->cfg; | ||
data->pdev.dev.release = regulator_fixed_release; | ||
|
||
platform_device_register(&data->pdev); | ||
|
||
return &data->pdev; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters