Revision ee6847d1 hw/syborg_interrupt.c
b/hw/syborg_interrupt.c | ||
---|---|---|
56 | 56 |
typedef struct { |
57 | 57 |
SysBusDevice busdev; |
58 | 58 |
int pending_count; |
59 |
int num_irqs;
|
|
59 |
uint32_t num_irqs;
|
|
60 | 60 |
syborg_int_flags *flags; |
61 | 61 |
qemu_irq parent_irq; |
62 | 62 |
} SyborgIntState; |
... | ... | |
208 | 208 |
int iomemtype; |
209 | 209 |
|
210 | 210 |
sysbus_init_irq(dev, &s->parent_irq); |
211 |
s->num_irqs = qdev_get_prop_int(&dev->qdev, "num-interrupts", 64); |
|
212 | 211 |
qdev_init_gpio_in(&dev->qdev, syborg_int_set_irq, s->num_irqs); |
213 | 212 |
iomemtype = cpu_register_io_memory(syborg_int_readfn, |
214 | 213 |
syborg_int_writefn, s); |
... | ... | |
218 | 217 |
register_savevm("syborg_int", -1, 1, syborg_int_save, syborg_int_load, s); |
219 | 218 |
} |
220 | 219 |
|
220 |
static SysBusDeviceInfo syborg_int_info = { |
|
221 |
.init = syborg_int_init, |
|
222 |
.qdev.name = "syborg,interrupt", |
|
223 |
.qdev.size = sizeof(SyborgIntState), |
|
224 |
.qdev.props = (Property[]) { |
|
225 |
{ |
|
226 |
.name = "num-interrupts", |
|
227 |
.info = &qdev_prop_uint32, |
|
228 |
.offset = offsetof(SyborgIntState, num_irqs), |
|
229 |
.defval = (uint32_t[]) { 64 }, |
|
230 |
}, |
|
231 |
{/* end of list */} |
|
232 |
} |
|
233 |
}; |
|
234 |
|
|
221 | 235 |
static void syborg_interrupt_register_devices(void) |
222 | 236 |
{ |
223 |
sysbus_register_dev("syborg,interrupt", sizeof(SyborgIntState), |
|
224 |
syborg_int_init); |
|
237 |
sysbus_register_withprop(&syborg_int_info); |
|
225 | 238 |
} |
226 | 239 |
|
227 | 240 |
device_init(syborg_interrupt_register_devices) |
Also available in: Unified diff