diff options
Diffstat (limited to 'arch/arm/mach-tegra/board-apalis_t30-power.c')
-rw-r--r-- | arch/arm/mach-tegra/board-apalis_t30-power.c | 19 |
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; } |