mirror of
https://gitlab.com/qemu-project/qemu.git
synced 2026-08-26 22:23:12 -04:00
hw/riscv: k230: add gsdma in K230 board
This commit replaces the unimplemented part of GSDMA in K230. And connect the interrupt to plic. Update K230.rst. Signed-off-by: Tao Ding <dingtao0430@163.com> Reviewed-by: Junze Cao <caojunze424@gmail.com> Reviewed-by: Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com> Message-ID: <20260808062227.66961-3-dingtao0430@163.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
54bc6c4f15
commit
dde8fbba19
4 changed files with 14 additions and 3 deletions
|
|
@ -21,6 +21,7 @@ The ``k230`` machine supports the following devices:
|
|||
* 2 K230 Watchdog Timer
|
||||
* 5 UART
|
||||
* K230 DDRC CFG and DDR PHY
|
||||
* System Direct Memory Access (SDMA)
|
||||
|
||||
Boot options
|
||||
------------
|
||||
|
|
|
|||
|
|
@ -162,3 +162,4 @@ config K230
|
|||
select SERIAL_MM
|
||||
select UNIMP
|
||||
select K230_WDT
|
||||
select K230_GSDMA
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ static void k230_soc_init(Object *obj)
|
|||
s->ddr_cfg.phy = &s->ddr_phy;
|
||||
object_initialize_child(obj, "k230-wdt0", &s->wdt[0], TYPE_K230_WDT);
|
||||
object_initialize_child(obj, "k230-wdt1", &s->wdt[1], TYPE_K230_WDT);
|
||||
object_initialize_child(obj, "k230-gsdma", &s->gsdma, TYPE_K230_GSDMA);
|
||||
|
||||
qdev_prop_set_uint32(DEVICE(cpu0), "hartid-base", 0);
|
||||
qdev_prop_set_string(DEVICE(cpu0), "cpu-type", TYPE_RISCV_CPU_THEAD_C908);
|
||||
|
|
@ -222,6 +223,14 @@ 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));
|
||||
|
||||
/* Gsdma */
|
||||
if (!sysbus_realize(SYS_BUS_DEVICE(&s->gsdma), errp)) {
|
||||
return;
|
||||
}
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->gsdma), 0, memmap[K230_DEV_GSDMA].base);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->gsdma), 0,
|
||||
qdev_get_gpio_in(DEVICE(s->c908_plic), K230_GSDMA_IRQ));
|
||||
|
||||
/* unimplemented devices */
|
||||
create_unimplemented_device("kpu.l2-cache",
|
||||
memmap[K230_DEV_KPU_L2_CACHE].base,
|
||||
|
|
@ -237,9 +246,6 @@ static void k230_soc_realize(DeviceState *dev, Error **errp)
|
|||
memmap[K230_DEV_AI_2D_ENGINE].base,
|
||||
memmap[K230_DEV_AI_2D_ENGINE].size);
|
||||
|
||||
create_unimplemented_device("gsdma", memmap[K230_DEV_GSDMA].base,
|
||||
memmap[K230_DEV_GSDMA].size);
|
||||
|
||||
create_unimplemented_device("dma", memmap[K230_DEV_DMA].base,
|
||||
memmap[K230_DEV_DMA].size);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include "hw/misc/k230_ddr.h"
|
||||
#include "hw/riscv/riscv_hart.h"
|
||||
#include "hw/watchdog/k230_wdt.h"
|
||||
#include "hw/dma/k230_gsdma.h"
|
||||
|
||||
#define C908_CPU_HARTID (0)
|
||||
|
||||
|
|
@ -36,6 +37,7 @@ typedef struct K230SoCState {
|
|||
K230DDRCfgState ddr_cfg;
|
||||
K230DDRPhyState ddr_phy;
|
||||
K230WdtState wdt[2];
|
||||
K230GSDMAState gsdma;
|
||||
MemoryRegion sram;
|
||||
MemoryRegion bootrom;
|
||||
|
||||
|
|
@ -133,6 +135,7 @@ enum {
|
|||
K230_UART4_IRQ = 20,
|
||||
K230_WDT0_IRQ = 107,
|
||||
K230_WDT1_IRQ = 108,
|
||||
K230_GSDMA_IRQ = 140,
|
||||
};
|
||||
|
||||
#define K230_UART_COUNT 5
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue