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

« back to all changes in this revision

Viewing changes to hw/audio/pl041.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:
521
521
    .endianness = DEVICE_NATIVE_ENDIAN,
522
522
};
523
523
 
524
 
static int pl041_init(SysBusDevice *dev)
 
524
static void pl041_init(Object *obj)
525
525
{
 
526
    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
526
527
    PL041State *s = PL041(dev);
527
528
 
528
529
    DBG_L1("pl041_init 0x%08x\n", (uint32_t)s);
529
530
 
 
531
    /* Connect the device to the sysbus */
 
532
    memory_region_init_io(&s->iomem, obj, &pl041_ops, s, "pl041", 0x1000);
 
533
    sysbus_init_mmio(dev, &s->iomem);
 
534
    sysbus_init_irq(dev, &s->irq);
 
535
}
 
536
 
 
537
static void pl041_realize(DeviceState *dev, Error **errp)
 
538
{
 
539
    PL041State *s = PL041(dev);
 
540
 
530
541
    /* Check the device properties */
531
542
    switch (s->fifo_depth) {
532
543
    case 8:
545
556
        qemu_log_mask(LOG_UNIMP,
546
557
                      "pl041: unsupported non-compact fifo depth [%i]\n",
547
558
                      s->fifo_depth);
548
 
        return -1;
549
559
    }
550
560
 
551
 
    /* Connect the device to the sysbus */
552
 
    memory_region_init_io(&s->iomem, OBJECT(s), &pl041_ops, s, "pl041", 0x1000);
553
 
    sysbus_init_mmio(dev, &s->iomem);
554
 
    sysbus_init_irq(dev, &s->irq);
555
 
 
556
561
    /* Init the codec */
557
562
    lm4549_init(&s->codec, &pl041_request_data, (void *)s);
558
 
 
559
 
    return 0;
560
563
}
561
564
 
562
565
static const VMStateDescription vmstate_pl041_regfile = {
627
630
static void pl041_device_class_init(ObjectClass *klass, void *data)
628
631
{
629
632
    DeviceClass *dc = DEVICE_CLASS(klass);
630
 
    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
631
633
 
632
 
    k->init = pl041_init;
 
634
    dc->realize = pl041_realize;
633
635
    set_bit(DEVICE_CATEGORY_SOUND, dc->categories);
634
636
    dc->reset = pl041_device_reset;
635
637
    dc->vmsd = &vmstate_pl041;
640
642
    .name          = TYPE_PL041,
641
643
    .parent        = TYPE_SYS_BUS_DEVICE,
642
644
    .instance_size = sizeof(PL041State),
 
645
    .instance_init = pl041_init,
643
646
    .class_init    = pl041_device_class_init,
644
647
};
645
648