irq/irq_sim: add irq_set_type() callback

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>
This commit is contained in:
Bartosz Golaszewski 2019-02-18 17:32:03 +01:00
parent 68b7587baa
commit 8d91ecc84d

View File

@ -25,10 +25,22 @@ static void irq_sim_irqunmask(struct irq_data *data)
irq_ctx->enabled = true; 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 = { static struct irq_chip irq_sim_irqchip = {
.name = "irq_sim", .name = "irq_sim",
.irq_mask = irq_sim_irqmask, .irq_mask = irq_sim_irqmask,
.irq_unmask = irq_sim_irqunmask, .irq_unmask = irq_sim_irqunmask,
.irq_set_type = irq_sim_set_type,
}; };
static void irq_sim_handle_irq(struct irq_work *work) static void irq_sim_handle_irq(struct irq_work *work)