Revision 91b64626

b/hw/arm/integratorcp.c
271 271
/* Integrator/CP hardware emulation.  */
272 272
/* Primary interrupt controller.  */
273 273

  
274
typedef struct icp_pic_state
275
{
276
  SysBusDevice busdev;
277
  MemoryRegion iomem;
278
  uint32_t level;
279
  uint32_t irq_enabled;
280
  uint32_t fiq_enabled;
281
  qemu_irq parent_irq;
282
  qemu_irq parent_fiq;
274
#define TYPE_INTEGRATOR_PIC "integrator_pic"
275
#define INTEGRATOR_PIC(obj) \
276
   OBJECT_CHECK(icp_pic_state, (obj), TYPE_INTEGRATOR_PIC)
277

  
278
typedef struct icp_pic_state {
279
    /*< private >*/
280
    SysBusDevice parent_obj;
281
    /*< public >*/
282

  
283
    MemoryRegion iomem;
284
    uint32_t level;
285
    uint32_t irq_enabled;
286
    uint32_t fiq_enabled;
287
    qemu_irq parent_irq;
288
    qemu_irq parent_fiq;
283 289
} icp_pic_state;
284 290

  
285 291
static void icp_pic_update(icp_pic_state *s)
......
374 380
    .endianness = DEVICE_NATIVE_ENDIAN,
375 381
};
376 382

  
377
static int icp_pic_init(SysBusDevice *dev)
383
static int icp_pic_init(SysBusDevice *sbd)
378 384
{
379
    icp_pic_state *s = FROM_SYSBUS(icp_pic_state, dev);
385
    DeviceState *dev = DEVICE(sbd);
386
    icp_pic_state *s = INTEGRATOR_PIC(dev);
380 387

  
381
    qdev_init_gpio_in(&dev->qdev, icp_pic_set_irq, 32);
382
    sysbus_init_irq(dev, &s->parent_irq);
383
    sysbus_init_irq(dev, &s->parent_fiq);
388
    qdev_init_gpio_in(dev, icp_pic_set_irq, 32);
389
    sysbus_init_irq(sbd, &s->parent_irq);
390
    sysbus_init_irq(sbd, &s->parent_fiq);
384 391
    memory_region_init_io(&s->iomem, OBJECT(s), &icp_pic_ops, s,
385 392
                          "icp-pic", 0x00800000);
386
    sysbus_init_mmio(dev, &s->iomem);
393
    sysbus_init_mmio(sbd, &s->iomem);
387 394
    return 0;
388 395
}
389 396

  
......
487 494
    sysbus_mmio_map((SysBusDevice *)dev, 0, 0x10000000);
488 495

  
489 496
    cpu_pic = arm_pic_init_cpu(cpu);
490
    dev = sysbus_create_varargs("integrator_pic", 0x14000000,
497
    dev = sysbus_create_varargs(TYPE_INTEGRATOR_PIC, 0x14000000,
491 498
                                cpu_pic[ARM_PIC_CPU_IRQ],
492 499
                                cpu_pic[ARM_PIC_CPU_FIQ], NULL);
493 500
    for (i = 0; i < 32; i++) {
494 501
        pic[i] = qdev_get_gpio_in(dev, i);
495 502
    }
496
    sysbus_create_simple("integrator_pic", 0xca000000, pic[26]);
503
    sysbus_create_simple(TYPE_INTEGRATOR_PIC, 0xca000000, pic[26]);
497 504
    sysbus_create_varargs("integrator_pit", 0x13000000,
498 505
                          pic[5], pic[6], pic[7], NULL);
499 506
    sysbus_create_simple("pl031", 0x15000000, pic[8]);
......
559 566
}
560 567

  
561 568
static const TypeInfo icp_pic_info = {
562
    .name          = "integrator_pic",
569
    .name          = TYPE_INTEGRATOR_PIC,
563 570
    .parent        = TYPE_SYS_BUS_DEVICE,
564 571
    .instance_size = sizeof(icp_pic_state),
565 572
    .class_init    = icp_pic_class_init,

Also available in: Unified diff