digic.c (9fc7fc4d) | digic.c (db873cc5) |
---|---|
1/* 2 * QEMU model of the Canon DIGIC SoC. 3 * 4 * Copyright (C) 2013 Antony Pavlov <antonynpavlov@gmail.com> 5 * 6 * This model is based on reverse engineering efforts 7 * made by CHDK (http://chdk.wikia.com) and 8 * Magic Lantern (http://www.magiclantern.fm) projects --- 29 unchanged lines hidden (view full) --- 38 39 object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm946")); 40 41 for (i = 0; i < DIGIC4_NB_TIMERS; i++) { 42#define DIGIC_TIMER_NAME_MLEN 11 43 char name[DIGIC_TIMER_NAME_MLEN]; 44 45 snprintf(name, DIGIC_TIMER_NAME_MLEN, "timer[%d]", i); | 1/* 2 * QEMU model of the Canon DIGIC SoC. 3 * 4 * Copyright (C) 2013 Antony Pavlov <antonynpavlov@gmail.com> 5 * 6 * This model is based on reverse engineering efforts 7 * made by CHDK (http://chdk.wikia.com) and 8 * Magic Lantern (http://www.magiclantern.fm) projects --- 29 unchanged lines hidden (view full) --- 38 39 object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm946")); 40 41 for (i = 0; i < DIGIC4_NB_TIMERS; i++) { 42#define DIGIC_TIMER_NAME_MLEN 11 43 char name[DIGIC_TIMER_NAME_MLEN]; 44 45 snprintf(name, DIGIC_TIMER_NAME_MLEN, "timer[%d]", i); |
46 sysbus_init_child_obj(obj, name, &s->timer[i], sizeof(s->timer[i]), 47 TYPE_DIGIC_TIMER); | 46 object_initialize_child(obj, name, &s->timer[i], TYPE_DIGIC_TIMER); |
48 } 49 | 47 } 48 |
50 sysbus_init_child_obj(obj, "uart", &s->uart, sizeof(s->uart), 51 TYPE_DIGIC_UART); | 49 object_initialize_child(obj, "uart", &s->uart, TYPE_DIGIC_UART); |
52} 53 54static void digic_realize(DeviceState *dev, Error **errp) 55{ 56 DigicState *s = DIGIC(dev); 57 Error *err = NULL; 58 SysBusDevice *sbd; 59 int i; --- 6 unchanged lines hidden (view full) --- 66 67 object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); 68 if (err != NULL) { 69 error_propagate(errp, err); 70 return; 71 } 72 73 for (i = 0; i < DIGIC4_NB_TIMERS; i++) { | 50} 51 52static void digic_realize(DeviceState *dev, Error **errp) 53{ 54 DigicState *s = DIGIC(dev); 55 Error *err = NULL; 56 SysBusDevice *sbd; 57 int i; --- 6 unchanged lines hidden (view full) --- 64 65 object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); 66 if (err != NULL) { 67 error_propagate(errp, err); 68 return; 69 } 70 71 for (i = 0; i < DIGIC4_NB_TIMERS; i++) { |
74 object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", &err); | 72 sysbus_realize(SYS_BUS_DEVICE(&s->timer[i]), &err); |
75 if (err != NULL) { 76 error_propagate(errp, err); 77 return; 78 } 79 80 sbd = SYS_BUS_DEVICE(&s->timer[i]); 81 sysbus_mmio_map(sbd, 0, DIGIC4_TIMER_BASE(i)); 82 } 83 84 qdev_prop_set_chr(DEVICE(&s->uart), "chardev", serial_hd(0)); | 73 if (err != NULL) { 74 error_propagate(errp, err); 75 return; 76 } 77 78 sbd = SYS_BUS_DEVICE(&s->timer[i]); 79 sysbus_mmio_map(sbd, 0, DIGIC4_TIMER_BASE(i)); 80 } 81 82 qdev_prop_set_chr(DEVICE(&s->uart), "chardev", serial_hd(0)); |
85 object_property_set_bool(OBJECT(&s->uart), true, "realized", &err); | 83 sysbus_realize(SYS_BUS_DEVICE(&s->uart), &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); 93} --- 24 unchanged lines hidden --- | 84 if (err != NULL) { 85 error_propagate(errp, err); 86 return; 87 } 88 89 sbd = SYS_BUS_DEVICE(&s->uart); 90 sysbus_mmio_map(sbd, 0, DIGIC_UART_BASE); 91} --- 24 unchanged lines hidden --- |