Commit 9c426b77 authored by Talel Shenhar's avatar Talel Shenhar Committed by Marc Zyngier

irqchip/al-fic: Add support for irq retrigger

Introduce interrupts retrigger support for Amazon's Annapurna Labs Fabric
Interrupt Controller.
Signed-off-by: default avatarTalel Shenhar <talel@amazon.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/1568018358-18985-1-git-send-email-talel@amazon.com
parent c9c96e30
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
/* FIC Registers */ /* FIC Registers */
#define AL_FIC_CAUSE 0x00 #define AL_FIC_CAUSE 0x00
#define AL_FIC_SET_CAUSE 0x08
#define AL_FIC_MASK 0x10 #define AL_FIC_MASK 0x10
#define AL_FIC_CONTROL 0x28 #define AL_FIC_CONTROL 0x28
...@@ -126,6 +127,16 @@ static void al_fic_irq_handler(struct irq_desc *desc) ...@@ -126,6 +127,16 @@ static void al_fic_irq_handler(struct irq_desc *desc)
chained_irq_exit(irqchip, desc); chained_irq_exit(irqchip, desc);
} }
static int al_fic_irq_retrigger(struct irq_data *data)
{
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(data);
struct al_fic *fic = gc->private;
writel_relaxed(BIT(data->hwirq), fic->base + AL_FIC_SET_CAUSE);
return 1;
}
static int al_fic_register(struct device_node *node, static int al_fic_register(struct device_node *node,
struct al_fic *fic) struct al_fic *fic)
{ {
...@@ -159,6 +170,7 @@ static int al_fic_register(struct device_node *node, ...@@ -159,6 +170,7 @@ static int al_fic_register(struct device_node *node,
gc->chip_types->chip.irq_unmask = irq_gc_mask_clr_bit; gc->chip_types->chip.irq_unmask = irq_gc_mask_clr_bit;
gc->chip_types->chip.irq_ack = irq_gc_ack_clr_bit; gc->chip_types->chip.irq_ack = irq_gc_ack_clr_bit;
gc->chip_types->chip.irq_set_type = al_fic_irq_set_type; gc->chip_types->chip.irq_set_type = al_fic_irq_set_type;
gc->chip_types->chip.irq_retrigger = al_fic_irq_retrigger;
gc->chip_types->chip.flags = IRQCHIP_SKIP_SET_WAKE; gc->chip_types->chip.flags = IRQCHIP_SKIP_SET_WAKE;
gc->private = fic; gc->private = fic;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment