Revision 730bf932 hw/intc/grlib_irqmp.c
b/hw/intc/grlib_irqmp.c | ||
---|---|---|
45 | 45 |
#define FORCE_OFFSET 0x80 |
46 | 46 |
#define EXTENDED_OFFSET 0xC0 |
47 | 47 |
|
48 |
#define TYPE_GRLIB_IRQMP "grlib,irqmp" |
|
49 |
#define GRLIB_IRQMP(obj) OBJECT_CHECK(IRQMP, (obj), TYPE_GRLIB_IRQMP) |
|
50 |
|
|
48 | 51 |
typedef struct IRQMPState IRQMPState; |
49 | 52 |
|
50 | 53 |
typedef struct IRQMP { |
51 |
SysBusDevice busdev; |
|
54 |
SysBusDevice parent_obj; |
|
55 |
|
|
52 | 56 |
MemoryRegion iomem; |
53 | 57 |
|
54 | 58 |
void *set_pil_in; |
... | ... | |
102 | 106 |
|
103 | 107 |
void grlib_irqmp_ack(DeviceState *dev, int intno) |
104 | 108 |
{ |
105 |
SysBusDevice *sdev; |
|
106 |
IRQMP *irqmp; |
|
109 |
IRQMP *irqmp = GRLIB_IRQMP(dev); |
|
107 | 110 |
IRQMPState *state; |
108 | 111 |
uint32_t mask; |
109 | 112 |
|
110 |
assert(dev != NULL); |
|
111 |
|
|
112 |
sdev = SYS_BUS_DEVICE(dev); |
|
113 |
assert(sdev != NULL); |
|
114 |
|
|
115 |
irqmp = FROM_SYSBUS(typeof(*irqmp), sdev); |
|
116 |
assert(irqmp != NULL); |
|
117 |
|
|
118 | 113 |
state = irqmp->state; |
119 | 114 |
assert(state != NULL); |
120 | 115 |
|
... | ... | |
132 | 127 |
|
133 | 128 |
void grlib_irqmp_set_irq(void *opaque, int irq, int level) |
134 | 129 |
{ |
135 |
IRQMP *irqmp; |
|
130 |
IRQMP *irqmp = GRLIB_IRQMP(opaque);
|
|
136 | 131 |
IRQMPState *s; |
137 | 132 |
int i = 0; |
138 | 133 |
|
139 |
assert(opaque != NULL); |
|
140 |
|
|
141 |
irqmp = FROM_SYSBUS(typeof(*irqmp), SYS_BUS_DEVICE(opaque)); |
|
142 |
assert(irqmp != NULL); |
|
143 |
|
|
144 | 134 |
s = irqmp->state; |
145 | 135 |
assert(s != NULL); |
146 | 136 |
assert(s->parent != NULL); |
... | ... | |
325 | 315 |
|
326 | 316 |
static void grlib_irqmp_reset(DeviceState *d) |
327 | 317 |
{ |
328 |
IRQMP *irqmp = container_of(d, IRQMP, busdev.qdev); |
|
329 |
assert(irqmp != NULL); |
|
318 |
IRQMP *irqmp = GRLIB_IRQMP(d); |
|
330 | 319 |
assert(irqmp->state != NULL); |
331 | 320 |
|
332 | 321 |
memset(irqmp->state, 0, sizeof *irqmp->state); |
... | ... | |
335 | 324 |
|
336 | 325 |
static int grlib_irqmp_init(SysBusDevice *dev) |
337 | 326 |
{ |
338 |
IRQMP *irqmp = FROM_SYSBUS(typeof(*irqmp), dev); |
|
339 |
|
|
340 |
assert(irqmp != NULL); |
|
327 |
IRQMP *irqmp = GRLIB_IRQMP(dev); |
|
341 | 328 |
|
342 | 329 |
/* Check parameters */ |
343 | 330 |
if (irqmp->set_pil_in == NULL) { |
... | ... | |
371 | 358 |
} |
372 | 359 |
|
373 | 360 |
static const TypeInfo grlib_irqmp_info = { |
374 |
.name = "grlib,irqmp",
|
|
361 |
.name = TYPE_GRLIB_IRQMP,
|
|
375 | 362 |
.parent = TYPE_SYS_BUS_DEVICE, |
376 | 363 |
.instance_size = sizeof(IRQMP), |
377 | 364 |
.class_init = grlib_irqmp_class_init, |
Also available in: Unified diff