Commit 4e7a5e7c authored by Philippe Gerum's avatar Philippe Gerum Committed by Jan Kiszka
Browse files

ipipe: pinctrl: enable basic pipeline support



This patch enables the Intel pinctrl/GPIO core driver to operate in a
pipelined interrupt system. However, it does not allow chained GPIO
IRQs to be handled from the head stage of such pipeline yet. In other
words, the chained GPIO interrupts can safely be handled from the
in-band stage when CONFIG_IPIPE is turned on, but cannot be routed to
a real-time application.

Enabling full support will require the I-pipe core to handle IRQs
chained from a shared parent interrupt natively, which it is not
implemented at the moment.
Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
parent bb923781
......@@ -1143,7 +1143,9 @@ static irqreturn_t intel_gpio_community_irq_handler(struct intel_pinctrl *pctrl,
irq = irq_find_mapping(gc->irq.domain,
padgrp->gpio_base + gpp_offset);
generic_handle_irq(irq);
hard_cond_local_irq_disable();
ipipe_handle_demuxed_irq(irq);
hard_cond_local_irq_enable();
ret |= IRQ_HANDLED;
}
......@@ -1231,7 +1233,7 @@ static int intel_gpio_probe(struct intel_pinctrl *pctrl, int irq)
pctrl->irqchip.irq_unmask = intel_gpio_irq_unmask;
pctrl->irqchip.irq_set_type = intel_gpio_irq_type;
pctrl->irqchip.irq_set_wake = intel_gpio_irq_wake;
pctrl->irqchip.flags = IRQCHIP_MASK_ON_SUSPEND;
pctrl->irqchip.flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_PIPELINE_SAFE;
ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl);
if (ret) {
......
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