~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to hw/arm/bcm2835_peripherals.c

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
86
86
    object_property_add_const_link(OBJECT(&s->property), "dma-mr",
87
87
                                   OBJECT(&s->gpu_bus_mr), &error_abort);
88
88
 
 
89
    /* Random Number Generator */
 
90
    object_initialize(&s->rng, sizeof(s->rng), TYPE_BCM2835_RNG);
 
91
    object_property_add_child(obj, "rng", OBJECT(&s->rng), NULL);
 
92
    qdev_set_parent_bus(DEVICE(&s->rng), sysbus_get_default());
 
93
 
89
94
    /* Extended Mass Media Controller */
90
95
    object_initialize(&s->sdhci, sizeof(s->sdhci), TYPE_SYSBUS_SDHCI);
91
96
    object_property_add_child(obj, "sdhci", OBJECT(&s->sdhci), NULL);
92
97
    qdev_set_parent_bus(DEVICE(&s->sdhci), sysbus_get_default());
93
98
 
 
99
    /* SDHOST */
 
100
    object_initialize(&s->sdhost, sizeof(s->sdhost), TYPE_BCM2835_SDHOST);
 
101
    object_property_add_child(obj, "sdhost", OBJECT(&s->sdhost), NULL);
 
102
    qdev_set_parent_bus(DEVICE(&s->sdhost), sysbus_get_default());
 
103
 
94
104
    /* DMA Channels */
95
105
    object_initialize(&s->dma, sizeof(s->dma), TYPE_BCM2835_DMA);
96
106
    object_property_add_child(obj, "dma", OBJECT(&s->dma), NULL);
98
108
 
99
109
    object_property_add_const_link(OBJECT(&s->dma), "dma-mr",
100
110
                                   OBJECT(&s->gpu_bus_mr), &error_abort);
 
111
 
 
112
    /* GPIO */
 
113
    object_initialize(&s->gpio, sizeof(s->gpio), TYPE_BCM2835_GPIO);
 
114
    object_property_add_child(obj, "gpio", OBJECT(&s->gpio), NULL);
 
115
    qdev_set_parent_bus(DEVICE(&s->gpio), sysbus_get_default());
 
116
 
 
117
    object_property_add_const_link(OBJECT(&s->gpio), "sdbus-sdhci",
 
118
                                   OBJECT(&s->sdhci.sdbus), &error_abort);
 
119
    object_property_add_const_link(OBJECT(&s->gpio), "sdbus-sdhost",
 
120
                                   OBJECT(&s->sdhost.sdbus), &error_abort);
101
121
}
102
122
 
103
123
static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
226
246
    sysbus_connect_irq(SYS_BUS_DEVICE(&s->property), 0,
227
247
                      qdev_get_gpio_in(DEVICE(&s->mboxes), MBOX_CHAN_PROPERTY));
228
248
 
 
249
    /* Random Number Generator */
 
250
    object_property_set_bool(OBJECT(&s->rng), true, "realized", &err);
 
251
    if (err) {
 
252
        error_propagate(errp, err);
 
253
        return;
 
254
    }
 
255
 
 
256
    memory_region_add_subregion(&s->peri_mr, RNG_OFFSET,
 
257
                sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->rng), 0));
 
258
 
229
259
    /* Extended Mass Media Controller */
230
260
    object_property_set_int(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "capareg",
231
261
                            &err);
252
282
    sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdhci), 0,
253
283
        qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ,
254
284
                               INTERRUPT_ARASANSDIO));
255
 
    object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->sdhci), "sd-bus",
256
 
                              &err);
 
285
 
 
286
    /* SDHOST */
 
287
    object_property_set_bool(OBJECT(&s->sdhost), true, "realized", &err);
257
288
    if (err) {
258
289
        error_propagate(errp, err);
259
290
        return;
260
291
    }
261
292
 
 
293
    memory_region_add_subregion(&s->peri_mr, MMCI0_OFFSET,
 
294
                sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->sdhost), 0));
 
295
    sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdhost), 0,
 
296
        qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ,
 
297
                               INTERRUPT_SDIO));
 
298
 
262
299
    /* DMA Channels */
263
300
    object_property_set_bool(OBJECT(&s->dma), true, "realized", &err);
264
301
    if (err) {
277
314
                                                  BCM2835_IC_GPU_IRQ,
278
315
                                                  INTERRUPT_DMA0 + n));
279
316
    }
 
317
 
 
318
    /* GPIO */
 
319
    object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err);
 
320
    if (err) {
 
321
        error_propagate(errp, err);
 
322
        return;
 
323
    }
 
324
 
 
325
    memory_region_add_subregion(&s->peri_mr, GPIO_OFFSET,
 
326
                sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gpio), 0));
 
327
 
 
328
    object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->gpio), "sd-bus",
 
329
                              &err);
 
330
    if (err) {
 
331
        error_propagate(errp, err);
 
332
        return;
 
333
    }
280
334
}
281
335
 
282
336
static void bcm2835_peripherals_class_init(ObjectClass *oc, void *data)