The Kendryte K230 machine currently lacks the Clock Management Unit (CMU)
  register interface required by the K230 SDK U-Boot and the Linux K230 clock
  driver. As a result, software probing the PLL and sysclk providers cannot
  observe the expected reset values or register update semantics.

  This series adds a minimal, deterministic K230 CMU model.

  The model covers:

  - four PLL register blocks at 0x91102000..0x9110203f;
  - the defined sysclk registers in the 0x91100000 window;
  - the software-visible SPI2AXI_CLK_DIV register at sysclk offset 0x108;
  - reset values and writable/reserved/read-only masks;
  - PLL control write-enable semantics;
  - write-one-to-trigger update behavior;
  - deterministic PLL lock and initialization status;
  - VMState for stable PLL and sysclk register state;
  - qtest coverage for reset, masks, write-enable, W1T, status, sysclk
    updates, unknown offsets, and system reset;
  - K230 machine wiring and user-facing documentation.

  The model intentionally does not propagate clock frequencies to QEMU devices 
or
  change CPU execution speed. Peripheral reset, power control, and the
  guest-initiated K230 reboot backend remain outside the scope of this series.
  Those functions require separate reset/power models and a matching OpenSBI
  backend.

  The implementation is based only on the existing K230 machine and does not
  depend on unmerged RMU, Timer, SPI, or SDHCI device series.

  Testing:
  - QTEST_QEMU_BINARY=/workspace/qemu/build/qemu-system-riscv64
    /workspace/qemu/build/tests/qtest/k230-cmu-test
    (10/10 subtests passed)
  - QTEST_QEMU_BINARY=/workspace/qemu/build/qemu-system-riscv64
    /workspace/qemu/build/tests/qtest/k230-wdt-test
    (7/7 subtests passed)
  - K230 direct Linux boot and K230 U-Boot boot
  - Linux K230 clock probe and clk_summary validation
  - CMU source/destination migration smoke

Signed-off-by: Simon Law <[email protected]>
---
Simon Law (4):
      hw/misc: model K230 CMU registers
      hw/riscv: connect the K230 CMU
      tests/qtest: add K230 CMU coverage
      docs/system/riscv: document K230 CMU support

 MAINTAINERS                 |   4 +
 docs/system/riscv/k230.rst  |  22 ++
 hw/misc/Kconfig             |   3 +
 hw/misc/k230_cmu.c          | 881 ++++++++++++++++++++++++++++++++++++++++++++
 hw/misc/meson.build         |   1 +
 hw/misc/trace-events        |   9 +
 hw/riscv/Kconfig            |   1 +
 hw/riscv/k230.c             |  14 +-
 include/hw/misc/k230_cmu.h  |  58 +++
 include/hw/riscv/k230.h     |   2 +
 tests/qtest/k230-cmu-test.c | 310 ++++++++++++++++
 tests/qtest/meson.build     |   3 +-
 12 files changed, 1302 insertions(+), 6 deletions(-)
---
base-commit: f893c46c3931b3684d235d221bf8b7844ddbf1d7
change-id: 20260809-feat-k230-cmu-9b62e6dd23f3

Best regards,
-- 
Simon Law <[email protected]>

Reply via email to