[U-Boot] SPL Platdata howto?

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Thu Dec 20 15:03:42 UTC 2018


Am 20.12.2018 um 15:49 schrieb Simon Glass:
> Hi Simon,
> 
> On Wed, 19 Dec 2018 at 14:06, Simon Goldschmidt
> <simon.k.r.goldschmidt at gmail.com> wrote:
>>
>> Hi,
>>
>> while searching for bytes to save in SPL in order to add FIT signature
>> handling, I am currently trying to get socfpga-gen5 to use OF_PLATDATA.
>>
>> To begin, I stripped down socfpga_socrates_defconfig to absolutely
>> nothing but serial drivers in SPL (with some modifications to the
>> Kconfig) and enabled DEBUG_UART to see what's going on.
>>
>> Now while this config runs OK with a dtb (it just won't boot as drivers
>> are missing -> "failed to boot from all boot devices"), it does not find
>> the serial driver after enabling OF_PLATDATA.
>>
>> So since serial_rockchip.c already uses OF_PLATDATA and is based on
>> ns16550 that my socfpga-gen5 platform is using: what do I have to do
>> besides enabling OF_PLATDATA to get this working?
>>
>> I just seems like uclass_first_device does not find any UCLASS_SERIAL
>> deivce when OF_PLATDATA is enabled.
> 
> There is the of-plat.txt README.

Yes, I should have mentioned I already read that and still had those 
questions. Kconfig help says README.platdata though. We probably should 
update that link.

> Basically the dtoc tool creates U_BOOT_DEVICE() declarations and links
> them with SPL. These should show up in your image and therefore be
> bound. You can call dm_dump_all() in SPL to see what what devices are
> bound. I presume you are calling spl_init()?
> 
> You can look at what dtoc produces. The example serial driver for
> Rockchip is serial_rockchip.c

I saw that as an example (because I also have an ns16550 compatible on 
my board) but couldn't figure out why it is not bound. By debugging 
'dm_scan_platdata', 'lists_bind_drivers' and 'device_bind_by_name', by 
now I know the driver names don't match. That is something I did not get 
just by reading of-plat.txt. I'll work on a patch to clarify that document.

Right now, serial works. I had to add a new platform specific driver 
just like serial_rockchip though. For DTS, we can pass multiple 
'compatible' strings, but for platdata, we have to create multiple 
drivers. That's a bit strange when porting boards...

> 
>>
>> (And when answering this, keep in mind I need to get MMC and QSPI
>> drivers working with OF_PLATDATA - I already fixed compiler errors in
>> those, nothing more.)
> 
> Yes MMC should be OK, but QSPI might be blazing a bit of a trail.

I just wanted to start with QSPI, maybe I'll do MMC first now ;-)

Thanks for your hints!

Regards,
Simon


More information about the U-Boot mailing list