Fix the MPU (was a no-op stub), add peripheral devices, wire them into the tc27x SoC, and add the tc39xb SoC with TC397B machine.
The peripheral device models originate from the EFS-OpenSource QEMU fork [1], targeting QEMU 9.x. This series ports them to the current QEMU 11.x baseline with API fixes and adds TC3x register support needed for Zephyr RTOS boot. [1] https://github.com/EFS-OpenSource/qemu-tricore-patches Changes from the EFS baseline: - Ported to QEMU 11 APIs (resettable phases, const class_init, CharFrontend, hw/core/sysbus.h, DEVICE_LITTLE_ENDIAN, etc.) - STM: fixed address from 0xF0000000 to 0xF0001000 - IR: fixed address from 0xF0038000 to 0xF0037000 - SCU: added PLL locked status for Zephyr clock driver - STM: switched to monotonic counter for deterministic timing Patches 1-3: Fix memory protection registers, implement MPU, add tc39x CPU model. Patches 4-7: Add IR, ASCLIN UART, STM timer, SCU devices. Patch 8: Wire peripherals into tc27x SoC. Patch 9: Update MAINTAINERS (Orphan -> Maintained). Patch 10: Add tc39xb SoC and KIT_AURIX_TC397_TRB machine. Interrupt delivery and TC1.8 ISA will follow in separate series. Single-core emulation only (CPU0). Tested with bare-metal firmware on TC277 and TC397B boards. Existing TCG tests pass. The downstream release with TC4x and interrupt support is maintained at [2]. [2] https://gitlab.com/linumiz/infineon/release/qemu-aurix Signed-off-by: Parthiban Nallathambi <[email protected]> --- Parthiban Nallathambi (10): target/tricore: replace legacy DPM/CPM CSFRs with CPXE/DPRE/DPWE target/tricore: implement memory protection in get_physical_address target/tricore: add tc39x CPU model hw/intc: add TriCore interrupt router hw/char: add TriCore ASCLIN UART controller hw/timer: add TriCore System Timer Module (STM) hw/tricore: add System Control Unit (SCU) device hw/tricore: wire peripherals into tc27x SoC MAINTAINERS: take over TriCore and add peripheral file paths hw/tricore: add tc39xb SoC and KIT_AURIX_TC397_TRB machine MAINTAINERS | 9 +- hw/char/Kconfig | 3 + hw/char/meson.build | 1 + hw/char/tricore_asclin.c | 457 +++++++++++++++++++++++++++++++++++++++ hw/intc/Kconfig | 3 + hw/intc/meson.build | 1 + hw/intc/tricore_ir.c | 264 ++++++++++++++++++++++ hw/timer/Kconfig | 4 + hw/timer/meson.build | 2 + hw/timer/tricore_stm.c | 328 ++++++++++++++++++++++++++++ hw/tricore/Kconfig | 15 ++ hw/tricore/meson.build | 2 + hw/tricore/tc27x_soc.c | 62 ++++++ hw/tricore/tc39xb_soc.c | 366 +++++++++++++++++++++++++++++++ hw/tricore/triboard.c | 32 ++- hw/tricore/tricore_scu.c | 240 ++++++++++++++++++++ include/hw/char/tricore_asclin.h | 89 ++++++++ include/hw/intc/tricore_ir.h | 62 ++++++ include/hw/timer/tricore_stm.h | 76 +++++++ include/hw/tricore/tc27x_soc.h | 13 ++ include/hw/tricore/tc39xb_soc.h | 115 ++++++++++ include/hw/tricore/triboard.h | 2 + include/hw/tricore/tricore_scu.h | 103 +++++++++ target/tricore/cpu.c | 8 + target/tricore/csfr.h.inc | 20 +- target/tricore/helper.c | 242 ++++++++++++++++++++- 26 files changed, 2504 insertions(+), 15 deletions(-) --- base-commit: 81cc5f39aa3042e9c0b2ea772b42a2c8b1488e76 change-id: 20260531-dev-ifx-tricore-upstream-rebase-minimal-e18f56d421a6 Thanks, -- Parthiban Nallathambi <[email protected]>
