Skip to content

Commit

Permalink
irqchip/stm32: Add irq retrigger support
Browse files Browse the repository at this point in the history
This commit introduces retrigger support for stm32_ext_h chip.
It consists to rise the GIC interrupt mapped to an EXTI line.

Signed-off-by: Alexandre Torgue <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Tested-by: Marek Vasut <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
  • Loading branch information
atorgue authored and Marc Zyngier committed Mar 8, 2020
1 parent a151110 commit 25591d4
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion drivers/irqchip/irq-stm32-exti.c
Original file line number Diff line number Diff line change
Expand Up @@ -604,12 +604,24 @@ static void stm32_exti_h_syscore_deinit(void)
unregister_syscore_ops(&stm32_exti_h_syscore_ops);
}

static int stm32_exti_h_retrigger(struct irq_data *d)
{
struct stm32_exti_chip_data *chip_data = irq_data_get_irq_chip_data(d);
const struct stm32_exti_bank *stm32_bank = chip_data->reg_bank;
void __iomem *base = chip_data->host_data->base;
u32 mask = BIT(d->hwirq % IRQS_PER_BANK);

writel_relaxed(mask, base + stm32_bank->swier_ofst);

return 0;
}

static struct irq_chip stm32_exti_h_chip = {
.name = "stm32-exti-h",
.irq_eoi = stm32_exti_h_eoi,
.irq_mask = stm32_exti_h_mask,
.irq_unmask = stm32_exti_h_unmask,
.irq_retrigger = irq_chip_retrigger_hierarchy,
.irq_retrigger = stm32_exti_h_retrigger,
.irq_set_type = stm32_exti_h_set_type,
.irq_set_wake = stm32_exti_h_set_wake,
.flags = IRQCHIP_MASK_ON_SUSPEND,
Expand Down

0 comments on commit 25591d4

Please sign in to comment.