mbox series

[00/18] Synchronise LS1088A/Ten64 device tree with Linux

Message ID 20230412073830.13928-1-matt@traverse.com.au
Headers show
Series Synchronise LS1088A/Ten64 device tree with Linux | expand

Message

Mathew McBride April 12, 2023, 7:38 a.m. UTC
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&archive=both

[2] - "arm: dts: ls1028a: sync device tree with linux" patch series
https://patchwork.ozlabs.org/project/uboot/list/?series=265457&state=%2A&archive=both

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

Comments

Ioana Ciornei April 28, 2023, 12:41 p.m. UTC | #1
On Wed, Apr 12, 2023 at 07:38:12AM +0000, Mathew McBride wrote:
> 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&archive=both
> 
> [2] - "arm: dts: ls1028a: sync device tree with linux" patch series
> https://patchwork.ozlabs.org/project/uboot/list/?series=265457&state=%2A&archive=both
> 

Thanks a lot, Mathew!
I really appreciate the work that you put into this series.

For the entire series:

Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com> # on LS1088A-RDB

Ioana