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