Lines Matching refs:qe_ic
188 static inline struct qe_ic *qe_ic_from_irq(unsigned int virq) in qe_ic_from_irq()
193 static inline struct qe_ic *qe_ic_from_irq_data(struct irq_data *d) in qe_ic_from_irq_data()
200 struct qe_ic *qe_ic = qe_ic_from_irq_data(d); in qe_ic_unmask_irq() local
207 temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].mask_reg); in qe_ic_unmask_irq()
208 qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg, in qe_ic_unmask_irq()
216 struct qe_ic *qe_ic = qe_ic_from_irq_data(d); in qe_ic_mask_irq() local
223 temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].mask_reg); in qe_ic_mask_irq()
224 qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg, in qe_ic_mask_irq()
256 struct qe_ic *qe_ic = h->host_data; in qe_ic_host_map() local
264 chip = &qe_ic->hc_irq; in qe_ic_host_map()
266 irq_set_chip_data(virq, qe_ic); in qe_ic_host_map()
281 unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic) in qe_ic_get_low_irq() argument
285 BUG_ON(qe_ic == NULL); in qe_ic_get_low_irq()
288 irq = qe_ic_read(qe_ic->regs, QEIC_CIVEC) >> 26; in qe_ic_get_low_irq()
293 return irq_linear_revmap(qe_ic->irqhost, irq); in qe_ic_get_low_irq()
297 unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic) in qe_ic_get_high_irq() argument
301 BUG_ON(qe_ic == NULL); in qe_ic_get_high_irq()
304 irq = qe_ic_read(qe_ic->regs, QEIC_CHIVEC) >> 26; in qe_ic_get_high_irq()
309 return irq_linear_revmap(qe_ic->irqhost, irq); in qe_ic_get_high_irq()
316 struct qe_ic *qe_ic; in qe_ic_init() local
324 qe_ic = kzalloc(sizeof(*qe_ic), GFP_KERNEL); in qe_ic_init()
325 if (qe_ic == NULL) in qe_ic_init()
328 qe_ic->irqhost = irq_domain_add_linear(node, NR_QE_IC_INTS, in qe_ic_init()
329 &qe_ic_host_ops, qe_ic); in qe_ic_init()
330 if (qe_ic->irqhost == NULL) { in qe_ic_init()
331 kfree(qe_ic); in qe_ic_init()
335 qe_ic->regs = ioremap(res.start, resource_size(&res)); in qe_ic_init()
337 qe_ic->hc_irq = qe_ic_irq_chip; in qe_ic_init()
339 qe_ic->virq_high = irq_of_parse_and_map(node, 0); in qe_ic_init()
340 qe_ic->virq_low = irq_of_parse_and_map(node, 1); in qe_ic_init()
342 if (qe_ic->virq_low == NO_IRQ) { in qe_ic_init()
344 kfree(qe_ic); in qe_ic_init()
369 qe_ic_write(qe_ic->regs, QEIC_CICR, temp); in qe_ic_init()
371 irq_set_handler_data(qe_ic->virq_low, qe_ic); in qe_ic_init()
372 irq_set_chained_handler(qe_ic->virq_low, low_handler); in qe_ic_init()
374 if (qe_ic->virq_high != NO_IRQ && in qe_ic_init()
375 qe_ic->virq_high != qe_ic->virq_low) { in qe_ic_init()
376 irq_set_handler_data(qe_ic->virq_high, qe_ic); in qe_ic_init()
377 irq_set_chained_handler(qe_ic->virq_high, high_handler); in qe_ic_init()
383 struct qe_ic *qe_ic = qe_ic_from_irq(virq); in qe_ic_set_highest_priority() local
387 temp = qe_ic_read(qe_ic->regs, QEIC_CICR); in qe_ic_set_highest_priority()
395 qe_ic_write(qe_ic->regs, QEIC_CICR, temp); in qe_ic_set_highest_priority()
401 struct qe_ic *qe_ic = qe_ic_from_irq(virq); in qe_ic_set_priority() local
412 temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].pri_reg); in qe_ic_set_priority()
422 qe_ic_write(qe_ic->regs, qe_ic_info[src].pri_reg, temp); in qe_ic_set_priority()
430 struct qe_ic *qe_ic = qe_ic_from_irq(virq); in qe_ic_set_high_priority() local
463 temp = qe_ic_read(qe_ic->regs, control_reg); in qe_ic_set_high_priority()
466 qe_ic_write(qe_ic->regs, control_reg, temp); in qe_ic_set_high_priority()