
I am intensively working on updating the current "production" Ten64 (NXP LS1088A) firmware from v2020.07 to the latest U-Boot, with the hope of taking advantage of bootstd/bootflow and other improvements.
One desire I have is to have U-Boot "supply" the device tree which is used for EFI boot, rather than our current method of reading the DTB from a flash partition with commands (sf read etc.) and plugging that into the distroboot process.
Indeed, once we syncronise the U-Boot FDT with the Linux one, the bootflow method "Just Works" with the control FDT, without us having to plug an external FDT into the process.
(Note: the bootstd conversion for Ten64 will be coming in a later commit. The DTS on it's own is only one part of the puzzle)
The flow of this series is: - Fix a crash I found in the U-Boot FDT fixup for Layerscape
The previous U-Boot copy of the fsl-ls1088a.dts did not have direct alias to the "crypto" node, triggering a crash when FDT fixup tried to operate on it.
- Enable DM_SERIAL for Ten64 (mirrors how it was enabled for LS1088A-RDB and LS1088A-QDS recently)
- Move all U-Boot "tweaks" into a -u-boot.dtsi file. Each board will have it's own <boardname>-u-boot.dtsi, which includs the SoC-specific fsl-ls1088a-u-boot.dtsi.
- For all hardware that was in U-Boot's fsl-ls1088a.dtsi, and not in the "correct" place (under /soc), move them into /soc and adopt the Linux kernel definition.
PCIe needed special treatment as it's U-Boot binding was slightly different, as well as different compatible strings (match a different U-Boot driver) for MDIO, USB and fsl-mc among others.
At this point, Linux is able to boot on the Ten64 using U-Boot's FDT (passed to it via EFI) with major hardware (Ethernet, USB, PCIe) functional.
- Finally, copy over the U-Boot fsl-ls1088a.dtsi with the Linux kernel version. They are now bit-for-bit identical, with the U-Boot tweaks contained externally.
- Similarly for the Ten64 DTS - fsl-ls1088a-ten64.dts is now identical to the kernel version.
This builds upon the recent conversion of the LS1088A to DM_SERIAL[1]. I used a similar syncronisation for the LS1028A[2] as a guide.
[1] - "Convert LS1088A and LX2160 to DM_SERIAL" patch series https://patchwork.ozlabs.org/project/uboot/list/?series=346392&state=%2A...
[2] - "arm: dts: ls1028a: sync device tree with linux" patch series https://patchwork.ozlabs.org/project/uboot/list/?series=265457&state=%2A...
Mathew McBride (18): armv8: fsl-layerscape: check for crypto node first in fdt_fixup_remove_jr configs: ten64: enable DM_SERIAL arm: dts: fsl-ls1088a: move u-boot bootph tags into u-boot only files arm: dts: fsl-ls1088a: move memory node into U-Boot specific file pci: layerscape: add support for kernel/official fsl,ls1088a-pcie binding arm: dts: fsl-ls1088a: import and sync full SMMU nodes with Linux arm: dts: fsl-ls1088a: sync PCIe controller definition with Linux arm: dts: fsl-ls1088a: match Linux FDT by disabling PCIe by default arm: dts: fsl-ls1088a: import CPU definition from Linux kernel arm: dts: fsl-ls1088a: move GPIO controller under "soc" per Linux arm: dts: fsl-ls1088a: move I2C nodes under "soc" and syncronize with Linux arm: dts: fsl-ls1088a: sync usb controller nodes with Linux arm: dts: fsl-ls1088a: syncronise MDIO+PCS U-Boot definitions with Linux arm: dts: fsl-ls1088a: syncronise fsl-mc definition with Linux arm: dts: fsl-ls1088a: move and sync existing bindings to be under /soc arm: dts: fsl-ls1088a: copy all missing bindings from Linux arm: dts: ten64: syncronise device tree with Linux arm: dts: ten64: fix header typo and update copyright
arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 4 + arch/arm/dts/fsl-ls1088a-qds-u-boot.dtsi | 5 + arch/arm/dts/fsl-ls1088a-rdb-u-boot.dtsi | 5 + arch/arm/dts/fsl-ls1088a-ten64-u-boot.dtsi | 18 + arch/arm/dts/fsl-ls1088a-ten64.dts | 61 +- arch/arm/dts/fsl-ls1088a-u-boot.dtsi | 63 + arch/arm/dts/fsl-ls1088a.dtsi | 1216 +++++++++++++++----- configs/ten64_tfa_defconfig | 4 +- drivers/pci/pcie_layerscape_rc.c | 1 + 9 files changed, 1067 insertions(+), 310 deletions(-) create mode 100644 arch/arm/dts/fsl-ls1088a-qds-u-boot.dtsi create mode 100644 arch/arm/dts/fsl-ls1088a-rdb-u-boot.dtsi create mode 100644 arch/arm/dts/fsl-ls1088a-ten64-u-boot.dtsi create mode 100644 arch/arm/dts/fsl-ls1088a-u-boot.dtsi