• Home
  • Raw
  • Download

Lines Matching +full:bank +full:- +full:number

18 #include <linux/dma/ipu-dma.h>
23 * Register read / write - shall be inlined by the compiler
27 return __raw_readl(ipu->reg_ipu + reg); in ipu_read_reg()
32 __raw_writel(value, ipu->reg_ipu + reg); in ipu_write_reg()
75 struct ipu_irq_bank *bank; member
99 struct ipu_irq_bank *bank; in ipu_irq_unmask() local
105 bank = map->bank; in ipu_irq_unmask()
106 if (!bank) { in ipu_irq_unmask()
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()
113 reg |= (1UL << (map->source & 31)); in ipu_irq_unmask()
114 ipu_write_reg(bank->ipu, reg, bank->control); in ipu_irq_unmask()
122 struct ipu_irq_bank *bank; in ipu_irq_mask() local
128 bank = map->bank; in ipu_irq_mask()
129 if (!bank) { in ipu_irq_mask()
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()
136 reg &= ~(1UL << (map->source & 31)); in ipu_irq_mask()
137 ipu_write_reg(bank->ipu, reg, bank->control); in ipu_irq_mask()
145 struct ipu_irq_bank *bank; in ipu_irq_ack() local
150 bank = map->bank; in ipu_irq_ack()
151 if (!bank) { in ipu_irq_ack()
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()
162 * ipu_irq_status() - returns the current interrupt status of the specified IRQ.
170 struct ipu_irq_bank *bank; in ipu_irq_status() local
175 bank = map->bank; in ipu_irq_status()
176 ret = bank && ipu_read_reg(bank->ipu, bank->status) & in ipu_irq_status()
177 (1UL << (map->source & 31)); in ipu_irq_status()
184 * ipu_irq_map() - map an IPU interrupt source to an IRQ number
186 * @return: mapped IRQ number or negative error code
189 * sources, they are broken down in 5 32-bit registers, like 32, 32, 24, 32, 17.
190 * However, the source argument of this function is not the sequence number of
192 * register has source number 96, and not 88. This makes calculations easier,
198 int i, ret = -ENOMEM; in ipu_irq_map()
206 pr_err("IPU: Source %u already mapped to IRQ %u\n", source, map->irq); in ipu_irq_map()
207 ret = -EBUSY; in ipu_irq_map()
217 irq_map[i].bank = irq_bank + source / 32; in ipu_irq_map()
236 * ipu_irq_map() - map an IPU interrupt source to an IRQ number
242 int i, ret = -EINVAL; in ipu_irq_unmap()
255 irq_map[i].source = -EINVAL; in ipu_irq_unmap()
256 irq_map[i].bank = NULL; in ipu_irq_unmap()
276 struct ipu_irq_bank *bank = irq_bank + i; in ipu_irq_handler() local
279 status = ipu_read_reg(ipu, bank->status); in ipu_irq_handler()
282 * be acked by ->handle_irq() (handle_level_irq). However, we in ipu_irq_handler()
285 status &= ipu_read_reg(ipu, bank->control); in ipu_irq_handler()
291 line--; in ipu_irq_handler()
298 pr_err("IPU: Interrupt on unmapped source %u bank %d\n", in ipu_irq_handler()
302 irq = map->irq; in ipu_irq_handler()
320 int irq_base = irq_alloc_descs(-1, 0, CONFIG_MX3_IPU_IRQS, in ipu_irq_attach_irq()
341 irq_map[i].source = -EINVAL; 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()
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()