Skip to contentSkip to conversation

pxa/z2: Add regulator support

PATCH Superseded Marek Vasut 2 participants 4 messages Jun 7, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

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
index 967e8cb..cceffeb 100644
@@ -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
#1 lore raw

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)?

#2 lore raw

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

#3 lore raw

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.