diff mbox series

[v6,17/17] hw/loongarch: Add cells missing from rtc node

Message ID 20240307164835.300412-18-gaosong@loongson.cn
State New
Headers show
Series Add boot LoongArch elf kernel with FDT | expand

Commit Message

Song Gao March 7, 2024, 4:48 p.m. UTC
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(-)

Comments

maobibo March 8, 2024, 8:45 a.m. UTC | #1
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 mbox series

Patch

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);