On Tue, Sep 8, 2026 at 6:42 PM Bin Meng <bin.meng@processmission.com> wrote:
>
>
> The Phytium E2000Q is a heterogeneous Armv8 SoC with two FTC664 cores
> and two FTC310 cores. This series adds a reusable E2000Q SoC QOM
> device which owns Cortex-A72 CPU children and applies the FTC core
> configuration locally. Two board machines embed the SoC:
>
> - phytium-pi, with firmware and Linux on SD0
> - phytium-e2000-come, with firmware in QSPI NOR and Linux on an
> AHCI1 SATA disk
>
> The machines support the vendor firmware path from the on-chip
> Phytium Boot ROM (PBR) handoff through Processor Base Firmware (PBF),
> TF-A, OP-TEE, U-Boot, and Linux. They can also directly boot SDK Linux
> kernels when supplied with matching board device trees.
>
> The PBR model does not execute undocumented ROM code. It parses the
> selected fip-all.bin, validates the PBF, TF-A FIP, and platform
> parameter records, and reconstructs the observed handoff state. The
> MHU model handles the private SCMI power-domain requests needed to
> release secondary CPUs and exposes a separate Base-protocol channel
> to Linux.
>
> The E2000Q SoC provides GICv3/ITS, UARTs, GPEX PCIe, SMMUv3, four
> Cadence GEM controllers, two DesignWare-derived MCI controllers, QSPI,
> I2C, xHCI, AHCI, a random generator, and the firmware-facing DDR and
> control regions. Board machines retain RAM, firmware media, and
> storage backend attachment. Unimplemented register windows remain
> visible to firmware without claiming unsupported behavior.
>
> Functional tests exercise both firmware and direct Linux boot on the
> Phytium Pi with an SDK Buildroot image. Manual testing covers Phytium
> Pi SD boot, COMe QSPI-to-SATA boot, all four CPUs, and network access.
>
> Known limitations are documented. In particular, the PBR handoff is
> a behavioral model validated against the available SDK firmware
> samples.
>
> Changes in v2:
> - Use scripts/git.orderfile when generating the series
> - Configure FTC cores as SoC-owned Cortex-A72 CPU children
> - Keep Phytium CPU configuration out of the global ARM CPU list
> - Explain why the Phytium machines are restricted to TCG
> - Reduce the DesignWare MCI register migration state to 96 words
>
> Bin Meng (32):
> hw/arm: Add Phytium E2000 SoC and Phytium Pi machine
> hw/arm: phytium: Add Phytium E2000 PCIe host
> hw/sd: Add Synopsys DesignWare MCI controller
> hw/sd: Add Phytium E2000 MCI controller
> hw/arm: phytium: Connect Phytium E2000 MCI controllers
> tests/qtest: Add Synopsys DesignWare MCI coverage
> hw/arm: phytium: Connect Phytium E2000 GEM controllers
> hw/misc: Add Phytium E2000 DDR controller
> hw/arm: phytium: Connect the Phytium E2000 DDR controller
> hw/misc: Add Phytium E2000 MHU doorbell
> hw/arm: phytium: Connect the Phytium E2000 MHU
> hw/ssi: Add Phytium E2000 QSPI controller
> hw/arm: phytium: Connect the Phytium E2000 QSPI controller
> hw/misc: Add Phytium E2000 PBR model
> hw/arm: phytium: Integrate the Phytium E2000 PBR
> hw/arm: phytium: Add Phytium E2000 control region placeholders
> hw/misc: Support Phytium E2000 SCMI CPU power control
> hw/arm: phytium: Select the Phytium E2000 PBR boot medium
> hw/arm: phytium: Connect the Phytium E2000 I2C controller
> hw/arm: phytium: Add Phytium E2000 xHCI controllers
> hw/misc: Model the Phytium E2000 random generator
> hw/arm: phytium: Connect the Phytium E2000 random generator
> hw/arm: phytium: Support Phytium E2000 direct Linux boot
> hw/arm: phytium: Add Phytium E2000Q COMe machine
> hw/block: m25p80: Add GigaDevice GD25Q128 flash
> hw/arm: phytium: Connect the Phytium E2000Q COMe QSPI flash
> hw/arm: phytium: Add Phytium E2000 AHCI controllers
> hw/arm: Add Phytium E2000 Linux SCMI channel
> hw/arm: phytium: Connect the Phytium E2000 SMMUv3
> docs/system/arm: Document Phytium E2000 machines
> tests/functional/aarch64: Add Phytium Pi boot tests
> MAINTAINERS: Add Phytium E2000Q machines
>
> MAINTAINERS | 18 +
> docs/system/arm/phytium_e2000.rst | 422 ++++++
> docs/system/target-arm.rst | 1 +
> include/hw/arm/phytium_e2000.h | 120 ++
> include/hw/misc/phytium_e2000_ddr.h | 23 +
> include/hw/misc/phytium_e2000_mhu.h | 34 +
> include/hw/misc/phytium_e2000_pbr.h | 62 +
> include/hw/misc/phytium_e2000_rng.h | 23 +
> include/hw/sd/dw_mci.h | 75 +
> include/hw/sd/phytium_e2000_mci.h | 21 +
> include/hw/ssi/phytium_qspi.h | 23 +
> hw/arm/phytium_e2000.c | 958 +++++++++++++
> hw/arm/phytium_e2000_machine.c | 388 ++++++
> hw/block/m25p80.c | 1 +
> hw/misc/phytium_e2000_ddr.c | 197 +++
> hw/misc/phytium_e2000_mhu.c | 818 +++++++++++
> hw/misc/phytium_e2000_pbr.c | 1366 ++++++++++++++++++
> hw/misc/phytium_e2000_rng.c | 182 +++
> hw/sd/dw_mci.c | 1382 +++++++++++++++++++
> hw/sd/phytium_e2000_mci.c | 95 ++
> hw/ssi/phytium_qspi.c | 398 ++++++
> tests/qtest/dw_mci-test.c | 417 ++++++
> hw/arm/Kconfig | 22 +
> hw/arm/meson.build | 4 +
> hw/misc/meson.build | 4 +
> hw/sd/Kconfig | 5 +
> hw/sd/meson.build | 2 +
> hw/ssi/Kconfig | 5 +
> hw/ssi/meson.build | 1 +
> tests/functional/aarch64/meson.build | 2 +
> tests/functional/aarch64/test_phytium_pi.py | 77 ++
> tests/qtest/meson.build | 1 +
> 32 files changed, 7147 insertions(+)
> create mode 100644 docs/system/arm/phytium_e2000.rst
> create mode 100644 include/hw/arm/phytium_e2000.h
> create mode 100644 include/hw/misc/phytium_e2000_ddr.h
> create mode 100644 include/hw/misc/phytium_e2000_mhu.h
> create mode 100644 include/hw/misc/phytium_e2000_pbr.h
> create mode 100644 include/hw/misc/phytium_e2000_rng.h
> create mode 100644 include/hw/sd/dw_mci.h
> create mode 100644 include/hw/sd/phytium_e2000_mci.h
> create mode 100644 include/hw/ssi/phytium_qspi.h
> create mode 100644 hw/arm/phytium_e2000.c
> create mode 100644 hw/arm/phytium_e2000_machine.c
> create mode 100644 hw/misc/phytium_e2000_ddr.c
> create mode 100644 hw/misc/phytium_e2000_mhu.c
> create mode 100644 hw/misc/phytium_e2000_pbr.c
> create mode 100644 hw/misc/phytium_e2000_rng.c
> create mode 100644 hw/sd/dw_mci.c
> create mode 100644 hw/sd/phytium_e2000_mci.c
> create mode 100644 hw/ssi/phytium_qspi.c
> create mode 100644 tests/qtest/dw_mci-test.c
> create mode 100644 tests/functional/aarch64/test_phytium_pi.py
>
> ---
> base-commit: 35500e5c41aec76cde59befe750600dac7a9e37a
> branch: phytium
>
Ping for review?