SAMA5D3 Xplained: SPL broken after panic added to /lib/time.c:94
Eugen.Hristev at microchip.com
Eugen.Hristev at microchip.com
Mon Apr 5 14:44:41 CEST 2021
On 4/4/21 7:25 PM, Manuel Reis wrote:
> Hi again,
>
> I guess I misunderstood things a bit. Apologies for that.
> Nevertheless, timer_init in board_init_f is pointing to the weak
> timer_init in /lib/time.c, which is empty.
>
> Is there a way we can force start the pit timer?
> Any pointer would be very helpful. Let me know if you'd like me to do
> something in particular.
>
> Thanks
>
>
>
> On sex, 2 abr, 2021 at 18:15, Manuel Luís Reis <mluis.reis at gmail.com>
> wrote:
>> FYI:
>>
>> the output from serial port:
>> <debug_uart>
>> board_init_f spl_atmel.c 130 mem_init 182 ddr2_init mpddr.c 66udelay
>> lib time.c 196__udelay lib time.c 177Could not initialize timer (err
>> -11)
>>
>> udelay lib time.c 196__udelay lib time.c 177Could not initialize
>> timer (err -11)
>>
>> udelay lib time.c 196__udelay lib time.c 177Could not initialize
>> timer (err -11)
>> ...
>>
>>
>>
>>
>> On Fri, 2 Apr 2021 at 18:12, Manuel Luís Reis <mluis.reis at gmail.com>
>> wrote:
>>>
>>> > As it seems from the dump of dm_dump_all() the atmel_pit_timer is
>>> not
>>> > probed. I did a bit of debug and the dm_timer_init() ->
>>> > uclass_first_device() -> uclass_find_first_device() found zero
>>> timers
>>> > registered for UCLASS_TIMER. The driver is compiled. Also
>>> checked that
>>> > atmel_pit_timer probe function is not called at all. The question
>>> should be
>>> > why it is not probed at all?
>>>
>>> Hi,
>>>
>>> So, I put objdump and puts to some good use and could backtrace the
>>> initial error to a udelay call in ddr2_init function on mpddr.c
>>> file.
>>> This function is called from mem_init on
>>> sama5d3_xplained/sama5d3_xplained.c, which in turn is called from
>>> board_init_f on spl_atmel.c.
Hi Manuel,
As Sean Anderson pointed out : the call to timer must have not worked at
all before this change that now breaks things.
Have you tried removing the call to the timer from this mem_init, to see
if this makes the board boot correctly ?
In mem_init I guess there are multiple calls to this timer function.
>>> I couldn't, however, find which timer_init function is being called
>>> here. I still have a few to try, but disassembly gives me a pretty
>>> empty function:
>>>
>>> 00303690 <timer_init>:
>>> 303690: e3a00000 mov r0, #0
>>> 303694: e12fff1e bx lr
>>>
>>> This work didn't give me many answers, but I got a couple of newbie
>>> questions:
>>>
>>> Why is it calling board_init_f from spl_atmel.c and not spl_at91.c?
>>> Isn't the latter the appropriate architecture for this board?
>>> Do you know which timer_init function it is getting here? Could
>>> this
>>> be the reason timer isn't getting probed?
>>>
>>> Cheers,
>
>
More information about the U-Boot
mailing list