Tested on a Cubieboard2 with v3.16.7-ckt9 kernel.

---
 arch/arm/mach-sunxi/Kconfig     |    1 +
 drivers/irqchip/irq-sunxi-nmi.c |    7 ++++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index 0fbd4f1..96d76da8 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -6,6 +6,7 @@ menuconfig ARCH_SUNXI
        select PINCTRL
        select PINCTRL_SUNXI
        select SUN4I_TIMER
+       select IPIPE_ARM_KUSER_TSC if IPIPE
 
 if ARCH_SUNXI
 
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 12f547a..d3e8da2 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -77,8 +77,9 @@ static int sunxi_sc_nmi_set_type(struct irq_data *data, 
unsigned int flow_type)
        u32 ctrl_off = ct->regs.type;
        unsigned int src_type;
        unsigned int i;
+       unsigned long flags;
 
-       irq_gc_lock(gc);
+       flags = irq_gc_lock(gc);
 
        switch (flow_type & IRQF_TRIGGER_MASK) {
        case IRQ_TYPE_EDGE_FALLING:
@@ -95,7 +96,7 @@ static int sunxi_sc_nmi_set_type(struct irq_data *data, 
unsigned int flow_type)
                src_type = SUNXI_SRC_TYPE_LEVEL_LOW;
                break;
        default:
-               irq_gc_unlock(gc);
+               irq_gc_unlock(gc, flags);
                pr_err("%s: Cannot assign multiple trigger modes to IRQ %d.\n",
                        __func__, data->irq);
                return -EBADR;
@@ -113,7 +114,7 @@ static int sunxi_sc_nmi_set_type(struct irq_data *data, 
unsigned int flow_type)
        src_type_reg |= src_type;
        sunxi_sc_nmi_write(gc, ctrl_off, src_type_reg);
 
-       irq_gc_unlock(gc);
+       irq_gc_unlock(gc, flags);
 
        return IRQ_SET_MASK_OK;
 }
-- 
1.7.10.4


_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to