Revision d537cf6c hw/pl190.c

b/hw/pl190.c
17 17
#define PL190_NUM_PRIO 17
18 18

  
19 19
typedef struct {
20
    arm_pic_handler handler;
21 20
    uint32_t base;
22 21
    DisplayState *ds;
23 22
    uint32_t level;
......
33 32
    /* Current priority level.  */
34 33
    int priority;
35 34
    int prev_prio[PL190_NUM_PRIO];
36
    void *parent;
37
    int irq;
38
    int fiq;
35
    qemu_irq irq;
36
    qemu_irq fiq;
39 37
} pl190_state;
40 38

  
41 39
static const unsigned char pl190_id[] =
......
53 51
    int set;
54 52

  
55 53
    set = (level & s->prio_mask[s->priority]) != 0;
56
    pic_set_irq_new(s->parent, s->irq, set);
54
    qemu_set_irq(s->irq, set);
57 55
    set = ((s->level | s->soft_level) & s->fiq_select) != 0;
58
    pic_set_irq_new(s->parent, s->fiq, set);
56
    qemu_set_irq(s->fiq, set);
59 57
}
60 58

  
61 59
static void pl190_set_irq(void *opaque, int irq, int level)
......
232 230
  pl190_update_vectors(s);
233 231
}
234 232

  
235
void *pl190_init(uint32_t base, void *parent, int irq, int fiq)
233
qemu_irq *pl190_init(uint32_t base, qemu_irq irq, qemu_irq fiq)
236 234
{
237 235
    pl190_state *s;
236
    qemu_irq *qi;
238 237
    int iomemtype;
239 238

  
240 239
    s = (pl190_state *)qemu_mallocz(sizeof(pl190_state));
241 240
    iomemtype = cpu_register_io_memory(0, pl190_readfn,
242 241
                                       pl190_writefn, s);
243 242
    cpu_register_physical_memory(base, 0x00000fff, iomemtype);
244
    s->handler = pl190_set_irq;
243
    qi = qemu_allocate_irqs(pl190_set_irq, s, 16);
245 244
    s->base = base;
246
    s->parent = parent;
247 245
    s->irq = irq;
248 246
    s->fiq = fiq;
249 247
    pl190_reset(s);
250 248
    /* ??? Save/restore.  */
251
    return s;
249
    return qi;
252 250
}

Also available in: Unified diff