diff mbox

[U-Boot,v3] Exynos: Make sure ps_hold gets set in the SPL

Message ID 1401379854-30646-1-git-send-email-akshay.s@samsung.com
State Accepted
Delegated to: Minkyu Kang
Headers show

Commit Message

Akshay Saraswat May 29, 2014, 4:10 p.m. UTC
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.

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 v2:
	- Removed function power_init and directly called set_ps_hold_strl.

Changes since v1:
	- Added "Acked-by".

 arch/arm/cpu/armv7/exynos/lowlevel_init.c | 6 +++++-
 arch/arm/cpu/armv7/exynos/power.c         | 6 ++++++
 arch/arm/include/asm/arch-exynos/power.h  | 1 +
 3 files changed, 12 insertions(+), 1 deletion(-)

Comments

Minkyu Kang May 31, 2014, 5:24 a.m. UTC | #1
On 30/05/14 01:10, 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.
> 
> 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 v2:
> 	- Removed function power_init and directly called set_ps_hold_strl.
> 
> Changes since v1:
> 	- Added "Acked-by".
> 
>  arch/arm/cpu/armv7/exynos/lowlevel_init.c | 6 +++++-
>  arch/arm/cpu/armv7/exynos/power.c         | 6 ++++++
>  arch/arm/include/asm/arch-exynos/power.h  | 1 +
>  3 files changed, 12 insertions(+), 1 deletion(-)
> 

applied to u-boot-samsung

Thanks,
Minkyu Kang.
Simon Glass June 2, 2014, 9:18 p.m. UTC | #2
Hi Minkyu,

On 30 May 2014 23:24, Minkyu Kang <mk7.kang@samsung.com> wrote:
> On 30/05/14 01:10, 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.
>>
>> 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 v2:
>>       - Removed function power_init and directly called set_ps_hold_strl.
>>
>> Changes since v1:
>>       - Added "Acked-by".
>>
>>  arch/arm/cpu/armv7/exynos/lowlevel_init.c | 6 +++++-
>>  arch/arm/cpu/armv7/exynos/power.c         | 6 ++++++
>>  arch/arm/include/asm/arch-exynos/power.h  | 1 +
>>  3 files changed, 12 insertions(+), 1 deletion(-)
>>
>
> applied to u-boot-samsung

Now that we have this patch we may be able to revert eb0dd99?

Regards,
Simon
Minkyu Kang June 3, 2014, 1:16 a.m. UTC | #3
On 03/06/14 06:18, Simon Glass wrote:
> Hi Minkyu,
> 
> On 30 May 2014 23:24, Minkyu Kang <mk7.kang@samsung.com> wrote:
>> On 30/05/14 01:10, 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.
>>>
>>> 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 v2:
>>>       - Removed function power_init and directly called set_ps_hold_strl.
>>>
>>> Changes since v1:
>>>       - Added "Acked-by".
>>>
>>>  arch/arm/cpu/armv7/exynos/lowlevel_init.c | 6 +++++-
>>>  arch/arm/cpu/armv7/exynos/power.c         | 6 ++++++
>>>  arch/arm/include/asm/arch-exynos/power.h  | 1 +
>>>  3 files changed, 12 insertions(+), 1 deletion(-)
>>>
>>
>> applied to u-boot-samsung
> 
> Now that we have this patch we may be able to revert eb0dd99?
> 

Indeed.
I will.

Thanks,
Minkyu Kang.
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/exynos/lowlevel_init.c b/arch/arm/cpu/armv7/exynos/lowlevel_init.c
index 11fe5b8..83e1dcf 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)
+		set_ps_hold_ctrl();
+
 	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..638ee0b 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())
diff --git a/arch/arm/include/asm/arch-exynos/power.h b/arch/arm/include/asm/arch-exynos/power.h
index c9609a2..a4b41ad 100644
--- a/arch/arm/include/asm/arch-exynos/power.h
+++ b/arch/arm/include/asm/arch-exynos/power.h
@@ -1726,4 +1726,5 @@  uint32_t get_reset_status(void);
 
 /* Read the resume function and call it */
 void power_exit_wakeup(void);
+
 #endif