From: Vignesh R <vigneshr@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] QSPI XIP boot on am437x
Date: Mon, 16 Nov 2015 16:00:58 +0530 [thread overview]
Message-ID: <5649B062.2020007@ti.com> (raw)
In-Reply-To: <20151113072815.49a89829@lilith>
On 11/13/2015 11:58 AM, Albert ARIBAUD wrote:
> Hello Vignesh,
>
> On Fri, 13 Nov 2015 11:22:19 +0530, Vignesh R <vigneshr@ti.com> wrote:
>> Hi,
>>
>> On 11/11/2015 02:33 PM, Albert ARIBAUD wrote:
>>
>> [...]
>>
>>> Alternatively, you could test the patch at
>>>
>>> http://patchwork.ozlabs.org/patch/542558/
>>>
>>> Let us know if this solves your issue. If it does, then it will confirm
>>> the issue is with arch_setup_gd not being able to set up your GD for
>>> some reason.
>>>
>>> IMPORTANT: patch 542558 is *not* a final patch (there will be at least
>>> a v3), and may even never land in u-boot/master; but some equivalent will
>>> eventually do. Right now, patch 542558 is only a way to test if your
>>> issue is a GD one.
>>>
>>
>> The above patch affects the code that executes after s_init(), therefore
>> I don't think above patch matters (_main is run after s_init()).
>
> See (1) below.
>
>> As you said in your first reply "If s_init() runs before
>> board_init_f_mem(), then you must move it to
>> run after board_init_f_mem().", this is the problem with my case.
>> s_init() is running *before* setting up of global_data in
>> arch/arm/lib/crt0.S (in _main), hence IMO, calling serial_init() in
>> s_init() is wrong. This has to be moved to board_init_f() (in
>> arch/arm/cpu/armv7/am33xx/board.c).
>> The comment in arch/arm/cpu/armv7/lowlevel_init.S that calls s_init()
>> also says *not* to access global_data and not to try to start console.
>> Therefore, I intend to do something like this:
>>
>> diff --git a/arch/arm/cpu/armv7/am33xx/board.c
>> b/arch/arm/cpu/armv7/am33xx/board.c
>> index bd14326cf479..351fc37b0483 100644
>> --- a/arch/arm/cpu/armv7/am33xx/board.c
>> +++ b/arch/arm/cpu/armv7/am33xx/board.c
>> @@ -256,6 +256,11 @@ void board_init_f(ulong dummy)
>> {
>> board_early_init_f();
>> sdram_init();
>> +#if defined(CONFIG_NOR_BOOT) || defined(CONFIG_QSPI_BOOT)
>> + gd->baudrate = CONFIG_BAUDRATE;
>> + serial_init();
>> + gd->have_console = 1;
>> +#endif
>> }
>> #endif /* end CONFIG_SPL_BUILD */
>>
>> @@ -273,12 +278,6 @@ void s_init(void)
>> set_uart_mux_conf();
>> setup_clocks_for_console();
>> uart_soft_reset();
>> -#if defined(CONFIG_NOR_BOOT) || defined(CONFIG_QSPI_BOOT)
>> - /* TODO: This does not work, gd is not available yet */
>> - gd->baudrate = CONFIG_BAUDRATE;
>> - serial_init();
>> - gd->have_console = 1;
>> -#endif
>> #if defined(CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC)
>> /* Enable RTC32K clock */
>> rtc32k_enable();
>>
>> Do you see any issues with above change?
>
> (1) So your s_init runs even before board_init_f_mem(), right?
>
> Your working fix seems to imply that as long as s_init() is run after
> board_init_f_mem (and any time before board_init_f) it will work. If
> so, then another, fix, preferable to the above, would be that the call
> to s_init be moved between those to board_init_f_mem and board_init_f.
> Can you test that?
Yes, gd area gets initialized to 0 in board_init_f_mem(). Initializing
the console thereafter fixes the issue. There is nothing between call to
board_init_f_mem and board_init_f. board_init_f gets called right after
board_init_f_mem (in arch/arm/lib/crt0.S), therefore I thought of moved
in serial_init call to board_init_f as above.
--
Regards
Vignesh
next prev parent reply other threads:[~2015-11-16 10:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-10 8:59 [U-Boot] QSPI XIP boot on am437x Vignesh R
2015-11-10 12:14 ` Albert ARIBAUD
2015-11-11 6:12 ` R, Vignesh
2015-11-11 7:15 ` Albert ARIBAUD
2015-11-11 9:03 ` Albert ARIBAUD
2015-11-13 5:52 ` Vignesh R
2015-11-13 6:28 ` Albert ARIBAUD
2015-11-16 10:30 ` Vignesh R [this message]
2015-11-16 11:46 ` Albert ARIBAUD
2015-11-16 11:48 ` Vignesh R
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5649B062.2020007@ti.com \
--to=vigneshr@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.