Lines Matching full:ipu
18 #include <linux/dma/ipu-dma.h>
25 static u32 ipu_read_reg(struct ipu *ipu, unsigned long reg) in ipu_read_reg() argument
27 return __raw_readl(ipu->reg_ipu + reg); in ipu_read_reg()
30 static void ipu_write_reg(struct ipu *ipu, u32 value, unsigned long reg) in ipu_write_reg() argument
32 __raw_writel(value, ipu->reg_ipu + reg); in ipu_write_reg()
37 * IPU IRQ chip driver
47 struct ipu *ipu; member
76 struct ipu *ipu; member
108 pr_err("IPU: %s(%u) - unmapped!\n", __func__, d->irq); in ipu_irq_unmask()
112 reg = ipu_read_reg(bank->ipu, bank->control); in ipu_irq_unmask()
114 ipu_write_reg(bank->ipu, reg, bank->control); in ipu_irq_unmask()
131 pr_err("IPU: %s(%u) - unmapped!\n", __func__, d->irq); in ipu_irq_mask()
135 reg = ipu_read_reg(bank->ipu, bank->control); in ipu_irq_mask()
137 ipu_write_reg(bank->ipu, reg, bank->control); in ipu_irq_mask()
153 pr_err("IPU: %s(%u) - unmapped!\n", __func__, d->irq); in ipu_irq_ack()
157 ipu_write_reg(bank->ipu, 1UL << (map->source & 31), bank->status); in ipu_irq_ack()
176 ret = bank && ipu_read_reg(bank->ipu, bank->status) & in ipu_irq_status()
184 * ipu_irq_map() - map an IPU interrupt source to an IRQ number
188 * The source parameter has to be explained further. On i.MX31 IPU has 137 IRQ
193 * and also provides forward compatibility with any future IPU implementations
206 pr_err("IPU: Source %u already mapped to IRQ %u\n", source, map->irq); in ipu_irq_map()
221 pr_debug("IPU: mapped source %u to IRQ %u\n", in ipu_irq_map()
230 pr_err("IPU: couldn't map source %u: %d\n", source, ret); in ipu_irq_map()
236 * ipu_irq_map() - map an IPU interrupt source to an IRQ number
251 pr_debug("IPU: unmapped source %u from IRQ %u\n", in ipu_irq_unmap()
268 /* Chained IRQ handler for IPU function and error interrupt */
271 struct ipu *ipu = irq_desc_get_handler_data(desc); in ipu_irq_handler() local
279 status = ipu_read_reg(ipu, bank->status); in ipu_irq_handler()
285 status &= ipu_read_reg(ipu, bank->control); in ipu_irq_handler()
298 pr_err("IPU: Interrupt on unmapped source %u bank %d\n", in ipu_irq_handler()
317 int __init ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev) in ipu_irq_attach_irq() argument
327 irq_bank[i].ipu = ipu; in ipu_irq_attach_irq()
339 irq_map[i].ipu = ipu; in ipu_irq_attach_irq()
346 irq_set_chained_handler_and_data(ipu->irq_fn, ipu_irq_handler, ipu); in ipu_irq_attach_irq()
348 irq_set_chained_handler_and_data(ipu->irq_err, ipu_irq_handler, ipu); in ipu_irq_attach_irq()
350 ipu->irq_base = irq_base; in ipu_irq_attach_irq()
355 void ipu_irq_detach_irq(struct ipu *ipu, struct platform_device *dev) in ipu_irq_detach_irq() argument
359 irq_base = ipu->irq_base; in ipu_irq_detach_irq()
361 irq_set_chained_handler_and_data(ipu->irq_fn, NULL, NULL); in ipu_irq_detach_irq()
363 irq_set_chained_handler_and_data(ipu->irq_err, NULL, NULL); in ipu_irq_detach_irq()