qemu-cr16/include/hw/arm
Jamin Lin 10e377246d hw/arm/ast27x0: Share single UART set across PSP, SSP, and TSP
In the original model, each subsystem (PSP, SSP, and TSP) created its own
set of 13 UART devices, resulting in a total of 39 UART instances. However,
on real AST2700 hardware, there is only one set of 13 UARTs shared among
all processors.

This commit reworks the UART handling to correctly model the shared
hardware design. The PSP now creates the full set of 13 UART instances,
while the SSP and TSP link to the corresponding shared UART device
through object properties.

Changes include:
- Add "DEFINE_PROP_LINK("uart", ...)" and "DEFINE_PROP_INT32("uart-dev", ...)"
  to allow each coprocessor to reference a specific shared UART instance.
- Modify SSP to link to PSP’s UART4, and TSP to link to PSP’s UART7.
- Introduce "uart_alias" to remap the UART’s MMIO region into the coprocessor’s
  memory space.
- Redirect the UART interrupt to the coprocessor’s NVIC, replacing the
  default routing to the PSP’s GIC.

With this change, only one set of 13 UART devices is instantiated by the PSP,
while the SSP and TSP reuse them via aliasing and shared interrupt routing,
matching the real AST2700 hardware behavior.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20251015062210.3128710-7-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
2025-10-22 08:14:08 +02:00
..
allwinner-a10.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
allwinner-h3.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
allwinner-r40.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
armsse-version.h hw/arm/armsse: Introduce SSE subsystem version property 2021-03-08 17:20:01 +00:00
armsse.h hw/arm: Set number of MPU regions correctly for an505, an521, an524 2023-08-31 11:07:02 +01:00
armv7m.h hw/arm/armv7m: alias the NVIC "num-prio-bits" property 2024-01-09 14:42:40 +00:00
aspeed.h hw/arm/aspeed: Add second SPI chip to Aspeed model 2025-07-03 17:36:45 +02:00
aspeed_coprocessor.h hw/arm/ast27x0: Share single UART set across PSP, SSP, and TSP 2025-10-22 08:14:08 +02:00
aspeed_soc.h hw/arm/aspeed_ast27x0-tsp: Make AST27x0 TSP inherit from AspeedCoprocessor instead of AspeedSoC 2025-10-13 14:37:55 +02:00
bcm2835_peripherals.h hw/arm: Connect OTP device to BCM2835 2024-07-01 12:48:55 +01:00
bcm2836.h hw/arm/bcm2853_peripherals: Split out common part of peripherals 2024-02-27 13:01:42 +00:00
bcm2838.h hw/arm/bcm2838: Add GIC-400 to BCM2838 SoC 2024-02-27 13:01:42 +00:00
bcm2838_peripherals.h hw/arm/bcm2838_peripherals: Add clock_isp stub 2024-02-27 13:01:42 +00:00
boot.h hw/arm: make cpu targeted by arm_load_kernel the primary CPU. 2025-06-13 11:31:28 +01:00
bsa.h target/arm: Implement SEL2 physical and virtual timers 2025-03-07 10:08:21 +00:00
digic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
exynos4210.h hw/arm/exynos4210: Get arm_boot_info declaration from 'hw/arm/boot.h' 2023-10-19 13:01:52 +01:00
fdt.h
fsl-imx6.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
fsl-imx6ul.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
fsl-imx7.h hw/pci-host/designware: Expose MSI IRQ 2025-01-27 13:50:14 +00:00
fsl-imx8mp.h hw/arm/fsl-imx8mp: Remove unused define 2025-03-31 16:25:59 +02:00
fsl-imx25.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
fsl-imx31.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
linux-boot-if.h Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
max78000_soc.h MAX78000: Add AES to SOC 2025-07-08 17:31:59 +01:00
msf2-soc.h hw/arm/msf2: Simplify setting MachineClass::valid_cpu_types[] 2024-02-02 13:51:58 +00:00
npcm7xx.h hw/misc: Move NPCM7XX CLK to NPCM CLK 2025-02-20 15:22:22 +00:00
npcm8xx.h hw/arm: Add GMAC devices to NPCM8XX SoC 2025-05-29 17:45:09 +01:00
nrf51.h hw/arm/nrf51: Add NRF51_PERIPHERAL_SIZE definition 2020-05-11 11:05:11 +01:00
nrf51_soc.h hw/arm/nrf51: Rename ARMv7MState 'cpu' -> 'armv7m' 2025-01-27 12:58:26 +00:00
omap.h hw/arm: Replace TABs for spaces in OMAP board and device code 2025-05-14 14:29:47 +01:00
primecell.h
raspberrypi-fw-defs.h hw/misc: Implement mailbox properties for customer OTP and device specific private keys 2024-07-01 12:48:55 +01:00
raspi_platform.h hw/arm: Add memory region for BCM2837 RPiVid ASB 2024-02-27 13:01:42 +00:00
smmu-common.h hw/arm/virt: Allow user-creatable SMMUv3 dev instantiation 2025-09-16 17:31:54 +01:00
smmuv3.h hw/arm/smmuv3: Add knob to choose translation stage and enable stage-2 2023-05-30 15:50:16 +01:00
soc_dma.h hw/arm: Replace TABs for spaces in OMAP board and device code 2025-05-14 14:29:47 +01:00
stm32f100_soc.h hw/arm/stm32f100: Report error when incorrect CPU is used 2023-11-20 15:30:59 +00:00
stm32f205_soc.h hw/arm/stm32f205_soc: Don't leak TYPE_OR_IRQ objects 2025-08-30 16:38:47 +01:00
stm32f405_soc.h hw/arm/stm32f405: Add RCC device to stm32f405 SoC 2024-10-15 11:29:45 +01:00
stm32l4x5_soc.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
virt.h qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
xlnx-versal-version.h hw/misc/xlnx-versal-crl: add the versal2 version 2025-10-07 10:35:36 +01:00
xlnx-versal.h hw/arm/xlnx-versal: add versal2 SoC 2025-10-07 10:35:36 +01:00
xlnx-zynqmp.h hw/arm/xlnx-zynqmp: wire a second GIC for the Cortex-R5 2025-10-07 10:39:15 +01:00