Lines Matching defs:combiner
8 * An interrupt combiner in this block combines a set of interrupts by
13 * of the given combiner. Thus, each combiner can be described as a set
31 struct combiner {
49 struct combiner *combiner = irq_desc_get_handler_data(desc);
55 for (reg = 0; reg < combiner->nregs; reg++) {
61 bit = readl_relaxed(combiner->regs[reg].addr);
62 status = bit & combiner->regs[reg].enabled;
66 combiner->regs[reg].enabled,
67 combiner->regs[reg].addr);
73 virq = irq_find_mapping(combiner->domain, hwirq);
85 struct combiner *combiner = irq_data_get_irq_chip_data(data);
86 struct combiner_reg *reg = combiner->regs + data->hwirq / REG_SIZE;
93 struct combiner *combiner = irq_data_get_irq_chip_data(data);
94 struct combiner_reg *reg = combiner->regs + data->hwirq / REG_SIZE;
102 .name = "qcom-irq-combiner"
122 struct combiner *combiner = d->host_data;
126 (fws->param[0] >= combiner->nirqs) ||
172 struct combiner *combiner;
203 ctx->combiner->regs[ctx->combiner->nregs].addr = vaddr;
204 ctx->combiner->nirqs += reg->bit_width;
205 ctx->combiner->nregs++;
209 static int get_registers(struct platform_device *pdev, struct combiner *comb)
219 ctx.combiner = comb;
231 struct combiner *combiner;
241 combiner = devm_kzalloc(&pdev->dev, struct_size(combiner, regs, nregs),
243 if (!combiner)
246 err = get_registers(pdev, combiner);
250 combiner->parent_irq = platform_get_irq(pdev, 0);
251 if (combiner->parent_irq <= 0)
254 combiner->domain = irq_domain_create_linear(pdev->dev.fwnode, combiner->nirqs,
255 &domain_ops, combiner);
256 if (!combiner->domain)
260 irq_set_chained_handler_and_data(combiner->parent_irq,
261 combiner_handle_irq, combiner);
264 combiner->parent_irq, combiner->nirqs, combiner->regs[0].addr);
275 .name = "qcom-irq-combiner",