diff mbox

[U-Boot] dm: timer: Avoid using timer before it is ready

Message ID 1448774195-17976-1-git-send-email-sjg@chromium.org
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Simon Glass Nov. 29, 2015, 5:16 a.m. UTC
At present bootstage will try to read the timer very early after relocation.
When driver model it used to provide the timer, we cannot read it until
driver model is ready. Correct this by adding a separate stage for the
post-relocation bootstage init.

This fixes booting on chromebook_link.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 common/board_r.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Comments

Thomas Chou Nov. 29, 2015, 6:28 a.m. UTC | #1
Hi Simon,

On 2015年11月29日 13:16, Simon Glass wrote:
> At present bootstage will try to read the timer very early after relocation.
> When driver model it used to provide the timer, we cannot read it until
> driver model is ready. Correct this by adding a separate stage for the
> post-relocation bootstage init.
>
> This fixes booting on chromebook_link.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>   common/board_r.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
>

Acked-by: Thomas Chou <thomas@wytron.com.tw>
Bin Meng Nov. 29, 2015, 8:57 a.m. UTC | #2
Hi Simon,

On Sun, Nov 29, 2015 at 1:16 PM, Simon Glass <sjg@chromium.org> wrote:
> At present bootstage will try to read the timer very early after relocation.
> When driver model it used to provide the timer, we cannot read it until

When driver model is

> driver model is ready. Correct this by adding a separate stage for the
> post-relocation bootstage init.
>
> This fixes booting on chromebook_link.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

>  common/board_r.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/common/board_r.c b/common/board_r.c
> index f7118e8..a41fb54 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -109,7 +109,6 @@ static int initr_reloc(void)
>  {
>         /* tell others: relocation done */
>         gd->flags |= GD_FLG_RELOC | GD_FLG_FULL_MALLOC_INIT;
> -       bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
>
>         return 0;
>  }
> @@ -310,6 +309,14 @@ static int initr_dm(void)
>  }
>  #endif
>
> +static int initr_bootstage(void)
> +{
> +       /* We cannot do this before initr_dm() */
> +       bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
> +
> +       return 0;
> +}
> +
>  __weak int power_init_board(void)
>  {
>         return 0;
> @@ -748,6 +755,7 @@ init_fnc_t init_sequence_r[] = {
>  #ifdef CONFIG_DM
>         initr_dm,
>  #endif
> +       initr_bootstage,
>  #if defined(CONFIG_ARM) || defined(CONFIG_NDS32)
>         board_init,     /* Setup chipselects */
>  #endif
> --

Regards,
Bin
Mugunthan V N Nov. 30, 2015, 5:41 a.m. UTC | #3
On Sunday 29 November 2015 10:46 AM, Simon Glass wrote:
> At present bootstage will try to read the timer very early after relocation.
> When driver model it used to provide the timer, we cannot read it until
> driver model is ready. Correct this by adding a separate stage for the
> post-relocation bootstage init.
> 
> This fixes booting on chromebook_link.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---

Reviewed-by: Mugunthan V N <mugunthanvnm@ti.com>

Regards
Mugunthan V N
Simon Glass Dec. 1, 2015, 1:24 p.m. UTC | #4
On 29 November 2015 at 21:41, Mugunthan V N <mugunthanvnm@ti.com> wrote:
> On Sunday 29 November 2015 10:46 AM, Simon Glass wrote:
>> At present bootstage will try to read the timer very early after relocation.
>> When driver model it used to provide the timer, we cannot read it until
>> driver model is ready. Correct this by adding a separate stage for the
>> post-relocation bootstage init.
>>
>> This fixes booting on chromebook_link.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>
> Reviewed-by: Mugunthan V N <mugunthanvnm@ti.com>
>
> Regards
> Mugunthan V N

Applied to u-boot-dm.
diff mbox

Patch

diff --git a/common/board_r.c b/common/board_r.c
index f7118e8..a41fb54 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -109,7 +109,6 @@  static int initr_reloc(void)
 {
 	/* tell others: relocation done */
 	gd->flags |= GD_FLG_RELOC | GD_FLG_FULL_MALLOC_INIT;
-	bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
 
 	return 0;
 }
@@ -310,6 +309,14 @@  static int initr_dm(void)
 }
 #endif
 
+static int initr_bootstage(void)
+{
+	/* We cannot do this before initr_dm() */
+	bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
+
+	return 0;
+}
+
 __weak int power_init_board(void)
 {
 	return 0;
@@ -748,6 +755,7 @@  init_fnc_t init_sequence_r[] = {
 #ifdef CONFIG_DM
 	initr_dm,
 #endif
+	initr_bootstage,
 #if defined(CONFIG_ARM) || defined(CONFIG_NDS32)
 	board_init,	/* Setup chipselects */
 #endif