This patchset introduces Axiado SoC AX3000 and a EVK SCM3003 for emulation The model for Axiado SoC AX3000 supports 4 Cortex-A53 CPUs Arm Generic Interrupt Controller v3 4 Cadence UARTs 1 SDHCI controller with PHY 8 Cadence GPIOs
Refer Axiado website for more product information https://axiado.com/products/ Test plan: 1. Verified the machine "axiado-scm3003" with following command qemu-system-aarch64 \ -m 4G \ -machine axiado-scm3003 \ -device loader,file=u-boot.bin,addr=0x3C000000,cpu-num=0 \ -nographic \ -serial null \ -serial null \ -serial null \ -serial mon:stdio \ -drive if=sd,file=obmc-phosphor-image-evk-axiado-qemu.wic,format=raw 2. Run QEMU test suite make check Ok: 326 Fail: 0 Skipped: 20 make check-functional Ok: 26 Fail: 0 Skipped: 8 Changes in v7: 1. Create SD device only if -drive argument is present Changes in v6: 1. Add qemu_log_mask(LOG_UNIMP) into axiado_clk and axiado_sdhci for unimplemented registers 2. Revise header of axiado_sdhci 3. Add "const" to temporary data structures Changes in v5: 1. Include Reviewed-by tag in reviewed patches 2. Add arm_load_kernel() in ax3000-boards 3. Add axiado_clk to support AXIADO_CLK Changes in v4: 1. Remove ERRP_GUARD from axiado_sdhci 2. Optimize ISR update function of cadence gpio with logical operation Changes in v3: 1. Add a new patch for Axiado SD host controller 2. Fill in valid/impl parameters of MemoryRegionOps in ax3000-soc/cadence_gpio/axiado_sdhci 3. Follow C99 standard to declare variable in for-loop 4. Remove comment "TBD" from empty function 5. Define marco for bit definition in axiado_sdhci 6. Move object_initialize_child() to instance_init() from realize() in axiado_sdhci 7. Remove callback of get_default_cpu_type() from ax3000-soc and set type of CPU to A53 8. Update the command to run "axiado-scm3003" in QEMU Changes in v2: 1. Move axiado-* to ax3000-* in hw/arm and include/hw/arm 2. Add axiado_sdhci to support AXIADO_SDHCI 3. Move implementation for eMMC PHY device to axiado_sdhci 4. Use UNIMP to create dummy device "timerctrl" 5. Add cadence_gpio to support CADENCE_GPIO 6. Enable Cadence GPIO controllers on AX3000 SoC Kuan-Jui Chiu (8): hw/arm: Add Axiado SoC AX3000 hw/misc: Add AX3000 clock control hw/arm: ax3000-soc: Enable Ax3000 clock control hw/sd: Add Axiado SD host controller with eMMC PHY hw/arm: ax3000-soc: Enable Axiado SD host controller hw/arm: Add Axiado EVK SCM3003 hw/gpio: Add Cadence GPIO controller hw/arm: ax3000-soc: Enable Cadence GPIO controllers MAINTAINERS | 9 + hw/arm/Kconfig | 15 ++ hw/arm/ax3000-boards.c | 56 +++++++ hw/arm/ax3000-evk.c | 27 +++ hw/arm/ax3000-soc.c | 242 +++++++++++++++++++++++++++ hw/arm/meson.build | 6 + hw/gpio/Kconfig | 3 + hw/gpio/cadence_gpio.c | 292 +++++++++++++++++++++++++++++++++ hw/gpio/meson.build | 1 + hw/gpio/trace-events | 5 + hw/misc/Kconfig | 3 + hw/misc/axiado_clk.c | 77 +++++++++ hw/misc/meson.build | 3 + hw/sd/Kconfig | 4 + hw/sd/axiado_sdhci.c | 117 +++++++++++++ hw/sd/meson.build | 1 + include/hw/arm/ax3000-boards.h | 28 ++++ include/hw/arm/ax3000-soc.h | 98 +++++++++++ include/hw/gpio/cadence_gpio.h | 55 +++++++ include/hw/misc/axiado_clk.h | 26 +++ include/hw/sd/axiado_sdhci.h | 21 +++ 21 files changed, 1089 insertions(+) create mode 100644 hw/arm/ax3000-boards.c create mode 100644 hw/arm/ax3000-evk.c create mode 100644 hw/arm/ax3000-soc.c create mode 100644 hw/gpio/cadence_gpio.c create mode 100644 hw/misc/axiado_clk.c create mode 100644 hw/sd/axiado_sdhci.c create mode 100644 include/hw/arm/ax3000-boards.h create mode 100644 include/hw/arm/ax3000-soc.h create mode 100644 include/hw/gpio/cadence_gpio.h create mode 100644 include/hw/misc/axiado_clk.h create mode 100644 include/hw/sd/axiado_sdhci.h -- 2.34.1
