Previously we added synthetic machines intended for compatibility with programs created by the Hexagon SDK. These simple configurations have a memory/irq map that doesn't match any real chips, and they are limited to an interrupt controller and a timer device.
Here we add DSP machines that reflect real-world devices and run some of the commercial firmware to test it. Note that for now the boot will not progress much beyond the initial kernel boot. Dependencies on other yet-to-be-modeled devices are preventing the firmware from coming up fully to a steady/idle state. Brian Cain (14): Hexagon: add v85 CPU model hw/hexagon: let a machine place its DDR hw/hexagon: introduce hex-board abstraction hw/hexagon: convert virt board to hex-board hw/misc: add the QDSP6SS PLL, RCG hw/hexagon: add the QCS6490 CDSP machine hw/hexagon: add the SA8775P CDSP machine hw/hexagon: add the SC8480XP NSP0 machine hw/hexagon: add the SA8797P NSP0 machine hw/hexagon: add the SM8975 NSP machine hw/hexagon: add v79NA1 machine hw/hexagon: add subsystem-base property target/hexagon: fix the allocframe framekey tests/functional/hexagon: boot DSP firmware MAINTAINERS | 6 + docs/system/hexagon/emulation.rst | 2 +- include/hw/hexagon/hex-board.h | 65 +++ include/hw/hexagon/hexagon.h | 10 + include/hw/hexagon/qcom_dsp.h | 81 ++++ include/hw/hexagon/virt.h | 6 - include/hw/misc/qcom-qdsp6ss-clk.h | 15 + target/hexagon/cpu-qom.h | 4 + hw/hexagon/machine_cfg_qcs6490_cdsp.h.inc | 65 +++ hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc | 6 +- hw/hexagon/machine_cfg_sa8797p_nsp0.h.inc | 56 +++ hw/hexagon/machine_cfg_sc8480xp_nsp0.h.inc | 52 +++ hw/hexagon/machine_cfg_sm8975_nsp.h.inc | 55 +++ hw/hexagon/machine_cfg_v79na_1.h.inc | 34 ++ hw/hexagon/hex-board.c | 265 ++++++++++++ hw/hexagon/hex-subsys.c | 4 +- hw/hexagon/hexagon_dsp.c | 84 +++- hw/hexagon/qcom_dsp.c | 399 ++++++++++++++++++ hw/hexagon/qcs6490_cdsp.c | 64 +++ hw/hexagon/sa8775p_cdsp.c | 59 +++ hw/hexagon/sa8797p_nsp0.c | 68 +++ hw/hexagon/sc8480xp_nsp0.c | 90 ++++ hw/hexagon/sm8975_nsp.c | 102 +++++ hw/hexagon/virt.c | 309 ++------------ hw/misc/qcom-qdsp6ss-clk.c | 208 +++++++++ linux-user/hexagon/elfload.c | 4 + target/hexagon/cpu.c | 2 + target/hexagon/idef-parser/parser-helpers.c | 2 +- tests/qtest/hexagon-config-test.c | 78 ++++ tests/qtest/l2vic-test.c | 10 + tests/qtest/qcom-dsp-test.c | 113 +++++ tests/qtest/qct-qtimer-test.c | 10 + tests/tcg/hexagon/framekey.c | 67 +++ hw/hexagon/Kconfig | 48 ++- hw/hexagon/meson.build | 7 + hw/misc/Kconfig | 3 + hw/misc/meson.build | 3 + tests/functional/hexagon/meson.build | 2 + .../hexagon/test_qcom_dsp_firmware.py | 89 ++++ tests/qtest/meson.build | 4 +- tests/tcg/hexagon/meson.build | 1 + 41 files changed, 2254 insertions(+), 298 deletions(-) create mode 100644 include/hw/hexagon/hex-board.h create mode 100644 include/hw/hexagon/qcom_dsp.h create mode 100644 include/hw/misc/qcom-qdsp6ss-clk.h create mode 100644 hw/hexagon/machine_cfg_qcs6490_cdsp.h.inc create mode 100644 hw/hexagon/machine_cfg_sa8797p_nsp0.h.inc create mode 100644 hw/hexagon/machine_cfg_sc8480xp_nsp0.h.inc create mode 100644 hw/hexagon/machine_cfg_sm8975_nsp.h.inc create mode 100644 hw/hexagon/machine_cfg_v79na_1.h.inc create mode 100644 hw/hexagon/hex-board.c create mode 100644 hw/hexagon/qcom_dsp.c create mode 100644 hw/hexagon/qcs6490_cdsp.c create mode 100644 hw/hexagon/sa8775p_cdsp.c create mode 100644 hw/hexagon/sa8797p_nsp0.c create mode 100644 hw/hexagon/sc8480xp_nsp0.c create mode 100644 hw/hexagon/sm8975_nsp.c create mode 100644 hw/misc/qcom-qdsp6ss-clk.c create mode 100644 tests/qtest/hexagon-config-test.c create mode 100644 tests/qtest/qcom-dsp-test.c create mode 100644 tests/tcg/hexagon/framekey.c create mode 100755 tests/functional/hexagon/test_qcom_dsp_firmware.py -- 2.34.1
