Message ID | 981b663f6a44f9f82f32cc58219f6af26f73d66f.1661159474.git.viresh.kumar@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Virtio toolstack support for I2C and GPIO on Arm | expand |
On Mon, Aug 22, 2022 at 02:45:16PM +0530, Viresh Kumar wrote: > make_virtio_mmio_node() creates the DT node for simple MMIO devices > currently, i.e. the ones that don't require any additional properties. > > In order to allow using it for other complex device types, split the > functionality into two, one where the fdt node isn't closed and the > other one to create a simple DT node. > > Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c > index 0e3051bac5e4..4d0469f8166a 100644 > --- a/tools/libs/light/libxl_arm.c > +++ b/tools/libs/light/libxl_arm.c > @@ -1267,8 +1275,9 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config, > iommu_created = true; > } > > - FDT( make_virtio_mmio_node(gc, fdt, disk->base, disk->irq, > - disk->backend_domid) ); > + FDT( make_virtio_mmio_node_simple(gc, fdt, disk->base, Renaming that function to add the suffix "_simple" doesn't meaning full, could you keep the same name? > + disk->irq, > + disk->backend_domid) ); > } > } > Thanks,
diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 0e3051bac5e4..4d0469f8166a 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -906,9 +906,9 @@ static int make_xen_iommu_node(libxl__gc *gc, void *fdt) return 0; } -static int make_virtio_mmio_node(libxl__gc *gc, void *fdt, - uint64_t base, uint32_t irq, - uint32_t backend_domid) +/* The caller is responsible to complete / close the fdt node */ +static int make_virtio_mmio_node_common(libxl__gc *gc, void *fdt, uint64_t base, + uint32_t irq, uint32_t backend_domid) { int res; gic_interrupt intr; @@ -941,10 +941,18 @@ static int make_virtio_mmio_node(libxl__gc *gc, void *fdt, if (res) return res; } - res = fdt_end_node(fdt); + return res; +} + +static int make_virtio_mmio_node_simple(libxl__gc *gc, void *fdt, uint64_t base, + uint32_t irq, uint32_t backend_domid) +{ + int res; + + res = make_virtio_mmio_node_common(gc, fdt, base, irq, backend_domid); if (res) return res; - return 0; + return fdt_end_node(fdt); } static const struct arch_info *get_arch_info(libxl__gc *gc, @@ -1267,8 +1275,9 @@ static int libxl__prepare_dtb(libxl__gc *gc, libxl_domain_config *d_config, iommu_created = true; } - FDT( make_virtio_mmio_node(gc, fdt, disk->base, disk->irq, - disk->backend_domid) ); + FDT( make_virtio_mmio_node_simple(gc, fdt, disk->base, + disk->irq, + disk->backend_domid) ); } }