[PATCH 0/9] add support for Enclustra Mercury AA1 SoMs

Lothar Rubusch l.rubusch at gmail.com
Thu Sep 12 08:06:40 CEST 2024


Introduce the support for three variants of Enclustra's Intel Mercury AA1 (with
Intel Arria10) SoMs and additional configs. This is supposed to be the first
step to upstream several of Enclustras SoC FPGA Modules. There are still things
to be modified. So, this is supposed to start the discussion and also to
clarify some of my open issues. I verified boot on SD card and emmc is booting,
as also checkpatch is mostly fine and I hope the git comments are reasonable.

Open Issues I still have:

- checkpatch.pl: CONFIG options for env settings in
  include/configs/socfpga_mercury_aa1.h show up as error at checkpatch.pl.
Additionally an env file as demo is provided, along with instructions.
Although, I noticed, when providing a uboot.env file as binary, this replaces
the default (socfpga) environment. Is there a way to just append some settings
by a compiled uboot.env? As this happens to be, when declared in
include/configs. Also other boards (still) used to have settings in board
header files in include/configs. So, do I need to remove CONFIG_ entries in
this file, or may it be acceptable?

- MAC address from secure eeprom: The implementation does not bring in a new
  driver. It uses actually the ATSHA204a driver following DM and already
existing in uboot. Function is verified. Is this usage ok?

- Si53338 driver: This is a new clock generator driver with partly generated
  code. To be honest, I'm not sure if this should be even be upstreamed. Fact
is, the SoMs work w/o this driver. Optional features may need that driver on
the system later. It's a nice to have, but also quite specific.

- DT: We don't have upstream kernel DT fragments, so that's also why we still
  use the classic location here. The bigger problem is, I have 3x (slightly)
different AA1 modules. All can be combined with three different baseboards.
Most of those combinations support several bootmodes (SD, eMMC, QSPI) with yet
another .dtsi fragment. What is the best way to deal with this situation? For
sure I don't like to bring in all combinations as particular new DT setups.
Hence, the current approach is to have a top level "enclustra-aa1.dts"
including particular .dtsi elements. In combination then using .dtbos and a
boot.scr approach. I feel a fit image can be part of the solution, but I'm
unsure. I'm unsure if this is part of the BSP later, say a yocto setup, or part
of the bootloader. Is it enough to just provide the .dtsi elementst or also an
.its file for a demo? In the documentation .rst file currently I refere to the
described. Do I need to improve this setup, and what would be the desired
approach for this situation?

- uImage: uImage was the classic approach at Enclustra. Anyway this goes into
  the same direction as above: A more advanced approach would involve a fit
image, as e.g. the "image.ub" Xilinx is doing. But is this needed? Doesn't it
also depend on the specific customer and project? Hence, a similar question, is
there anything missing? What would be additionally needed? Or, is the current
setup is enough?

- Maintainer: checkpatch.pl complains about a missing maintainer entry for the
  new board. So, I registered myself, since I have access to this hardware.
Unsure here, please let me know how to procede.

Lothar Rubusch (9):
  doc: board: enclustra: add Enclustra Intel AA1 SoM
  ARM: dts: socfpga: add Enclustra Intel AA1
  ARM: socfpga: add Enclustra AA1 SoM support
  ARM: socfpga: add Enclustra AA1 extra env settings
  ARM: socfpga: add Enclustra AA1 demo env files
  ARM: socfpga: add Enclustra AA1 boot scripts
  ARM: socfpga: AA1: support MAC from secure eeprom
  ARM: socfpga: add si5338 clock generator support
  ARM: socfpga: make AA1 use si5338 clock gen

 arch/arm/dts/ME-AA1-270-2I2-D11E-NFX3.dtsi    |  14 +
 arch/arm/dts/ME-AA1-270-3E4-D11E-NFX3.dtsi    |  14 +
 arch/arm/dts/ME-AA1-480-2I3-D12E-NFX3.dtsi    |  15 +
 arch/arm/dts/Makefile                         |   2 +
 arch/arm/dts/enclustra-aa1.dts                |  32 ++
 .../dts/socfpga_arria10_mercury_aa1_handoff.h | 307 ++++++++++++
 .../dts/socfpga_enclustra_mercury_aa1.dtsi    | 179 +++++++
 ...cfpga_enclustra_mercury_aa1_qspi_boot.dtsi |  18 +
 ...fpga_enclustra_mercury_aa1_sdmmc_boot.dtsi |  18 +
 .../dts/socfpga_enclustra_mercury_pe1.dtsi    |   7 +
 .../dts/socfpga_enclustra_mercury_pe3.dtsi    |   8 +
 .../dts/socfpga_enclustra_mercury_st1.dtsi    |   8 +
 arch/arm/mach-socfpga/Kconfig                 |   9 +
 board/enclustra/bootscripts/qspi-aa1.cmd      |  12 +
 board/enclustra/bootscripts/sd-aa1.cmd        |  10 +
 board/enclustra/common/Kconfig                |  24 +
 board/enclustra/common/Makefile               |   7 +
 board/enclustra/common/enclustra_mac.h        |  48 ++
 board/enclustra/common/mac_atsha204.c         |  97 ++++
 board/enclustra/common/mac_common.c           |  54 +++
 board/enclustra/common/mac_ds28.c             |  88 ++++
 board/enclustra/mercury_aa1/Kconfig           |  15 +
 board/enclustra/mercury_aa1/MAINTAINERS       |  10 +
 board/enclustra/mercury_aa1/Makefile          |   4 +
 board/enclustra/mercury_aa1/bitstream.its     |  32 ++
 board/enclustra/mercury_aa1/mercury_aa1.c     | 199 ++++++++
 board/enclustra/mercury_aa1/mercury_aa1.env   |  65 +++
 .../socfpga_enclustra_mercury_aa1_defconfig   |  81 ++++
 doc/board/enclustra/index.rst                 |   9 +
 doc/board/enclustra/mercury-aa1.rst           | 209 +++++++++
 doc/board/index.rst                           |   1 +
 drivers/clk/Kconfig                           |   1 +
 drivers/clk/Makefile                          |   1 +
 drivers/clk/skyworks/Kconfig                  |  10 +
 drivers/clk/skyworks/Makefile                 |   3 +
 drivers/clk/skyworks/Si5338-RevB-Registers.h  | 441 ++++++++++++++++++
 drivers/clk/skyworks/si5338_clkgen.c          | 177 +++++++
 drivers/clk/skyworks/si5338_clkgen.h          |  18 +
 drivers/misc/Kconfig                          |   2 +-
 include/configs/socfpga_mercury_aa1.h         |  68 +++
 40 files changed, 2316 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/ME-AA1-270-2I2-D11E-NFX3.dtsi
 create mode 100644 arch/arm/dts/ME-AA1-270-3E4-D11E-NFX3.dtsi
 create mode 100644 arch/arm/dts/ME-AA1-480-2I3-D12E-NFX3.dtsi
 create mode 100644 arch/arm/dts/enclustra-aa1.dts
 create mode 100644 arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h
 create mode 100644 arch/arm/dts/socfpga_enclustra_mercury_aa1.dtsi
 create mode 100644 arch/arm/dts/socfpga_enclustra_mercury_aa1_qspi_boot.dtsi
 create mode 100644 arch/arm/dts/socfpga_enclustra_mercury_aa1_sdmmc_boot.dtsi
 create mode 100644 arch/arm/dts/socfpga_enclustra_mercury_pe1.dtsi
 create mode 100644 arch/arm/dts/socfpga_enclustra_mercury_pe3.dtsi
 create mode 100644 arch/arm/dts/socfpga_enclustra_mercury_st1.dtsi
 create mode 100644 board/enclustra/bootscripts/qspi-aa1.cmd
 create mode 100644 board/enclustra/bootscripts/sd-aa1.cmd
 create mode 100644 board/enclustra/common/Kconfig
 create mode 100644 board/enclustra/common/Makefile
 create mode 100644 board/enclustra/common/enclustra_mac.h
 create mode 100644 board/enclustra/common/mac_atsha204.c
 create mode 100644 board/enclustra/common/mac_common.c
 create mode 100644 board/enclustra/common/mac_ds28.c
 create mode 100644 board/enclustra/mercury_aa1/Kconfig
 create mode 100644 board/enclustra/mercury_aa1/MAINTAINERS
 create mode 100644 board/enclustra/mercury_aa1/Makefile
 create mode 100644 board/enclustra/mercury_aa1/bitstream.its
 create mode 100644 board/enclustra/mercury_aa1/mercury_aa1.c
 create mode 100644 board/enclustra/mercury_aa1/mercury_aa1.env
 create mode 100644 configs/socfpga_enclustra_mercury_aa1_defconfig
 create mode 100644 doc/board/enclustra/index.rst
 create mode 100644 doc/board/enclustra/mercury-aa1.rst
 create mode 100644 drivers/clk/skyworks/Kconfig
 create mode 100644 drivers/clk/skyworks/Makefile
 create mode 100644 drivers/clk/skyworks/Si5338-RevB-Registers.h
 create mode 100644 drivers/clk/skyworks/si5338_clkgen.c
 create mode 100644 drivers/clk/skyworks/si5338_clkgen.h
 create mode 100644 include/configs/socfpga_mercury_aa1.h

-- 
2.25.1



More information about the U-Boot mailing list