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:
		
							parent
							
								
									1d27f351af
								
							
						
					
					
						commit
						ecba28dbf2
					
				| 
						 | 
				
			
			@ -886,20 +886,6 @@ static void dbdma_unassigned_flush(DBDMA_io *io)
 | 
			
		|||
                  __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)
 | 
			
		||||
{
 | 
			
		||||
    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ typedef struct MacIOState
 | 
			
		|||
 | 
			
		||||
    MemoryRegion bar;
 | 
			
		||||
    CUDAState cuda;
 | 
			
		||||
    void *dbdma;
 | 
			
		||||
    DBDMAState *dbdma;
 | 
			
		||||
    MemoryRegion *pic_mem;
 | 
			
		||||
    MemoryRegion *escc_mem;
 | 
			
		||||
    uint64_t frequency;
 | 
			
		||||
| 
						 | 
				
			
			@ -127,10 +127,15 @@ static void macio_common_realize(PCIDevice *d, Error **errp)
 | 
			
		|||
    MacIOState *s = MACIO(d);
 | 
			
		||||
    SysBusDevice *sysbus_dev;
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    MemoryRegion *dbdma_mem;
 | 
			
		||||
 | 
			
		||||
    s->dbdma = DBDMA_init(&dbdma_mem);
 | 
			
		||||
    memory_region_add_subregion(&s->bar, 0x08000, dbdma_mem);
 | 
			
		||||
    object_property_set_bool(OBJECT(s->dbdma), true, "realized", &err);
 | 
			
		||||
    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);
 | 
			
		||||
    if (err) {
 | 
			
		||||
| 
						 | 
				
			
			@ -334,6 +339,9 @@ static void macio_instance_init(Object *obj)
 | 
			
		|||
    object_initialize(&s->cuda, sizeof(s->cuda), TYPE_CUDA);
 | 
			
		||||
    qdev_set_parent_bus(DEVICE(&s->cuda), sysbus_get_default());
 | 
			
		||||
    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 = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -174,7 +174,6 @@ void DBDMA_register_channel(void *dbdma, int nchan, qemu_irq irq,
 | 
			
		|||
                            DBDMA_rw rw, DBDMA_flush flush,
 | 
			
		||||
                            void *opaque);
 | 
			
		||||
void DBDMA_kick(DBDMAState *dbdma);
 | 
			
		||||
void* DBDMA_init (MemoryRegion **dbdma_mem);
 | 
			
		||||
 | 
			
		||||
#define TYPE_MAC_DBDMA "mac-dbdma"
 | 
			
		||||
#define MAC_DBDMA(obj) OBJECT_CHECK(DBDMAState, (obj), TYPE_MAC_DBDMA)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue