Lines Matching full:combiner
16 * An interrupt combiner in this block combines a set of interrupts by
21 * of the given combiner. Thus, each combiner can be described as a set
39 struct combiner { struct
57 struct combiner *combiner = irq_desc_get_handler_data(desc); in combiner_handle_irq() argument
63 for (reg = 0; reg < combiner->nregs; reg++) { in combiner_handle_irq()
69 bit = readl_relaxed(combiner->regs[reg].addr); in combiner_handle_irq()
70 status = bit & combiner->regs[reg].enabled; in combiner_handle_irq()
74 combiner->regs[reg].enabled, in combiner_handle_irq()
75 combiner->regs[reg].addr); in combiner_handle_irq()
81 virq = irq_find_mapping(combiner->domain, hwirq); in combiner_handle_irq()
93 struct combiner *combiner = irq_data_get_irq_chip_data(data); in combiner_irq_chip_mask_irq() local
94 struct combiner_reg *reg = combiner->regs + data->hwirq / REG_SIZE; in combiner_irq_chip_mask_irq()
101 struct combiner *combiner = irq_data_get_irq_chip_data(data); in combiner_irq_chip_unmask_irq() local
102 struct combiner_reg *reg = combiner->regs + data->hwirq / REG_SIZE; in combiner_irq_chip_unmask_irq()
110 .name = "qcom-irq-combiner"
130 struct combiner *combiner = d->host_data; in combiner_irq_translate() local
134 (fws->param[0] >= combiner->nirqs) || in combiner_irq_translate()
180 struct combiner *combiner; member
211 ctx->combiner->regs[ctx->combiner->nregs].addr = vaddr; in get_registers_cb()
212 ctx->combiner->nirqs += reg->bit_width; in get_registers_cb()
213 ctx->combiner->nregs++; in get_registers_cb()
217 static int get_registers(struct platform_device *pdev, struct combiner *comb) in get_registers()
227 ctx.combiner = comb; in get_registers()
239 struct combiner *combiner; in combiner_probe() local
250 alloc_sz = sizeof(*combiner) + sizeof(struct combiner_reg) * nregs; in combiner_probe()
251 combiner = devm_kzalloc(&pdev->dev, alloc_sz, GFP_KERNEL); in combiner_probe()
252 if (!combiner) in combiner_probe()
255 err = get_registers(pdev, combiner); in combiner_probe()
259 combiner->parent_irq = platform_get_irq(pdev, 0); in combiner_probe()
260 if (combiner->parent_irq <= 0) { in combiner_probe()
265 combiner->domain = irq_domain_create_linear(pdev->dev.fwnode, combiner->nirqs, in combiner_probe()
266 &domain_ops, combiner); in combiner_probe()
267 if (!combiner->domain) in combiner_probe()
271 irq_set_chained_handler_and_data(combiner->parent_irq, in combiner_probe()
272 combiner_handle_irq, combiner); in combiner_probe()
275 combiner->parent_irq, combiner->nirqs, combiner->regs[0].addr); in combiner_probe()
286 .name = "qcom-irq-combiner",