Revision 142593c9 hw/arm/digic.c

b/hw/arm/digic.c
24 24

  
25 25
#define DIGIC4_TIMER_BASE(n)    (0xc0210000 + (n) * 0x100)
26 26

  
27
#define DIGIC_UART_BASE          0xc0800000
28

  
27 29
static void digic_init(Object *obj)
28 30
{
29 31
    DigicState *s = DIGIC(obj);
......
43 45
        snprintf(name, DIGIC_TIMER_NAME_MLEN, "timer[%d]", i);
44 46
        object_property_add_child(obj, name, OBJECT(&s->timer[i]), NULL);
45 47
    }
48

  
49
    object_initialize(&s->uart, sizeof(s->uart), TYPE_DIGIC_UART);
50
    dev = DEVICE(&s->uart);
51
    qdev_set_parent_bus(dev, sysbus_get_default());
52
    object_property_add_child(obj, "uart", OBJECT(&s->uart), NULL);
46 53
}
47 54

  
48 55
static void digic_realize(DeviceState *dev, Error **errp)
......
74 81
        sbd = SYS_BUS_DEVICE(&s->timer[i]);
75 82
        sysbus_mmio_map(sbd, 0, DIGIC4_TIMER_BASE(i));
76 83
    }
84

  
85
    object_property_set_bool(OBJECT(&s->uart), true, "realized", &err);
86
    if (err != NULL) {
87
        error_propagate(errp, err);
88
        return;
89
    }
90

  
91
    sbd = SYS_BUS_DEVICE(&s->uart);
92
    sysbus_mmio_map(sbd, 0, DIGIC_UART_BASE);
77 93
}
78 94

  
79 95
static void digic_class_init(ObjectClass *oc, void *data)

Also available in: Unified diff