summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-apalis_t30-power.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/board-apalis_t30-power.c')
-rw-r--r--arch/arm/mach-tegra/board-apalis_t30-power.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-apalis_t30-power.c b/arch/arm/mach-tegra/board-apalis_t30-power.c
index 7b2744a0fe8b..064c438b4b64 100644
--- a/arch/arm/mach-tegra/board-apalis_t30-power.c
+++ b/arch/arm/mach-tegra/board-apalis_t30-power.c
@@ -246,7 +246,11 @@ static struct tps6591x_platform_data tps_platform = {
.gpio_base = TPS6591X_GPIO_BASE,
.dev_slp_en = true,
.slp_keepon = &tps_slp_keepon,
+#ifdef FORCE_OFF_GPIO
+ .use_power_off = false,
+#else
.use_power_off = true,
+#endif
};
static struct i2c_board_info __initdata apalis_t30_regulators[] = {
@@ -418,6 +422,13 @@ static struct platform_device *fixed_reg_devs_apalis_t30[] = {
ADD_FIXED_REG(v3_3),
};
+#ifdef FORCE_OFF_GPIO
+static void apalis_t30_power_off(void)
+{
+ gpio_set_value(FORCE_OFF_GPIO, 0);
+}
+#endif /* FORCE_OFF_GPIO */
+
int __init apalis_t30_regulator_init(void)
{
void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
@@ -442,6 +453,14 @@ int __init apalis_t30_regulator_init(void)
pr_info("Registering the device TPS62360\n");
i2c_register_board_info(4, tps6236x_boardinfo, 1);
+#ifdef FORCE_OFF_GPIO
+ if (!pm_power_off) {
+ gpio_request(FORCE_OFF_GPIO, "FORCE_OFF_N");
+ gpio_direction_output(FORCE_OFF_GPIO, 1);
+ pm_power_off = apalis_t30_power_off;
+ }
+#endif /* FORCE_OFF_GPIO */
+
return 0;
}