pxa/z2: Add regulator support
Subsystems (3)
PATCH v2 1/1 pxa/z2: Add regulator support
Register TPS65023 regulator as found in Z2. The Z2 actually contains a TPS65021, but this chip is apparently compatible.
--- arch/arm/mach-pxa/z2.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 71 insertions(+), 0 deletions(-)
arch/arm/mach-pxa/z2.c +71 -0
@@ -27,6 +27,7 @@#include <linux/gpio.h> #include <linux/gpio_keys.h> #include <linux/delay.h> +#include <linux/regulator/machine.h> #include <asm/mach-types.h> #include <asm/mach/arch.h>
@@ -610,6 +611,75 @@ static inline void z2_spi_init(void) {}#endif /****************************************************************************** +* Core power regulator +******************************************************************************/ +#if defined(CONFIG_REGULATOR_TPS65023 ) || \ + defined(CONFIG_REGULATOR_TPS65023_MODULE ) +static struct regulator_consumer_supply z2_tps65021_consumers[] = { + { + .supply ="vcc_core" , + } +}; + +static struct regulator_init_data z2_tps65021_info[] = { + { + .constraints = { + .name ="vcc_core range" , + .min_uV =800000 , + .max_uV =1600000 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + }, + .consumer_supplies = z2_tps65021_consumers, + .num_consumer_supplies =ARRAY_SIZE (z2_tps65021_consumers), + }, { + .constraints = { + .name ="DCDC2" , + .min_uV =3300000 , + .max_uV =3300000 , + .always_on =1 , + }, + }, { + .constraints = { + .name ="DCDC3" , + .min_uV =1800000 , + .max_uV =1800000 , + .always_on =1 , + }, + }, { + .constraints = { + .name ="LDO1" , + .min_uV =1000000 , + .max_uV =3150000 , + .always_on =1 , + }, + }, { + .constraints = { + .name ="LDO2" , + .min_uV =1050000 , + .max_uV =3300000 , + .always_on =1 , + }, + } +}; + +static struct i2c_board_info __initdata z2_pi2c_board_info[] = { + { +I2C_BOARD_INFO ("tps65023" ,0x48 ), + .platform_data = &z2_tps65021_info, + }, +}; + +static void __init z2_pmic_init (void ) +{ +pxa27x_set_i2c_power_info (NULL ); +i2c_register_board_info (1 ,ARRAY_AND_SIZE (z2_pi2c_board_info)); +} +#else +static inline void z2_pmic_init (void ) {} +#endif + +/****************************************************************************** * Machine init ******************************************************************************/ static void __init z2_init (void )
@@ -629,6 +699,7 @@ static void __init z2_init(void)z2_pwm_init ();z2_leds_init ();z2_keys_init (); +z2_pmic_init (); }MACHINE_START (ZIPIT2 ,"Zipit Z2" )
Signature · 1 line
1.7.1
PATCH v2 1/1 pxa/z2: Add regulator support
Quoted 5 lines · Marek Vasut
arch/arm/mach-pxa/z2.c +5
-0+ }, { + .constraints = { + .name = "LDO1", + .min_uV = 1000000, + .max_uV = 3150000,
arch/arm/mach-pxa/z2.c static inline void z2_spi_init(void) {} · line 663
Quoted 10 lines
arch/arm/mach-pxa/z2.c +10
-0+ .always_on = 1, + }, + }, { + .constraints = { + .name = "LDO2", + .min_uV = 1050000, + .max_uV = 3300000, + .always_on = 1, + }, + }
Are you *sure* that the voltages for these regulators can be varied this much (especailly given that there are no consumers set up)?
PATCH v2 1/1 pxa/z2: Add regulator support
Dne Po 7. ?ervna 2010 13:39:10 Mark Brown napsal(a):
Quoted 11 lines · Marek Vasut
Quoted 10 lines
arch/arm/mach-pxa/z2.c +10
-0+ }, { + .constraints = { + .name = "LDO1", + .min_uV = 1000000, + .max_uV = 3150000, + .always_on = 1, + }, + }, { + .constraints = { + .name = "LDO2",
Quoted 8 lines
arch/arm/mach-pxa/z2.c static inline void z2_spi_init(void) {} · line 663
Quoted 5 lines
arch/arm/mach-pxa/z2.c +5
-0+ .min_uV = 1050000, + .max_uV = 3300000, + .always_on = 1, + }, + }Are you *sure* that the voltages for these regulators can be varied this much (especailly given that there are no consumers set up)?
These are not connected so I believe it doesn't matter. Though I'm still slightly unfamiliar with the regulator API. Here I should have CCed you, sorry.
Is this the correct way or is there some other way to just shut these off ?
Cheers
PATCH v2 1/1 pxa/z2: Add regulator support
Quoted 9 lines · Marek Vasut
Dne Po 7. ?ervna 2010 13:39:10 Mark Brown napsal(a):
Quoted 2 lines
Are you *sure* that the voltages for these regulators can be varied this much (especailly given that there are no consumers set up)?
These are not connected so I believe it doesn't matter. Though I'm still slightly unfamiliar with the regulator API. Here I should have CCed you, sorry.
Is this the correct way or is there some other way to just shut these off ?
Call regulator_has_full_constraints() in your machine driver, they'll be shut off at the end of boot when nothing is using them.