Exynos: Make sure ps_hold gets set in the SPL

Setting ps_hold ought to be one of the first things we do when we
first boot up. If we wait until the main u-boot runs we won't set it
in time and the PMIC may power us back off.

Signed-off-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Akshay Saraswat <akshay.s@samsung.com>
Acked-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
Doug Anderson 2014-05-29 21:40:54 +05:30 committed by Minkyu Kang
parent 0c04b1a83b
commit 567802bbd6
3 changed files with 12 additions and 1 deletions

View File

@ -39,6 +39,7 @@ enum {
DO_CLOCKS = 1 << 1, DO_CLOCKS = 1 << 1,
DO_MEM_RESET = 1 << 2, DO_MEM_RESET = 1 << 2,
DO_UART = 1 << 3, DO_UART = 1 << 3,
DO_POWER = 1 << 4,
}; };
int do_lowlevel_init(void) int do_lowlevel_init(void)
@ -62,9 +63,12 @@ int do_lowlevel_init(void)
break; break;
default: default:
/* This is a normal boot (not a wake from sleep) */ /* This is a normal boot (not a wake from sleep) */
actions = DO_CLOCKS | DO_MEM_RESET; actions = DO_CLOCKS | DO_MEM_RESET | DO_POWER;
} }
if (actions & DO_POWER)
set_ps_hold_ctrl();
if (actions & DO_CLOCKS) { if (actions & DO_CLOCKS) {
system_clock_init(); system_clock_init();
mem_ctrl_init(actions & DO_MEM_RESET); mem_ctrl_init(actions & DO_MEM_RESET);

View File

@ -112,6 +112,12 @@ static void exynos5_set_ps_hold_ctrl(void)
EXYNOS_PS_HOLD_CONTROL_DATA_HIGH); EXYNOS_PS_HOLD_CONTROL_DATA_HIGH);
} }
/*
* Set ps_hold data driving value high
* This enables the machine to stay powered on
* after the initial power-on condition goes away
* (e.g. power button).
*/
void set_ps_hold_ctrl(void) void set_ps_hold_ctrl(void)
{ {
if (cpu_is_exynos5()) if (cpu_is_exynos5())

View File

@ -1726,4 +1726,5 @@ uint32_t get_reset_status(void);
/* Read the resume function and call it */ /* Read the resume function and call it */
void power_exit_wakeup(void); void power_exit_wakeup(void);
#endif #endif