Commit 8d91ecc8 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski

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: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 68b7587b
...@@ -25,10 +25,22 @@ static void irq_sim_irqunmask(struct irq_data *data) ...@@ -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)
......
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