]> git.baikalelectronics.ru Git - kernel.git/commitdiff
irq/irq_sim: add irq_set_type() callback
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Mon, 18 Feb 2019 16:32:03 +0000 (17:32 +0100)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Tue, 19 Feb 2019 16:42:28 +0000 (17:42 +0100)
Implement the irq_set_type() callback and call irqd_set_trigger_type()
internally so that users interested in the configured trigger type can
later retrieve it using irqd_get_trigger_type(). We only support edge
trigger types.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
kernel/irq/irq_sim.c

index 98a20e1594ce7b55bf479ce95f7e7391f730523a..b992f88c561337a2b312b9b451de1732b493ea62 100644 (file)
@@ -25,10 +25,22 @@ static void irq_sim_irqunmask(struct irq_data *data)
        irq_ctx->enabled = true;
 }
 
+static int irq_sim_set_type(struct irq_data *data, unsigned int type)
+{
+       /* We only support rising and falling edge trigger types. */
+       if (type & ~IRQ_TYPE_EDGE_BOTH)
+               return -EINVAL;
+
+       irqd_set_trigger_type(data, type);
+
+       return 0;
+}
+
 static struct irq_chip irq_sim_irqchip = {
        .name           = "irq_sim",
        .irq_mask       = irq_sim_irqmask,
        .irq_unmask     = irq_sim_irqunmask,
+       .irq_set_type   = irq_sim_set_type,
 };
 
 static void irq_sim_handle_irq(struct irq_work *work)