qemu-cr16/include/hw
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
..
acpi qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
adc
arm hw/arm/ast27x0: Share single UART set across PSP, SSP, and TSP 2025-10-22 08:14:08 +02:00
audio
block hw/block: Drop unused nand.c 2025-05-29 17:45:13 +01:00
char MAX78000: UART Implementation 2025-07-08 17:31:38 +01:00
core target/arm: Introduce mmu indexes for GCS 2025-10-10 10:42:12 +01:00
cpu
cxl hw/cxl: mailbox-utils: 0x5604 - FMAPI Initiate DC Add 2025-07-15 02:56:40 -04:00
display hw/display/bcm2835_fb: Move inclusion of console.h to the .c file 2025-09-09 09:31:15 +02:00
dma include/hw/dma/xlnx_dpdma: Remove dependency on console.h 2025-05-14 11:50:42 +02:00
firmware hw/smbios: allow clearing the VM bit in SMBIOS table 0 2025-10-05 08:17:08 -04:00
fsi include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
gpio hw/gpio/aspeed: Fix definition of AspeedGPIOClass 2025-06-10 12:59:09 +02:00
hyperv include/hw/hyperv: Add MSHV ABI header definitions 2025-10-08 19:17:29 +02:00
i2c include/hw: replace FSF postal address with licenses URL 2025-06-26 00:42:37 +02:00
i386 intel-iommu: Move dma_translation to x86-iommu 2025-10-05 16:13:02 -04:00
ide include/system: Move exec/ioport.h to system/ioport.h 2025-04-23 14:08:21 -07:00
input
intc hw/loongarch/virt: Remove header file ls7a.h 2025-10-15 11:05:19 +08:00
ipack hw/ipack: Remove legacy qemu_allocate_irqs() use 2025-01-31 19:36:44 +01:00
ipmi include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
isa include/system: Move exec/ioport.h to system/ioport.h 2025-04-23 14:08:21 -07:00
loongarch hw/loongarch/virt: Sort order by hardware device base address 2025-10-15 11:07:37 +08:00
m68k include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
mem include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
mips include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
misc hw/misc/xlnx-versal-crl: add the versal2 version 2025-10-07 10:35:36 +01:00
net include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
nubus include/system: Move exec/address-spaces.h to system/address-spaces.h 2025-04-23 14:08:21 -07:00
nvram hw/nvram/aspeed_otp: Add ASPEED OTP memory device model 2025-09-29 18:00:20 +02:00
openrisc hw/openrisc: Support monitor dumpdtb command 2025-02-24 15:03:42 +00:00
pci pcie: Add a way to get the outstanding page request allocation (pri) from the config space. 2025-10-05 09:01:08 -04:00
pci-bridge
pci-host hw/loongarch/virt: Remove header file ls7a.h 2025-10-15 11:05:19 +08:00
ppc hw/ppc: Support for an IBM PPE42 CPU decrementer 2025-09-28 23:39:19 +05:30
remote include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
riscv hw/riscv: Initial support for BOSC's Xiangshan Kunminghu FPGA prototype 2025-07-04 21:09:49 +10:00
rtc
rx
s390x hw/s390x/ccw: Remove SCLPDevice::increment_size field 2025-10-21 15:47:21 +02:00
scsi esp.c: only allow ESP commands permitted in the current asc_mode 2025-07-15 00:25:21 +02:00
sd hw/sd/sdcard: Remove support for spec v1.10 2025-09-02 17:56:37 +02:00
sensor
sh4 include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
southbridge x86: ich9: fix default value of 'No Reboot' bit in GCS 2025-10-05 09:01:08 -04:00
sparc
ssi hw/ssi: Document ssi_transfer() method 2025-09-02 17:57:05 +02:00
timer include/hw: replace FSF postal address with licenses URL 2025-06-26 00:42:37 +02:00
tricore include/system: Move exec/address-spaces.h to system/address-spaces.h 2025-04-23 14:08:21 -07:00
uefi hw/uefi: add include/hw/uefi/var-service.h 2025-03-04 12:01:42 +01:00
usb hw/usb/hcd-dwc3: Align global registers size with Linux 2025-02-25 15:32:58 +00:00
vfio hw/vfio: Use uint64_t for IOVA mapping size in vfio_container_dma_*map 2025-10-02 10:41:23 +02:00
virtio virtio: unify virtio_notify_irqfd() and virtio_notify() 2025-10-05 09:01:08 -04:00
vmapple hw/vmapple/virtio-blk: Add support for apple virtio-blk 2025-03-04 14:45:34 +01:00
watchdog
xen hw/xen/arch_hvm: Unify x86 and ARM variants 2025-07-15 19:10:15 +02:00
xtensa include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
boards.h hw/core/machine: Remove MachineClass::fixup_ram_size callback 2025-10-21 15:47:21 +02:00
clock.h clock: clear callback on unparent 2024-12-10 18:49:24 +01:00
elf_ops.h.inc
fw-path-provider.h
hotplug.h
hw.h meson: Only allow CONFIG_USER_ONLY from certain source sets 2025-04-23 14:08:44 -07:00
irq.h hw/irq: New qemu_init_irq_child() function 2025-09-02 17:57:05 +02:00
loader-fit.h hw/mips/boston: Support dumpdtb monitor commands 2025-02-24 15:03:42 +00:00
loader.h hw/nvram/fw_cfg: Remove legacy FW_CFG_ORDER_OVERRIDE 2025-05-30 09:52:08 +02:00
nmi.h
or-irq.h
platform-bus.h
ptimer.h
qdev-clock.h
qdev-core.h virtio: improve virtqueue mapping error messages 2025-10-05 16:19:12 -04:00
qdev-dma.h
qdev-properties-system.h hw/display: Allow injection of virtio-gpu EDID name 2025-07-15 10:22:33 +04:00
qdev-properties.h qdev-properties: Add DEFINE_PROP_ON_OFF_AUTO_BIT64() 2025-07-14 05:25:34 -04:00
register.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
registerfields.h
resettable.h
stream.h
sysbus.h hw/core/sysbus: Introduce sysbus_mmio_map_name() helper 2025-07-15 02:56:40 -04:00
usb.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
vmstate-if.h