FDT is better than coreboot tables. I'll repeat Arthur's points, the ones I think are important: "
- reflection is easy
- no problem of 'header mismatch' to have the right definition of a struct
- easy to update with a text editor without needing to write code
"
These are pretty critical. Further, Linux (and many if not most kernels in fact) have built-in support for FDT, where they may not for coreboot tables.
Well, Arthur also admitted that none of these points are really relevant to coreboot's payload handoff, ;) which I fully agree with. When was the last time you actually had to look at coreboot tables in a hexdump? I think I have done that maybe once or twice total in my ~10 years of working with coreboot. We just don't need reflection, or updating with a text editor. It's not a persistent structure that's stored as a file on anyone's disk, it gets written out at runtime and then consumed again immediately after. There are no environments with text editors between coreboot and the payload.
I also disagree that FDTs are somehow more robust to "mismatches" than C structures. Yes, the data format is self-describing, but what that data means still has to be agreed upon by both sides. Where's the difference between changing a member in a C structure from an integer to a pointer, and changing a property in an FDT from an integer cell to a phandle? Either way it's going to be broken if encountered by an old reader -- maybe one leads to a segfault and the other "just" to a clean parsing error, but that still doesn't mean it's not a problem and you still need conventions to prevent it. So the convention is that you just keep the structure layouts / bindings stable after you've started using them, and that's what we're doing with coreboot tables, just like projects using FDT are doing that with their bindings. (FWIW, I'm not aware of any instances where we broke coreboot table backwards compatibility in the past.)
I don't want to say things about FSP because I honestly don't know enough about how that works and what people struggle with in practice to have an informed opinion. If most of the people working with FSP platforms think that using FDT as a handoff format there is a good idea, then sure, do that. But that doesn't really make a difference for what's better for payload handoff.