Source
63
63
xtensa_irq_mask(d);
64
64
}
65
65
66
66
static void xtensa_irq_ack(struct irq_data *d)
67
67
{
68
68
xtensa_set_sr(1 << d->hwirq, intclear);
69
69
}
70
70
71
71
static int xtensa_irq_retrigger(struct irq_data *d)
72
72
{
73
-
xtensa_set_sr(1 << d->hwirq, intset);
73
+
unsigned int mask = 1u << d->hwirq;
74
+
75
+
if (WARN_ON(mask & ~XCHAL_INTTYPE_MASK_SOFTWARE))
76
+
return 0;
77
+
xtensa_set_sr(mask, intset);
74
78
return 1;
75
79
}
76
80
77
81
static struct irq_chip xtensa_irq_chip = {
78
82
.name = "xtensa",
79
83
.irq_enable = xtensa_irq_enable,
80
84
.irq_disable = xtensa_irq_disable,
81
85
.irq_mask = xtensa_irq_mask,
82
86
.irq_unmask = xtensa_irq_unmask,
83
87
.irq_ack = xtensa_irq_ack,