diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2011-03-24 16:50:46 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:45:42 -0800 |
commit | 013005f19308638bb76231fd652fe2e88f6d7ff7 (patch) | |
tree | 128963035cd46e4afb58b6c3c0b7feeb224a90b9 /arch/arm | |
parent | e039701ac72ab5326698a0d6bc20e3fa8b1d839b (diff) |
arm: tegra: cardhu: Supporting power off
Supporting the power off of device through the adb shell
"reboot -p" or from GUI with power off.
bug 787957
Original-Change-Id: I8bc65707a8c19b0d7cc8c506dfd5327f23c01511
Reviewed-on: http://git-master/r/24112
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Tested-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Ramachandrudu Kandhala <rkandhala@nvidia.com>
Original-Change-Id: I9e30bd5d143bad276f7bc2ee57e7887dcfd48233
Rebase-Id: R03068c9df6708907afb4a6833d9d80f26acfb4ee
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-power.c | 20 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu.h | 1 |
3 files changed, 21 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-power.c b/arch/arm/mach-tegra/board-cardhu-power.c index 44560cd2da6f..36566d02dd28 100644 --- a/arch/arm/mach-tegra/board-cardhu-power.c +++ b/arch/arm/mach-tegra/board-cardhu-power.c @@ -556,7 +556,7 @@ static int disable_load_switch_rail( } /* common to all boards */ -GREG_INIT(0, en_5v_cp, en_5v_cp, NULL, TPS6591X_GPIO_GP0, false, 0, 0, 0, 0); +GREG_INIT(0, en_5v_cp, en_5v_cp, NULL, TPS6591X_GPIO_GP0, false, 0, 0, 0, 0); GREG_INIT(1, en_5v0, en_5v0, NULL, TPS6591X_GPIO_GP2, false, 0, 0, 0, 0); GREG_INIT(2, en_ddr, en_ddr, NULL, TPS6591X_GPIO_GP6, false, 0, 0, 0, 0); GREG_INIT(3, en_3v3_sys, en_3v3_sys, NULL, TPS6591X_GPIO_GP7, false, 0, 0, 0, 0); @@ -696,3 +696,21 @@ int __init cardhu_suspend_init(void) tegra_init_suspend(&cardhu_suspend_data); return 0; } + +static void cardhu_power_off(void) +{ + int ret; + pr_err("cardhu: Powering off the device\n"); + ret = tps6591x_power_off(); + if (ret) + pr_err("cardhu: failed to power off\n"); + + while(1); +} + +int __init cardhu_power_off_init(void) +{ + pm_power_off = cardhu_power_off; + return 0; +} + diff --git a/arch/arm/mach-tegra/board-cardhu.c b/arch/arm/mach-tegra/board-cardhu.c index 47722eb6ddd4..a7d50ace523a 100644 --- a/arch/arm/mach-tegra/board-cardhu.c +++ b/arch/arm/mach-tegra/board-cardhu.c @@ -378,6 +378,7 @@ static void __init tegra_cardhu_init(void) cardhu_regulator_init(); cardhu_gpio_switch_regulator_init(); cardhu_suspend_init(); + cardhu_power_off_init(); cardhu_touch_init(); cardhu_usb_init(); cardhu_gps_init(); diff --git a/arch/arm/mach-tegra/board-cardhu.h b/arch/arm/mach-tegra/board-cardhu.h index aa6565a83745..dcafa77f5c99 100644 --- a/arch/arm/mach-tegra/board-cardhu.h +++ b/arch/arm/mach-tegra/board-cardhu.h @@ -121,5 +121,6 @@ int cardhu_keys_init(void); int cardhu_gpio_switch_regulator_init(void); int cardhu_pins_state_init(void); int cardhu_emc_init(void); +int cardhu_power_off_init(void); #endif |