QEMU-Arm Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Meng <bin.meng@processmission.com>
To: QEMU <qemu-devel@nongnu.org>
Cc: "Alistair Francis" <alistair@alistair23.me>,
	"Bin Meng" <bmeng.cn@gmail.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Hanna Reitz" <hreitz@redhat.com>,
	"Kevin Wolf" <kwolf@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
	"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
	"Thomas Huth" <thuth@redhat.com>,
	qemu-arm@nongnu.org, qemu-block@nongnu.org
Subject: [PATCH v2 00/32] hw/arm: Add Phytium E2000Q SoC and board support
Date: Tue,  8 Sep 2026 18:41:09 +0800	[thread overview]
Message-ID: <20260908104159.1621764-1-bin.meng@processmission.com> (raw)


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

-- 
2.53.0



             reply	other threads:[~2026-09-08 10:44 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-08 10:41 Bin Meng [this message]
2026-09-08 10:41 ` [PATCH v2 01/32] hw/arm: Add Phytium E2000 SoC and Phytium Pi machine Bin Meng
2026-09-08 10:41 ` [PATCH v2 02/32] hw/arm: phytium: Add Phytium E2000 PCIe host Bin Meng
2026-09-08 10:41 ` [PATCH v2 04/32] hw/sd: Add Phytium E2000 MCI controller Bin Meng
2026-09-08 10:41 ` [PATCH v2 05/32] hw/arm: phytium: Connect Phytium E2000 MCI controllers Bin Meng
2026-09-08 10:41 ` [PATCH v2 07/32] hw/arm: phytium: Connect Phytium E2000 GEM controllers Bin Meng
2026-09-08 10:41 ` [PATCH v2 08/32] hw/misc: Add Phytium E2000 DDR controller Bin Meng
2026-09-08 10:41 ` [PATCH v2 09/32] hw/arm: phytium: Connect the " Bin Meng
2026-09-08 10:41 ` [PATCH v2 10/32] hw/misc: Add Phytium E2000 MHU doorbell Bin Meng
2026-09-08 10:41 ` [PATCH v2 11/32] hw/arm: phytium: Connect the Phytium E2000 MHU Bin Meng
2026-09-08 10:41 ` [PATCH v2 12/32] hw/ssi: Add Phytium E2000 QSPI controller Bin Meng
2026-09-08 10:41 ` [PATCH v2 13/32] hw/arm: phytium: Connect the " Bin Meng
2026-09-08 10:41 ` [PATCH v2 14/32] hw/misc: Add Phytium E2000 PBR model Bin Meng
2026-09-08 10:41 ` [PATCH v2 15/32] hw/arm: phytium: Integrate the Phytium E2000 PBR Bin Meng
2026-09-08 10:41 ` [PATCH v2 16/32] hw/arm: phytium: Add Phytium E2000 control region placeholders Bin Meng
2026-09-08 10:41 ` [PATCH v2 17/32] hw/misc: Support Phytium E2000 SCMI CPU power control Bin Meng
2026-09-08 10:41 ` [PATCH v2 18/32] hw/arm: phytium: Select the Phytium E2000 PBR boot medium Bin Meng
2026-09-08 10:41 ` [PATCH v2 19/32] hw/arm: phytium: Connect the Phytium E2000 I2C controller Bin Meng
2026-09-08 10:41 ` [PATCH v2 20/32] hw/arm: phytium: Add Phytium E2000 xHCI controllers Bin Meng
2026-09-08 10:41 ` [PATCH v2 21/32] hw/misc: Model the Phytium E2000 random generator Bin Meng
2026-09-08 10:41 ` [PATCH v2 22/32] hw/arm: phytium: Connect " Bin Meng
2026-09-08 10:41 ` [PATCH v2 23/32] hw/arm: phytium: Support Phytium E2000 direct Linux boot Bin Meng
2026-09-08 10:41 ` [PATCH v2 24/32] hw/arm: phytium: Add Phytium E2000Q COMe machine Bin Meng
2026-09-08 10:41 ` [PATCH v2 26/32] hw/arm: phytium: Connect the Phytium E2000Q COMe QSPI flash Bin Meng
2026-09-08 10:41 ` [PATCH v2 27/32] hw/arm: phytium: Add Phytium E2000 AHCI controllers Bin Meng
2026-09-08 10:41 ` [PATCH v2 28/32] hw/arm: Add Phytium E2000 Linux SCMI channel Bin Meng
2026-09-08 10:41 ` [PATCH v2 29/32] hw/arm: phytium: Connect the Phytium E2000 SMMUv3 Bin Meng
2026-09-08 10:41 ` [PATCH v2 30/32] docs/system/arm: Document Phytium E2000 machines Bin Meng
2026-09-08 10:41 ` [PATCH v2 31/32] tests/functional/aarch64: Add Phytium Pi boot tests Bin Meng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260908104159.1621764-1-bin.meng@processmission.com \
    --to=bin.meng@processmission.com \
    --cc=alistair@alistair23.me \
    --cc=armbru@redhat.com \
    --cc=bmeng.cn@gmail.com \
    --cc=farosas@suse.de \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@oss.qualcomm.com \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox