[PATCH 2/4] hw/riscv: connect the K230 CMU
Simon Law <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Simon Law <[email protected]> --- hw/riscv/k230.c | 14 +++++++++----- include/hw/riscv/k230.h | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c index 656f28190c..e50062f7df 100644 --- a/hw/riscv/k230.c +++ b/hw/riscv/k230.c @@ -108,6 +108,7 @@ static void k230_soc_init(Object *obj) RISCVHartArrayState *cpu0 = &s->c908_cpu; object_initialize_child(obj, "c908-cpu", cpu0, TYPE_RISCV_HART_ARRAY); + object_initialize_child(obj, "k230-cmu", &s->cmu, TYPE_K230_CMU); object_initialize_child(obj, "k230-wdt0", &s->wdt[0], TYPE_K230_WDT); object_initialize_child(obj, "k230-wdt1", &s->wdt[1], TYPE_K230_WDT); @@ -206,6 +207,12 @@ static void k230_soc_realize(DeviceState *dev, Error **errp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt[1]), 0, qdev_get_gpio_in(DEVICE(s->c908_plic), K230_WDT1_IRQ)); + if (!sysbus_realize(SYS_BUS_DEVICE(&s->cmu), errp)) { + return; + } + sysbus_mmio_map(SYS_BUS_DEVICE(&s->cmu), 0, K230_CMU_BASE_ADDR); + sysbus_mmio_map(SYS_BUS_DEVICE(&s->cmu), 1, K230_SYSCLK_BASE_ADDR); + /* unimplemented devices */ create_unimplemented_device("kpu.l2-cache", memmap[K230_DEV_KPU_L2_CACHE].base, @@ -265,14 +272,11 @@ static void k230_soc_realize(DeviceState *dev, Error **errp) create_unimplemented_device("rtc", memmap[K230_DEV_RTC].base, memmap[K230_DEV_RTC].size); - create_unimplemented_device("cmu", memmap[K230_DEV_CMU].base, - memmap[K230_DEV_CMU].size); - create_unimplemented_device("rmu", memmap[K230_DEV_RMU].base, memmap[K230_DEV_RMU].size); - create_unimplemented_device("boot", memmap[K230_DEV_BOOT].base, - memmap[K230_DEV_BOOT].size); + create_unimplemented_device("boot", K230_CMU_BASE_ADDR + K230_CMU_SIZE, + memmap[K230_DEV_BOOT].size - K230_CMU_SIZE); create_unimplemented_device("pwr", memmap[K230_DEV_PWR].base, memmap[K230_DEV_PWR].size); diff --git a/include/hw/riscv/k230.h b/include/hw/riscv/k230.h index 592e1c26bf..5e1579c5b3 100644 --- a/include/hw/riscv/k230.h +++ b/include/hw/riscv/k230.h @@ -16,6 +16,7 @@ #define HW_K230_H #include "hw/core/boards.h" +#include "hw/misc/k230_cmu.h" #include "hw/riscv/riscv_hart.h" #include "hw/watchdog/k230_wdt.h" @@ -32,6 +33,7 @@ typedef struct K230SoCState { /*< public >*/ RISCVHartArrayState c908_cpu; /* Small core */ + K230CmuState cmu; K230WdtState wdt[2]; MemoryRegion sram; MemoryRegion bootrom; -- 2.43.0