All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Kendryte K230 CMU register model
@ 2026-08-09  6:20 Simon Law
  2026-08-09  6:20 ` [PATCH 1/4] hw/misc: model K230 CMU registers Simon Law
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Simon Law @ 2026-08-09  6:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-riscv, chao.liu, palmer, alistair.francis, liwei1518,
	daniel.barboza, zhiwei_liu, pierrick.bouvier

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 <0860734llx@gmail.com>
---
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 <0860734llx@gmail.com>


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-08-18  5:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-09  6:20 [PATCH 0/4] Kendryte K230 CMU register model Simon Law
2026-08-09  6:20 ` [PATCH 1/4] hw/misc: model K230 CMU registers Simon Law
2026-08-18  5:37   ` Chao Liu
2026-08-09  6:20 ` [PATCH 2/4] hw/riscv: connect the K230 CMU Simon Law
2026-08-09  6:20 ` [PATCH 3/4] tests/qtest: add K230 CMU coverage Simon Law
2026-08-09  6:20 ` [PATCH 4/4] docs/system/riscv: document K230 CMU support Simon Law
2026-08-14  7:53 ` [PATCH 0/4] Kendryte K230 CMU register model Bin Meng
2026-08-17  8:55   ` Niel Law

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.