On 2024/3/8 上午12:48, Song Gao wrote:
> uart node need interrupts and interrupt-parent cells.
>
> Signed-off-by: Song Gao <gaosong@loongson.cn>
> Message-Id: <20240301093839.663947-17-gaosong@loongson.cn>
> ---
> hw/loongarch/virt.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
> index c80732a223..58957a8d9a 100644
> --- a/hw/loongarch/virt.c
> +++ b/hw/loongarch/virt.c
> @@ -245,7 +245,8 @@ static void fdt_add_rtc_node(LoongArchMachineState *lams)
> g_free(nodename);
> }
>
> -static void fdt_add_uart_node(LoongArchMachineState *lams)
> +static void fdt_add_uart_node(LoongArchMachineState *lams,
> + uint32_t *pch_pic_phandle)
> {
> char *nodename;
> hwaddr base = VIRT_UART_BASE;
> @@ -258,6 +259,10 @@ static void fdt_add_uart_node(LoongArchMachineState *lams)
> qemu_fdt_setprop_cells(ms->fdt, nodename, "reg", 0x0, base, 0x0, size);
> qemu_fdt_setprop_cell(ms->fdt, nodename, "clock-frequency", 100000000);
> qemu_fdt_setprop_string(ms->fdt, "/chosen", "stdout-path", nodename);
> + qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts",
> + VIRT_UART_IRQ - VIRT_GSI_BASE, 0x4);
> + qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent",
> + *pch_pic_phandle);
> g_free(nodename);
> }
>
> @@ -629,7 +634,7 @@ static void loongarch_devices_init(DeviceState *pch_pic,
> qdev_get_gpio_in(pch_pic,
> VIRT_UART_IRQ - VIRT_GSI_BASE),
> 115200, serial_hd(0), DEVICE_LITTLE_ENDIAN);
> - fdt_add_uart_node(lams);
> + fdt_add_uart_node(lams, pch_pic_phandle);
>
> /* Network init */
> pci_init_nic_devices(pci_bus, mc->default_nic);
>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>