Skip to content

Commit

Permalink
sparc32_dma: use object link instead of qdev property to pass IOMMU r…
Browse files Browse the repository at this point in the history
…eference

This enables us to remove the last remaining (opaque) qdev property. Whilst we
are here, also update iommu_init() to use TYPE_SUN4M_IOMMU instead of a
hardcoded string.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Artyom Tarasenko <atar4qemu@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
  • Loading branch information
mcayland committed Oct 31, 2017
1 parent 9227f29 commit f542ad0
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 10 deletions.
13 changes: 5 additions & 8 deletions hw/dma/sparc32_dma.c
Expand Up @@ -263,24 +263,21 @@ static void sparc32_dma_device_init(Object *obj)

sysbus_init_mmio(sbd, &s->iomem);

object_property_add_link(OBJECT(dev), "iommu", TYPE_SUN4M_IOMMU,
(Object **) &s->iommu,
qdev_prop_allow_set_link_before_realize,
0, NULL);

qdev_init_gpio_in(dev, dma_set_irq, 1);
qdev_init_gpio_out(dev, s->gpio, 2);
}

static Property sparc32_dma_device_properties[] = {
DEFINE_PROP_PTR("iommu_opaque", DMADeviceState, iommu),
DEFINE_PROP_END_OF_LIST(),
};

static void sparc32_dma_device_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);

dc->reset = sparc32_dma_device_reset;
dc->vmsd = &vmstate_sparc32_dma_device;
dc->props = sparc32_dma_device_properties;
/* Reason: pointer property "iommu_opaque" */
dc->user_creatable = false;
}

static const TypeInfo sparc32_dma_device_info = {
Expand Down
4 changes: 2 additions & 2 deletions hw/sparc/sun4m.c
Expand Up @@ -296,7 +296,7 @@ static void *iommu_init(hwaddr addr, uint32_t version, qemu_irq irq)
DeviceState *dev;
SysBusDevice *s;

dev = qdev_create(NULL, "iommu");
dev = qdev_create(NULL, TYPE_SUN4M_IOMMU);
qdev_prop_set_uint32(dev, "version", version);
qdev_init_nofail(dev);
s = SYS_BUS_DEVICE(dev);
Expand All @@ -312,7 +312,7 @@ static void *sparc32_dma_init(hwaddr daddr, void *iommu, int is_ledma)
SysBusDevice *s;

dev = qdev_create(NULL, is_ledma ? "sparc32-ledma" : "sparc32-espdma");
qdev_prop_set_ptr(dev, "iommu_opaque", iommu);
object_property_set_link(OBJECT(dev), OBJECT(iommu), "iommu", &error_abort);
qdev_init_nofail(dev);
s = SYS_BUS_DEVICE(dev);
sysbus_mmio_map(s, 0, daddr);
Expand Down

0 comments on commit f542ad0

Please sign in to comment.