summaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-03-24 16:50:46 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:45:42 -0800
commit013005f19308638bb76231fd652fe2e88f6d7ff7 (patch)
tree128963035cd46e4afb58b6c3c0b7feeb224a90b9 /arch/arm
parente039701ac72ab5326698a0d6bc20e3fa8b1d839b (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.c20
-rw-r--r--arch/arm/mach-tegra/board-cardhu.c1
-rw-r--r--arch/arm/mach-tegra/board-cardhu.h1
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