mac_dbdma: remove DBDMA_init() function

Instead we can now instantiate the MAC_DBDMA object directly within the
macio device. We also add the DBDMA device as a child property so that
it is possible to retrieve later.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Mark Cave-Ayland 2017-09-24 15:47:42 +01:00 committed by David Gibson
parent 1d27f351af
commit ecba28dbf2
3 changed files with 12 additions and 19 deletions

View File

@ -886,20 +886,6 @@ static void dbdma_unassigned_flush(DBDMA_io *io)
__func__, ch->channel); __func__, ch->channel);
} }
void* DBDMA_init (MemoryRegion **dbdma_mem)
{
DBDMAState *s;
SysBusDevice *sbd;
s = MAC_DBDMA(object_new(TYPE_MAC_DBDMA));
object_property_set_bool(OBJECT(s), true, "realized", NULL);
sbd = SYS_BUS_DEVICE(s);
*dbdma_mem = sysbus_mmio_get_region(sbd, 0);
return s;
}
static void mac_dbdma_init(Object *obj) static void mac_dbdma_init(Object *obj)
{ {
SysBusDevice *sbd = SYS_BUS_DEVICE(obj); SysBusDevice *sbd = SYS_BUS_DEVICE(obj);

View File

@ -41,7 +41,7 @@ typedef struct MacIOState
MemoryRegion bar; MemoryRegion bar;
CUDAState cuda; CUDAState cuda;
void *dbdma; DBDMAState *dbdma;
MemoryRegion *pic_mem; MemoryRegion *pic_mem;
MemoryRegion *escc_mem; MemoryRegion *escc_mem;
uint64_t frequency; uint64_t frequency;
@ -127,10 +127,15 @@ static void macio_common_realize(PCIDevice *d, Error **errp)
MacIOState *s = MACIO(d); MacIOState *s = MACIO(d);
SysBusDevice *sysbus_dev; SysBusDevice *sysbus_dev;
Error *err = NULL; Error *err = NULL;
MemoryRegion *dbdma_mem;
s->dbdma = DBDMA_init(&dbdma_mem); object_property_set_bool(OBJECT(s->dbdma), true, "realized", &err);
memory_region_add_subregion(&s->bar, 0x08000, dbdma_mem); if (err) {
error_propagate(errp, err);
return;
}
sysbus_dev = SYS_BUS_DEVICE(s->dbdma);
memory_region_add_subregion(&s->bar, 0x08000,
sysbus_mmio_get_region(sysbus_dev, 0));
object_property_set_bool(OBJECT(&s->cuda), true, "realized", &err); object_property_set_bool(OBJECT(&s->cuda), true, "realized", &err);
if (err) { if (err) {
@ -334,6 +339,9 @@ static void macio_instance_init(Object *obj)
object_initialize(&s->cuda, sizeof(s->cuda), TYPE_CUDA); object_initialize(&s->cuda, sizeof(s->cuda), TYPE_CUDA);
qdev_set_parent_bus(DEVICE(&s->cuda), sysbus_get_default()); qdev_set_parent_bus(DEVICE(&s->cuda), sysbus_get_default());
object_property_add_child(obj, "cuda", OBJECT(&s->cuda), NULL); object_property_add_child(obj, "cuda", OBJECT(&s->cuda), NULL);
s->dbdma = MAC_DBDMA(object_new(TYPE_MAC_DBDMA));
object_property_add_child(obj, "dbdma", OBJECT(s->dbdma), NULL);
} }
static const VMStateDescription vmstate_macio_oldworld = { static const VMStateDescription vmstate_macio_oldworld = {

View File

@ -174,7 +174,6 @@ void DBDMA_register_channel(void *dbdma, int nchan, qemu_irq irq,
DBDMA_rw rw, DBDMA_flush flush, DBDMA_rw rw, DBDMA_flush flush,
void *opaque); void *opaque);
void DBDMA_kick(DBDMAState *dbdma); void DBDMA_kick(DBDMAState *dbdma);
void* DBDMA_init (MemoryRegion **dbdma_mem);
#define TYPE_MAC_DBDMA "mac-dbdma" #define TYPE_MAC_DBDMA "mac-dbdma"
#define MAC_DBDMA(obj) OBJECT_CHECK(DBDMAState, (obj), TYPE_MAC_DBDMA) #define MAC_DBDMA(obj) OBJECT_CHECK(DBDMAState, (obj), TYPE_MAC_DBDMA)