Hi Simon, I'm back working on this old issue. Thanks for your help with this!
So, SPL support for Atmel/Microchip SAMA5D3 is still broken in the latest mainline, at least for the Xplained board with the MMC configuration. My comments and further questions below... On 11/22/20 12:07 AM, Simon Glass wrote: > Hi Michael, > > On Thu, 19 Nov 2020 at 04:23, Michael Opdenacker > <michael.opdenac...@bootlin.com> wrote: >> Hi, >> >> Sorry, no messaging quoting, I was not subscribed to the list at that time. >> >> Merging this change into master actually broke the SPL on >> Atmel/Microchip SAMA5D3, at least booting from MMC: >> >> RomBOOT >> >> <debug_uart> >> Could not initialize timer (err -11) >> >> Could not initialize timer (err -11) >> >> Could not initialize timer (err -11) >> ... >> >> I'll look for a fix, but suggestions are welcome! Now, it's: Could not initialize timer (err -19) (-19 is -ENODEV /* No such device */) > The board might need CONFIG_TIMER_EARLY, but otherwise I think it is a > case of figuring out why the timer is used before it is available. I tried to enable CONFIG_TIMER_EARLY but it fails at link time: LD u-boot arm-linux-ld.bfd: lib/built-in.o: in function `get_tbclk': /home/mike/work/git/git.denx.de/u-boot/lib/time.c:70: undefined reference to `timer_early_get_rate' arm-linux-ld.bfd: lib/built-in.o: in function `get_ticks': /home/mike/work/git/git.denx.de/u-boot/lib/time.c:90: undefined reference to `timer_early_get_count' make: *** [Makefile:1765: u-boot] Error 1 This is not a surprise, as according to https://elixir.bootlin.com/u-boot/latest/C/ident/timer_early_get_rate, timer_early_get_rate() is not implemented on ARM, only on sandbox (drivers/timer/sandbox_timer.c) and on x86 (drivers/timer/tsc_timer.c). So, I'm moving to your second suggestion... > > You can use dm_dump_all() to print out available devices and whether > they are probed. Done, I added dm_dump_all to lib/time.c right before the panic() message: Class Index Probed Driver Name ----------------------------------------------------------- root 0 [ + ] root_driver root_driver simple_bus 0 [ ] simple_bus `-- ahb simple_bus 1 [ ] simple_bus `-- apb mmc 0 [ ] atmel-mci |-- mmc@f0000000 blk 0 [ ] mmc_blk | `-- m...@f0000000.blk mmc 1 [ ] atmel-mci |-- mmc@f8000000 blk 1 [ ] mmc_blk | `-- m...@f8000000.blk serial 0 [ ] serial_atmel |-- serial@ffffee00 pinctrl 0 [ ] atmel_sama5d3_pinctrl |-- pinctrl@fffff200 pinconfig 0 [ ] pinconfig | |-- dbgu pinconfig 1 [ ] pinconfig | | `-- dbgu-0 pinconfig 2 [ ] pinconfig | |-- mmc0 pinconfig 3 [ ] pinconfig | | |-- mmc0_clk_cmd_dat0 pinconfig 4 [ ] pinconfig | | |-- mmc0_dat1_3 pinconfig 5 [ ] pinconfig | | `-- mmc0_dat4_7 pinconfig 6 [ ] pinconfig | |-- mmc1 pinconfig 7 [ ] pinconfig | | |-- mmc1_clk_cmd_dat0 pinconfig 8 [ ] pinconfig | | `-- mmc1_dat1_3 pinconfig 9 [ ] pinconfig | |-- spi0 pinconfig 10 [ ] pinconfig | | `-- spi0-0 pinconfig 11 [ ] pinconfig | |-- spi1 pinconfig 12 [ ] pinconfig | | `-- spi1-0 pinconfig 13 [ ] pinconfig | `-- board pinconfig 14 [ ] pinconfig | |-- mmc0_cd pinconfig 15 [ ] pinconfig | `-- mmc1_cd gpio 0 [ ] atmel_at91rm9200_gpio |-- gpio@fffff200 gpio 1 [ ] atmel_at91rm9200_gpio |-- gpio@fffff400 gpio 2 [ ] atmel_at91rm9200_gpio |-- gpio@fffff600 gpio 3 [ ] atmel_at91rm9200_gpio |-- gpio@fffff800 gpio 4 [ ] atmel_at91rm9200_gpio |-- gpio@fffffa00 simple_bus 2 [ ] at91-pmc `-- pmc@fffffc00 clk 0 [ ] at91sam9x5-utmi-clk |-- utmick clk 1 [ ] at91-master-clk |-- masterck misc 0 [ ] sam9x5-periph-clk `-- periphck clk 2 [ ] periph-clk |-- dbgu_clk@2 clk 3 [ ] periph-clk |-- pioA_clk@6 clk 4 [ ] periph-clk |-- pioB_clk@7 clk 5 [ ] periph-clk |-- pioC_clk@8 clk 6 [ ] periph-clk |-- pioD_clk@9 clk 7 [ ] periph-clk |-- pioE_clk@10 clk 8 [ ] periph-clk |-- mci0_clk@21 clk 9 [ ] periph-clk |-- mci1_clk@22 clk 10 [ ] periph-clk |-- spi0_clk@24 clk 11 [ ] periph-clk `-- spi1_clk@25 Could not initialize timer (err -19) I'm not familiar enough with U-Boot yet (and with SAMA5D3 support either) to see why the timer device is missing here, but I hope our Microchip friends can give us further clues... Thanks again, Cheers, Michael. -- Michael Opdenacker, Bootlin Embedded Linux and Kernel engineering https://bootlin.com