[U-Boot] [PATCH 4/4] MIPS: call debug_uart_init right before board_init_f

Marek Vasut
2017-04-23T17:08:42Z

On 04/23/2017 02:04 PM, Álvaro Fernández Rojas wrote:
> Hi Marek,
>
> El 23/04/2017 a las 13:44, Marek Vasut escribió:
>> On 04/23/2017 01:31 PM, Álvaro Fernández Rojas wrote:
>>> Hi Marek,
>>>
>>> El 23/04/2017 a las 13:09, Marek Vasut escribió:
>>>> On 04/23/2017 12:50 PM, Álvaro Fernández Rojas wrote:
>>>>> From: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>>>>>
>>>>> All MIPS boards that support debug uart are calling debug_uart_init right at
>>>>> the beginning of board_early_init_f.
>>>>> Instead of doing that, let's provide a generic call to debug_uart_init right
>>>>> before the call to board_init_f if debug uart is enabled.
>>>>>
>>>>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>>>>> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
>>>>> ---
>>>>> arch/mips/cpu/start.S | 6 ++++++
>>>>> 1 file changed, 6 insertions(+)
>>>>>
>>>>> diff --git a/arch/mips/cpu/start.S b/arch/mips/cpu/start.S
>>>>> index 6740fdf..f7dee81 100644
>>>>> --- a/arch/mips/cpu/start.S
>>>>> +++ b/arch/mips/cpu/start.S
>>>>> @@ -265,6 +265,12 @@ wr_done:
>>>>> setup_stack_gd
>>>>> #endif
>>>>>
>>>>> +#ifdef CONFIG_DEBUG_UART
>>>>> + PTR_LA t9, debug_uart_init
>>>>
>>>> This should be called from C code somewhere, in fact, doesn't SPL's
>>>> common code call debug_uart_init already ?
>>>
>>> Why should this be called from C code?
>>
>> Because the less stuff we have in assembler the better.
> ... or not.
>
>>
>>> BTW, I don't think that SPL common code calls debug_uart_init.
>>
>> That's where it would make sense, grepping through the source indicates
>> a lot of boards call this from their spl code. Also, you enter
>> board_init_f right below, so you can start there ...
> Actually I was going to do that and Daniel suggested otherwise :)
> https://lists.denx.de/pipermail/u-boot/2017-April/287388.html
> ---
> I think we should move this to MIPS start.S to support this for all MIPS
> boards in a generic way. Puttings following code between
> 'setup_stack_gd' and the jump to 'board_init_f' should work:
>
> #ifdef CONFIG_DEBUG_UART
> PTR_LA t9, debug_uart_init
> jalr t9
> nop
> #endif
> ---
> BTW, like Daniel I also think this is the proper way to go.

Can you elaborate why is it better to put more stuff into the assembler
rather than C? I'd love to hear the rationale for that.

I agree this should be called from common code , I disagree this should
be called from assembler.

--
Best regards,
Marek Vasut