diff options
author | Marek Vasut <marek.vasut@gmail.com> | 2010-07-28 08:27:49 +0200 |
---|---|---|
committer | Eric Miao <eric.y.miao@gmail.com> | 2010-08-05 14:32:48 +0800 |
commit | 3a27f6e0a164bd11cfef3a147a5250b6d5acfb89 (patch) | |
tree | cc598d855161584b7400435d50f33458923c329e /arch/arm/mach-pxa | |
parent | e6a8ef54774fb01f0cf7c6d3679c76a0b60fab3b (diff) | |
download | linux-3a27f6e0a164bd11cfef3a147a5250b6d5acfb89.tar.gz linux-3a27f6e0a164bd11cfef3a147a5250b6d5acfb89.tar.bz2 linux-3a27f6e0a164bd11cfef3a147a5250b6d5acfb89.zip |
[ARM] pxa/balloon3: Add MAX1586 PMIC support
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r-- | arch/arm/mach-pxa/balloon3.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c index e2eb0b79634e..9041340fee1d 100644 --- a/arch/arm/mach-pxa/balloon3.c +++ b/arch/arm/mach-pxa/balloon3.c @@ -29,6 +29,7 @@ #include <linux/i2c/pcf857x.h> #include <linux/mtd/nand.h> #include <linux/mtd/physmap.h> +#include <linux/regulator/max1586.h> #include <asm/setup.h> #include <asm/mach-types.h> @@ -680,6 +681,59 @@ static inline void balloon3_nand_init(void) {} #endif /****************************************************************************** + * Core power regulator + ******************************************************************************/ +#if defined(CONFIG_REGULATOR_MAX1586) || \ + defined(CONFIG_REGULATOR_MAX1586_MODULE) +static struct regulator_consumer_supply balloon3_max1587a_consumers[] = { + { + .supply = "vcc_core", + } +}; + +static struct regulator_init_data balloon3_max1587a_v3_info = { + .constraints = { + .name = "vcc_core range", + .min_uV = 900000, + .max_uV = 1705000, + .always_on = 1, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + }, + .consumer_supplies = balloon3_max1587a_consumers, + .num_consumer_supplies = ARRAY_SIZE(balloon3_max1587a_consumers), +}; + +static struct max1586_subdev_data balloon3_max1587a_subdevs[] = { + { + .name = "vcc_core", + .id = MAX1586_V3, + .platform_data = &balloon3_max1587a_v3_info, + } +}; + +static struct max1586_platform_data balloon3_max1587a_info = { + .subdevs = balloon3_max1587a_subdevs, + .num_subdevs = ARRAY_SIZE(balloon3_max1587a_subdevs), + .v3_gain = MAX1586_GAIN_R24_3k32, /* 730..1550 mV */ +}; + +static struct i2c_board_info __initdata balloon3_pi2c_board_info[] = { + { + I2C_BOARD_INFO("max1586", 0x14), + .platform_data = &balloon3_max1587a_info, + }, +}; + +static void __init balloon3_pmic_init(void) +{ + pxa27x_set_i2c_power_info(NULL); + i2c_register_board_info(1, ARRAY_AND_SIZE(balloon3_pi2c_board_info)); +} +#else +static inline void balloon3_pmic_init(void) {} +#endif + +/****************************************************************************** * Machine init ******************************************************************************/ static void __init balloon3_init(void) @@ -699,6 +753,7 @@ static void __init balloon3_init(void) balloon3_mmc_init(); balloon3_nand_init(); balloon3_nor_init(); + balloon3_pmic_init(); balloon3_ts_init(); balloon3_udc_init(); balloon3_uhc_init(); |