diff options
author | Wolfram Sang <w.sang@pengutronix.de> | 2011-07-15 22:11:03 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-08-23 08:56:14 +0200 |
commit | e55e48ff6952800a48d4325934f373354cd0c533 (patch) | |
tree | 1cafca34e63b3a875cefbbc894cbcc68659793d0 /arch/arm/mach-mxs/mach-mx28evk.c | |
parent | ARM: mxs: correct the using of frac div for saif (diff) | |
download | linux-e55e48ff6952800a48d4325934f373354cd0c533.tar.xz linux-e55e48ff6952800a48d4325934f373354cd0c533.zip |
arm: mxs: mx28evk: add fixed regulators for audio
Add these fixed regulators to enable basic audio-support until full regulator
support is done.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mxs/mach-mx28evk.c')
-rw-r--r-- | arch/arm/mach-mxs/mach-mx28evk.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/arch/arm/mach-mxs/mach-mx28evk.c b/arch/arm/mach-mxs/mach-mx28evk.c index 521c4d5fd90f..8e810a548036 100644 --- a/arch/arm/mach-mxs/mach-mx28evk.c +++ b/arch/arm/mach-mxs/mach-mx28evk.c @@ -19,6 +19,8 @@ #include <linux/irq.h> #include <linux/clk.h> #include <linux/i2c.h> +#include <linux/regulator/machine.h> +#include <linux/regulator/fixed.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -377,6 +379,44 @@ static struct i2c_board_info mxs_i2c0_board_info[] __initdata = { }, }; +#if defined(CONFIG_REGULATOR_FIXED_VOLTAGE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE) +static struct regulator_consumer_supply mx28evk_audio_consumer_supplies[] = { + REGULATOR_SUPPLY("VDDA", "0-000a"), + REGULATOR_SUPPLY("VDDIO", "0-000a"), +}; + +static struct regulator_init_data mx28evk_vdd_reg_init_data = { + .constraints = { + .name = "3V3", + .always_on = 1, + }, + .consumer_supplies = mx28evk_audio_consumer_supplies, + .num_consumer_supplies = ARRAY_SIZE(mx28evk_audio_consumer_supplies), +}; + +static struct fixed_voltage_config mx28evk_vdd_pdata = { + .supply_name = "board-3V3", + .microvolts = 3300000, + .gpio = -EINVAL, + .enabled_at_boot = 1, + .init_data = &mx28evk_vdd_reg_init_data, +}; +static struct platform_device mx28evk_voltage_regulator = { + .name = "reg-fixed-voltage", + .id = -1, + .num_resources = 0, + .dev = { + .platform_data = &mx28evk_vdd_pdata, + }, +}; +static void __init mx28evk_add_regulators(void) +{ + platform_device_register(&mx28evk_voltage_regulator); +} +#else +static void __init mx28evk_add_regulators(void) {} +#endif + static void __init mx28evk_init(void) { int ret; @@ -424,6 +464,8 @@ static void __init mx28evk_init(void) i2c_register_board_info(0, mxs_i2c0_board_info, ARRAY_SIZE(mxs_i2c0_board_info)); + mx28evk_add_regulators(); + mxs_add_platform_device("mxs-sgtl5000", 0, NULL, 0, NULL, 0); |