From e50b5773dec7f9082e4f38cdbd8c33229b94bce9 Mon Sep 17 00:00:00 2001 From: chao an Date: Mon, 10 Feb 2025 13:24:31 +0800 Subject: [PATCH] arm64/qemu/fdt: remove duplicate mmio parser code reuse fdt_virtio_mmio_devices_register() to avoid duplicate Signed-off-by: chao an --- .../arm64/qemu/qemu-armv8a/src/qemu_bringup.c | 41 +++++-------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/boards/arm64/qemu/qemu-armv8a/src/qemu_bringup.c b/boards/arm64/qemu/qemu-armv8a/src/qemu_bringup.c index 9bb4cd5f87..279b8ef099 100644 --- a/boards/arm64/qemu/qemu-armv8a/src/qemu_bringup.c +++ b/boards/arm64/qemu/qemu-armv8a/src/qemu_bringup.c @@ -59,36 +59,6 @@ ****************************************************************************/ #if defined(CONFIG_LIBC_FDT) && defined(CONFIG_DEVICE_TREE) -#ifdef CONFIG_DRIVERS_VIRTIO_MMIO - -/**************************************************************************** - * Name: register_virtio_devices_from_fdt - ****************************************************************************/ - -static void register_virtio_devices_from_fdt(const void *fdt) -{ - uintptr_t addr; - int offset = -1; - int irqnum; - - for (; ; ) - { - offset = fdt_node_offset_by_compatible(fdt, offset, "virtio,mmio"); - if (offset == -FDT_ERR_NOTFOUND) - { - break; - } - - addr = fdt_get_reg_base(fdt, offset, 0); - irqnum = fdt_get_irq(fdt, offset, 1, QEMU_SPI_IRQ_BASE); - if (addr > 0 && irqnum >= 0) - { - virtio_register_mmio_device((void *)addr, irqnum); - } - } -} - -#endif /**************************************************************************** * Name: register_pci_host_from_fdt @@ -181,6 +151,7 @@ static void register_pci_host_from_fdt(const void *fdt) static void register_devices_from_fdt(void) { const void *fdt = fdt_get(); + int ret; if (fdt == NULL) { @@ -188,12 +159,20 @@ static void register_devices_from_fdt(void) } #ifdef CONFIG_DRIVERS_VIRTIO_MMIO - register_virtio_devices_from_fdt(fdt); + + ret = fdt_virtio_mmio_devices_register(fdt, QEMU_SPI_IRQ_BASE); + if (ret < 0) + { + syslog(LOG_ERR, "fdt_virtio_mmio_devices_register failed, ret=%d\n", + ret); + } #endif #ifdef CONFIG_PCI register_pci_host_from_fdt(fdt); #endif + + UNUSED(ret); } #endif