Message ID | 20240307164835.300412-18-gaosong@loongson.cn |
---|---|
State | New |
Headers | show |
Series | Add boot LoongArch elf kernel with FDT | expand |
On 2024/3/8 上午12:48, Song Gao wrote: > rtc node need interrupts and interrupt-parent cells. > > Signed-off-by: Song Gao <gaosong@loongson.cn> > Message-Id: <20240301093839.663947-18-gaosong@loongson.cn> > --- > hw/loongarch/virt.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c > index 58957a8d9a..676f1f5227 100644 > --- a/hw/loongarch/virt.c > +++ b/hw/loongarch/virt.c > @@ -231,7 +231,8 @@ static void fdt_add_flash_node(LoongArchMachineState *lams) > g_free(nodename); > } > > -static void fdt_add_rtc_node(LoongArchMachineState *lams) > +static void fdt_add_rtc_node(LoongArchMachineState *lams, > + uint32_t *pch_pic_phandle) > { > char *nodename; > hwaddr base = VIRT_RTC_REG_BASE; > @@ -240,8 +241,13 @@ static void fdt_add_rtc_node(LoongArchMachineState *lams) > > nodename = g_strdup_printf("/rtc@%" PRIx64, base); > qemu_fdt_add_subnode(ms->fdt, nodename); > - qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "loongson,ls7a-rtc"); > + qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", > + "loongson,ls7a-rtc"); > qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, base, 2, size); > + qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", > + VIRT_RTC_IRQ - VIRT_GSI_BASE , 0x4); > + qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent", > + *pch_pic_phandle); > g_free(nodename); > } > > @@ -647,7 +653,7 @@ static void loongarch_devices_init(DeviceState *pch_pic, > sysbus_create_simple("ls7a_rtc", VIRT_RTC_REG_BASE, > qdev_get_gpio_in(pch_pic, > VIRT_RTC_IRQ - VIRT_GSI_BASE)); > - fdt_add_rtc_node(lams); > + fdt_add_rtc_node(lams, pch_pic_phandle); > > /* acpi ged */ > lams->acpi_ged = create_acpi_ged(pch_pic, lams); > Reviewed-by: Bibo Mao <maobibo@loongson.cn>
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 58957a8d9a..676f1f5227 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -231,7 +231,8 @@ static void fdt_add_flash_node(LoongArchMachineState *lams) g_free(nodename); } -static void fdt_add_rtc_node(LoongArchMachineState *lams) +static void fdt_add_rtc_node(LoongArchMachineState *lams, + uint32_t *pch_pic_phandle) { char *nodename; hwaddr base = VIRT_RTC_REG_BASE; @@ -240,8 +241,13 @@ static void fdt_add_rtc_node(LoongArchMachineState *lams) nodename = g_strdup_printf("/rtc@%" PRIx64, base); qemu_fdt_add_subnode(ms->fdt, nodename); - qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "loongson,ls7a-rtc"); + qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", + "loongson,ls7a-rtc"); qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, base, 2, size); + qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", + VIRT_RTC_IRQ - VIRT_GSI_BASE , 0x4); + qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent", + *pch_pic_phandle); g_free(nodename); } @@ -647,7 +653,7 @@ static void loongarch_devices_init(DeviceState *pch_pic, sysbus_create_simple("ls7a_rtc", VIRT_RTC_REG_BASE, qdev_get_gpio_in(pch_pic, VIRT_RTC_IRQ - VIRT_GSI_BASE)); - fdt_add_rtc_node(lams); + fdt_add_rtc_node(lams, pch_pic_phandle); /* acpi ged */ lams->acpi_ged = create_acpi_ged(pch_pic, lams);
rtc node need interrupts and interrupt-parent cells. Signed-off-by: Song Gao <gaosong@loongson.cn> Message-Id: <20240301093839.663947-18-gaosong@loongson.cn> --- hw/loongarch/virt.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)