
On Wed, Nov 08, 2023 at 12:29:03AM +0000, Conor Dooley wrote:
On Tue, Nov 07, 2023 at 06:23:05PM -0500, Tom Rini wrote:
[snip]
Thanks. Setting aside Simon's follow-up, this is what I was looking for. We might have to wait for Heinrich to return from the conference to have time to look at how to utilize the above and see what we can do from there.
I did read that, but I don't think most of it is relevant to the binding itself. His five things were: | - U-Boot models hardware (and other things) as devices in driver model [1]
This I think should be satisfied. The Zkr CSR is a property of the CPU, and shouldn't have its own DT node IMO. Is it problematic for U-Boot to populate multiple devices for its driver model based on one DT node? I know in Linux that I can create devices using something like platform_device_register(), does U-Boot have a similar facility? https://elixir.bootlin.com/linux/latest/source/drivers/base/platform.c#L767
| - U-Boot requires devices to be in the devicetree, with very limited | exceptions [2]
| - Where multiple devices exist in a uclass, it is desirable to be able | to number them [3]
I'm not sure really how this one ties in. Do you need a number for each CPU that supports Zkr, since a system may be heterogeneous? I think that how you treat things like that is beyond communicating support via DT though, IMO the job of the DT is just to tell U-Boot on which CPUs it can access the seed CSR.
| - Similarly it is useful to be able select a particular device, e.g. | with a phandle [4]
I suppose a phandle to the CPU would work in this case.
| - U-Boot uses devicetree for configuration as it has no userspace
I mean, the reason I was setting aside Simon's question is that in my mind, we (U-Boot) need to think about what we're declaring as a MUST because the constant feedback that we get is "No, why does that need to get added to DT? Can't you just use ... ?". So I do find your answers above enlightening in that regard.