* [U-Boot] [PATCH v2] Exynos: Make sure ps_hold gets set in the SPL
@ 2014-05-26 13:51 Akshay Saraswat
2014-05-29 1:06 ` Minkyu Kang
0 siblings, 1 reply; 2+ messages in thread
From: Akshay Saraswat @ 2014-05-26 13:51 UTC (permalink / raw)
To: u-boot
From: Doug Anderson <dianders@chromium.org>
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.
Moving ps_hold setup into the generic power_init() which
should contain code that's currently duplicated in the
board_power_init() of several boards.
Signed-off-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Akshay Saraswat <akshay.s@samsung.com>
Acked-by: Simon Glass <sjg@chromium.org>
---
Changes since v1:
- Added "Acked-by".
arch/arm/cpu/armv7/exynos/lowlevel_init.c | 6 +++++-
arch/arm/cpu/armv7/exynos/power.c | 14 ++++++++++++++
arch/arm/include/asm/arch-exynos/power.h | 8 ++++++++
3 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv7/exynos/lowlevel_init.c b/arch/arm/cpu/armv7/exynos/lowlevel_init.c
index 11fe5b8..ed966bc 100644
--- a/arch/arm/cpu/armv7/exynos/lowlevel_init.c
+++ b/arch/arm/cpu/armv7/exynos/lowlevel_init.c
@@ -39,6 +39,7 @@ enum {
DO_CLOCKS = 1 << 1,
DO_MEM_RESET = 1 << 2,
DO_UART = 1 << 3,
+ DO_POWER = 1 << 4,
};
int do_lowlevel_init(void)
@@ -60,9 +61,12 @@ int do_lowlevel_init(void)
break;
default:
/* 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)
+ power_init();
+
if (actions & DO_CLOCKS) {
system_clock_init();
mem_ctrl_init(actions & DO_MEM_RESET);
diff --git a/arch/arm/cpu/armv7/exynos/power.c b/arch/arm/cpu/armv7/exynos/power.c
index 563abd7..8999fb9 100644
--- a/arch/arm/cpu/armv7/exynos/power.c
+++ b/arch/arm/cpu/armv7/exynos/power.c
@@ -112,6 +112,12 @@ static void exynos5_set_ps_hold_ctrl(void)
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)
{
if (cpu_is_exynos5())
@@ -196,3 +202,11 @@ void power_exit_wakeup(void)
else
exynos4_power_exit_wakeup();
}
+
+int power_init(void)
+{
+ /* Assert PS_HOLD to indicate that we're up and running */
+ set_ps_hold_ctrl();
+
+ return 0;
+}
diff --git a/arch/arm/include/asm/arch-exynos/power.h b/arch/arm/include/asm/arch-exynos/power.h
index bcef43f..7957169 100644
--- a/arch/arm/include/asm/arch-exynos/power.h
+++ b/arch/arm/include/asm/arch-exynos/power.h
@@ -1726,4 +1726,12 @@ uint32_t get_reset_status(void);
/* Read the resume function and call it */
void power_exit_wakeup(void);
+
+/**
+ * SoC level power init
+ *
+ * @return Return 0 if ok, else -1
+ */
+int power_init(void);
+
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH v2] Exynos: Make sure ps_hold gets set in the SPL
2014-05-26 13:51 [U-Boot] [PATCH v2] Exynos: Make sure ps_hold gets set in the SPL Akshay Saraswat
@ 2014-05-29 1:06 ` Minkyu Kang
0 siblings, 0 replies; 2+ messages in thread
From: Minkyu Kang @ 2014-05-29 1:06 UTC (permalink / raw)
To: u-boot
Dear Akshay Saraswat,
On 26/05/14 22:51, Akshay Saraswat wrote:
> From: Doug Anderson <dianders@chromium.org>
>
> 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.
>
> Moving ps_hold setup into the generic power_init() which
> should contain code that's currently duplicated in the
> board_power_init() of several boards.
>
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> Signed-off-by: Akshay Saraswat <akshay.s@samsung.com>
> Acked-by: Simon Glass <sjg@chromium.org>
> ---
> Changes since v1:
> - Added "Acked-by".
>
> arch/arm/cpu/armv7/exynos/lowlevel_init.c | 6 +++++-
> arch/arm/cpu/armv7/exynos/power.c | 14 ++++++++++++++
> arch/arm/include/asm/arch-exynos/power.h | 8 ++++++++
> 3 files changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/cpu/armv7/exynos/lowlevel_init.c b/arch/arm/cpu/armv7/exynos/lowlevel_init.c
> index 11fe5b8..ed966bc 100644
> --- a/arch/arm/cpu/armv7/exynos/lowlevel_init.c
> +++ b/arch/arm/cpu/armv7/exynos/lowlevel_init.c
> @@ -39,6 +39,7 @@ enum {
> DO_CLOCKS = 1 << 1,
> DO_MEM_RESET = 1 << 2,
> DO_UART = 1 << 3,
> + DO_POWER = 1 << 4,
> };
>
> int do_lowlevel_init(void)
> @@ -60,9 +61,12 @@ int do_lowlevel_init(void)
> break;
> default:
> /* 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)
> + power_init();
I think we don't have to make new function.
Please call set_ps_hold_ctrl directly.
Thanks,
Minkyu Kang.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-05-29 1:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-26 13:51 [U-Boot] [PATCH v2] Exynos: Make sure ps_hold gets set in the SPL Akshay Saraswat
2014-05-29 1:06 ` Minkyu Kang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox