56
56
uint8_t src_pending; /* Pending source interrupts before masking */
57
57
} CombinerGroupState;
59
#define TYPE_EXYNOS4210_COMBINER "exynos4210.combiner"
60
#define EXYNOS4210_COMBINER(obj) \
61
OBJECT_CHECK(Exynos4210CombinerState, (obj), TYPE_EXYNOS4210_COMBINER)
59
63
typedef struct Exynos4210CombinerState {
64
SysBusDevice parent_obj;
61
66
MemoryRegion iomem;
63
68
struct CombinerGroupState group[IIC_NGRP];
403
408
* Internal Combiner initialization.
405
static int exynos4210_combiner_init(SysBusDevice *dev)
410
static int exynos4210_combiner_init(SysBusDevice *sbd)
412
DeviceState *dev = DEVICE(sbd);
413
Exynos4210CombinerState *s = EXYNOS4210_COMBINER(dev);
408
struct Exynos4210CombinerState *s =
409
FROM_SYSBUS(struct Exynos4210CombinerState, dev);
411
416
/* Allocate general purpose input signals and connect a handler to each of
413
qdev_init_gpio_in(&s->busdev.qdev, exynos4210_combiner_handler, IIC_NIRQ);
418
qdev_init_gpio_in(dev, exynos4210_combiner_handler, IIC_NIRQ);
415
420
/* Connect SysBusDev irqs to device specific irqs */
416
421
for (i = 0; i < IIC_NIRQ; i++) {
417
sysbus_init_irq(dev, &s->output_irq[i]);
422
sysbus_init_irq(sbd, &s->output_irq[i]);
420
memory_region_init_io(&s->iomem, &exynos4210_combiner_ops, s,
421
"exynos4210-combiner", IIC_REGION_SIZE);
422
sysbus_init_mmio(dev, &s->iomem);
425
memory_region_init_io(&s->iomem, OBJECT(s), &exynos4210_combiner_ops, s,
426
"exynos4210-combiner", IIC_REGION_SIZE);
427
sysbus_init_mmio(sbd, &s->iomem);
443
448
static const TypeInfo exynos4210_combiner_info = {
444
.name = "exynos4210.combiner",
449
.name = TYPE_EXYNOS4210_COMBINER,
445
450
.parent = TYPE_SYS_BUS_DEVICE,
446
451
.instance_size = sizeof(Exynos4210CombinerState),
447
452
.class_init = exynos4210_combiner_class_init,