1 #include <linux/slab.h>
2 #include <linux/string.h>
3 #include <linux/platform_device.h>
4 #include <linux/regulator/machine.h>
5 #include <linux/regulator/fixed.h>
7 struct fixed_regulator_data
{
8 struct fixed_voltage_config cfg
;
9 struct regulator_init_data init_data
;
10 struct platform_device pdev
;
13 static void regulator_fixed_release(struct device
*dev
)
15 struct fixed_regulator_data
*data
= container_of(dev
,
16 struct fixed_regulator_data
, pdev
.dev
);
17 kfree(data
->cfg
.supply_name
);
22 * regulator_register_fixed_name - register a no-op fixed regulator
23 * @id: platform device id
24 * @name: name to be used for the regulator
25 * @supplies: consumers for this regulator
26 * @num_supplies: number of consumers
27 * @uv: voltage in microvolts
29 struct platform_device
*regulator_register_always_on(int id
, const char *name
,
30 struct regulator_consumer_supply
*supplies
, int num_supplies
, int uv
)
32 struct fixed_regulator_data
*data
;
34 data
= kzalloc(sizeof(*data
), GFP_KERNEL
);
38 data
->cfg
.supply_name
= kstrdup(name
, GFP_KERNEL
);
39 if (!data
->cfg
.supply_name
) {
44 data
->cfg
.microvolts
= uv
;
45 data
->cfg
.gpio
= -EINVAL
;
46 data
->cfg
.enabled_at_boot
= 1;
47 data
->cfg
.init_data
= &data
->init_data
;
49 data
->init_data
.constraints
.always_on
= 1;
50 data
->init_data
.consumer_supplies
= supplies
;
51 data
->init_data
.num_consumer_supplies
= num_supplies
;
53 data
->pdev
.name
= "reg-fixed-voltage";
55 data
->pdev
.dev
.platform_data
= &data
->cfg
;
56 data
->pdev
.dev
.release
= regulator_fixed_release
;
58 platform_device_register(&data
->pdev
);