[PATCH v7 4/4] configs: sama5d2: enable option CONFIG_ATMEL_TCB_TIMER

Clément Léger clement.leger at bootlin.com
Thu Mar 31 09:40:34 CEST 2022


Le Thu, 31 Mar 2022 05:59:02 +0000,
<Eugen.Hristev at microchip.com> a écrit :

> On 3/30/22 6:49 PM, Clément Léger wrote:
> > Le Tue, 22 Mar 2022 13:35:08 +0100,
> > Clément Léger <clement.leger at bootlin.com> a écrit :
> >   
> >> Le Tue, 22 Mar 2022 11:18:39 +0000,
> >> <Eugen.Hristev at microchip.com> a écrit :
> >>  
> > 
> > [...]
> >   
> >>>
> >>> Could not initialize timer (err -22)
> >>>
> >>> ...
> >>>
> >>>
> >>>
> >>> Could you investigate this please ?  
> >>
> >> Hi Eugen,
> >>
> >> Ok, I'll try to debug that !  
> > 
> > Hi Eugen, while debugging it, I found that there was actually one major
> > flaw. The clock that I used was the GLCK. If only this clock is
> > enabled, the TCB can not work, the tcb0_clk must also be enabled for the
> > TCB to start counting. It worked on my side because I forgot that I had
> > a quirk in OP-TEE that was enabling the clocks before starting U-Boot.
> > Without that, it actually could not work.
> > 
> > Since the tcb0_clk is needed, I switched the driver to use this one
> > only and it works well on a "bare" setup (ie without OP-TEE). I even
> > think it could not work with the tcb0_gclk since this one does not
> > correctly handles the case when the parent clock is the slow_clk (which
> > might be the case after booting) and in this case, will return 0 as
> > rate (this is by the way supported in your CCF branch).
> > 
> > Anyway, I fixed the driver to use the tcb0_clk and thus it should work
> > much better. I will send a V8 and it should work with U-Boot and the
> > SPL.
> > 
> > By the way, do you have any documentation which explains how to use
> > U-Boot SPL on sama5d2_xplained (or other) board ?  
> 
> Hi Clement,
> 
> I don't have any documentation at hand, but what I can say in a few 
> words is that once you build the SPL, you should have a file 
> spl/boot.bin and this binary should replace our stage2 at91 bootloader 
> at91bootstrap.
> 
> Unlike at91bootstrap, the SPL has all the drivers inside and can boot 
> from all supported media, however, SPL will read a dedicated CPU 
> register where the stage1 has written some bits representing the index 
> of the NVM *used to copy the boot.bin from* . The SPL will then attempt 
> to read the u-boot.bin from the same media. (you can alter the file name 
> in defconfig ).

Ok, I successfully booted a SPL < 64k from SD card by disabling MMC
support after fixing the TCB driver:

;4��K3K{�KOp�C�0�
U-Boot SPL 2022.04-rc3-00023-gf9da67b41a-dirty (Mar 31 2022 - 09:23:48
+0200)
SPL: Unsupported Boot Device!
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

However, as soon as the size is greater than 64K, it does not boot
anymore. Looks like you already had the same problem. Do you have any
more documentation which would allow me to boot a u-boot.bin file from
this SPL easily ?

By the way, since u-boot,dm-pre-reloc is needed in the device-tree to
be used with the SPL, I will probably add them to my series
(property which by the way is missing for the PIT timer
device-tree node).

Thanks,

Clément

-- 
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com


More information about the U-Boot mailing list