sparc32-espdma: use object_initialize_child() for esp child object

Store the child object directly within the sparc32-espdma object rather than
using link properties.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20200926140216.7368-4-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
Mark Cave-Ayland 2020-09-26 15:02:13 +01:00
parent bce83ed998
commit d19265eaf5
2 changed files with 8 additions and 9 deletions

View File

@ -290,27 +290,26 @@ static const TypeInfo sparc32_dma_device_info = {
static void sparc32_espdma_device_init(Object *obj) static void sparc32_espdma_device_init(Object *obj)
{ {
DMADeviceState *s = SPARC32_DMA_DEVICE(obj); DMADeviceState *s = SPARC32_DMA_DEVICE(obj);
ESPDMADeviceState *es = SPARC32_ESPDMA_DEVICE(obj);
memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s,
"espdma-mmio", DMA_SIZE); "espdma-mmio", DMA_SIZE);
object_initialize_child(obj, "esp", &es->esp, TYPE_ESP);
} }
static void sparc32_espdma_device_realize(DeviceState *dev, Error **errp) static void sparc32_espdma_device_realize(DeviceState *dev, Error **errp)
{ {
DeviceState *d; ESPDMADeviceState *es = SPARC32_ESPDMA_DEVICE(dev);
SysBusESPState *sysbus; SysBusESPState *sysbus = ESP(&es->esp);
ESPState *esp; ESPState *esp = &sysbus->esp;
d = qdev_new(TYPE_ESP);
object_property_add_child(OBJECT(dev), "esp", OBJECT(d));
sysbus = ESP(d);
esp = &sysbus->esp;
esp->dma_memory_read = espdma_memory_read; esp->dma_memory_read = espdma_memory_read;
esp->dma_memory_write = espdma_memory_write; esp->dma_memory_write = espdma_memory_write;
esp->dma_opaque = SPARC32_DMA_DEVICE(dev); esp->dma_opaque = SPARC32_DMA_DEVICE(dev);
sysbus->it_shift = 2; sysbus->it_shift = 2;
esp->dma_enabled = 1; esp->dma_enabled = 1;
sysbus_realize_and_unref(SYS_BUS_DEVICE(d), &error_fatal); sysbus_realize(SYS_BUS_DEVICE(sysbus), &error_fatal);
} }
static void sparc32_espdma_device_class_init(ObjectClass *klass, void *data) static void sparc32_espdma_device_class_init(ObjectClass *klass, void *data)

View File

@ -28,7 +28,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(ESPDMADeviceState, SPARC32_ESPDMA_DEVICE)
struct ESPDMADeviceState { struct ESPDMADeviceState {
DMADeviceState parent_obj; DMADeviceState parent_obj;
SysBusESPState *esp; SysBusESPState esp;
}; };
#define TYPE_SPARC32_LEDMA_DEVICE "sparc32-ledma" #define TYPE_SPARC32_LEDMA_DEVICE "sparc32-ledma"