From patchwork Mon Jan 28 11:26:38 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [U-Boot, 2/9, v7] EXYNOS5: Implement board_poweroff for Thermal Management Unit Date: Mon, 28 Jan 2013 01:26:38 -0000 From: Akshay Saraswat X-Patchwork-Id: 216163 Message-Id: <1359372405-17518-3-git-send-email-akshay.s@samsung.com> To: u-boot@lists.denx.de Adding API in power for system shutdown when tripping value is reached in Exynos Thermal Management Unit. Signed-off-by: Akshay Saraswat Acked-by: Simon Glass --- Changes since v6: - None. arch/arm/cpu/armv7/exynos/power.c | 15 +++++++++++++++ arch/arm/include/asm/arch-exynos/power.h | 1 + 2 files changed, 16 insertions(+) diff --git a/arch/arm/cpu/armv7/exynos/power.c b/arch/arm/cpu/armv7/exynos/power.c index d4bce6d..73f764e 100644 --- a/arch/arm/cpu/armv7/exynos/power.c +++ b/arch/arm/cpu/armv7/exynos/power.c @@ -95,3 +95,18 @@ void set_dp_phy_ctrl(unsigned int enable) if (cpu_is_exynos5()) exynos5_dp_phy_control(enable); } + +/* + * This function never returns. + * When called this function makes system hang and PAD driving value high + * which in turn makes system power down. + */ +void board_poweroff(void) +{ + struct exynos5_power *power = + (struct exynos5_power *)samsung_get_base_power(); + + clrbits_le32(&power->ps_hold_control, POWER_PS_HOLD_CONTROL_DATA_HIGH); + + hang(); +} diff --git a/arch/arm/include/asm/arch-exynos/power.h b/arch/arm/include/asm/arch-exynos/power.h index d2fdb59..7463036 100644 --- a/arch/arm/include/asm/arch-exynos/power.h +++ b/arch/arm/include/asm/arch-exynos/power.h @@ -863,5 +863,6 @@ void set_usbhost_phy_ctrl(unsigned int enable); void set_dp_phy_ctrl(unsigned int enable); #define EXYNOS_DP_PHY_ENABLE (1 << 0) +#define POWER_PS_HOLD_CONTROL_DATA_HIGH (1 << 8) #endif