Hi Phil, On 14:21 Mon 10 Mar , Phil Elwell wrote: > Hi Andrea, > ... > > This is indeed our current DT usage for the Pi 5 family - a single DTB > describing each board - although I would like to make it clear that > overlays can then be applied on top of it describing the attached > peripherals. Indeed. Thanks for specifying that. > > > 2 - RP1 LOADED FROM OVERLAY BY THE FW > > > > In this case the rp1 dt node is loaded from overlay directly by the fw and the > > resulting devicetree is exactly equal to the monolithic dtb scenario. > > In order for that overlay to be loaded by fw, just add 'dtoverlay=rp1' in > > 'config.txt'. > > This halfway house combines the advantages and disadvantages of > scenarios 1 and 3. Compared to scenario 3 it gains support for > applying overlays that make use of interfaces provided by RP1 - I2C, > SPI, UARTs etc. Compared to scenario 1 it loses the ability for the > base DTB to refer to elements of RP1, other than by replacing these > DTB elements with overlays that must be loaded after the RP1 overlay. > As such, we would see that as a backwards step and not use it. This is in fact the second side of the problem I was mentioning: being able to reference RP1 nodes from base tree (this of course arise only for case 2 and 3, i.e. in case overlays are used). Some solutions to this have been added by Herve (nexus nodes) and it seems promising, but I still don't have a complete and tested solution. My intention here is to verify if it is worth spending time on figuring out a solution for the overlay case, since in case we only accept the monolithic approach we won't use overlay for rp1 at all. My idea is that we can still provide the dtbs for all three cases for the user to choose from (so to potentially benefit from all advantages every single solution provides), and refine the overlay case as we go, since we can still fallback to the monolithic dtb in case we can't find a viable solution to the across-overlay referencing issue. But I'd like a confirm from upstream too. I think that this problem should really be addressed sooner or later (I'm hinting at fpga hw, but lately we're seeing other appliances of this paradigm arising more often), so maybe this is a good opportunity to lay the ground for a proper solution that could be generalized for other situations too, but again, not at the cost of slowing down rpi5 upstream efforts. > > > 3 - RP1 LOADED FROM OVERLAY AT RUNTIME > > > > Here it's the rp1 driver that loads the overlay at runtime, which is the case > > that this patchset originally proposed. The devicetree ends up like this: > > > > axi { > > pcie@120000 { > > pci@0,0 { > > dev@0,0 { ... > > / { > > ... all rpi5 board dts ... > > &pcie2 { > > #include "rp1-nexus.dtsi" > > }; > > }; > > > > > > with only minimal changes to the rp1 driver code, I can confirm that all those > > scenarios can coexits and are working fine. Before processding with a new patchset > > I'd like to have some thoughts about that, do you think this is a viable approach? > > Thank you for this - the creation of a core RP1 declaration that can > be tailored to multiple applications using different wrappers is > exactly what I had in mind. I agree that your partitioning scheme can > cater for the 3 usage scenarios, but for the reasons outlined above I > think scenario 2 is not useful to us, although it isn't impossible > that U-boot might see things differently; I see no harm in having it > supported, but I wouldn't want anyone to go to unnecessary effort to > make it work. In all truth, this is in fact exactly your proposal (we discussed internally with Dave also), just slightly re-arranged by me. I agree with you about not wasting time, as I also mentioned above. Many thanks, Andrea > > Phil