[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