diff options
| author | Max Filippov <jcmvbkbc@gmail.com> | 2019-01-24 19:51:28 -0500 |
|---|---|---|
| committer | Max Filippov <jcmvbkbc@gmail.com> | 2019-01-26 05:02:14 -0500 |
| commit | bb6652363be0415578ec4a8794cbe9403db9c336 (patch) | |
| tree | c316a722fccfb6a738ca4f5b72f9138f2ea06101 | |
| parent | 8b1c42cdd7181200dc1fff39dcb6ac1a3fac2c25 (diff) | |
drivers/irqchip: xtensa: add warning to irq_retrigger
XEA2 and MX PIC can only retrigger software interrupts. Issue a warning
if an interrupt of any other type is retriggered.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
| -rw-r--r-- | drivers/irqchip/irq-xtensa-mx.c | 6 | ||||
| -rw-r--r-- | drivers/irqchip/irq-xtensa-pic.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/irqchip/irq-xtensa-mx.c b/drivers/irqchip/irq-xtensa-mx.c index 5385f5768345..0bd3fe3b969e 100644 --- a/drivers/irqchip/irq-xtensa-mx.c +++ b/drivers/irqchip/irq-xtensa-mx.c | |||
| @@ -113,7 +113,11 @@ static void xtensa_mx_irq_ack(struct irq_data *d) | |||
| 113 | 113 | ||
| 114 | static int xtensa_mx_irq_retrigger(struct irq_data *d) | 114 | static int xtensa_mx_irq_retrigger(struct irq_data *d) |
| 115 | { | 115 | { |
| 116 | xtensa_set_sr(1 << d->hwirq, intset); | 116 | unsigned int mask = 1u << d->hwirq; |
| 117 | |||
| 118 | if (WARN_ON(mask & ~XCHAL_INTTYPE_MASK_SOFTWARE)) | ||
| 119 | return 0; | ||
| 120 | xtensa_set_sr(mask, intset); | ||
| 117 | return 1; | 121 | return 1; |
| 118 | } | 122 | } |
| 119 | 123 | ||
diff --git a/drivers/irqchip/irq-xtensa-pic.c b/drivers/irqchip/irq-xtensa-pic.c index c200234dd2c9..ab12328be5ee 100644 --- a/drivers/irqchip/irq-xtensa-pic.c +++ b/drivers/irqchip/irq-xtensa-pic.c | |||
| @@ -70,7 +70,11 @@ static void xtensa_irq_ack(struct irq_data *d) | |||
| 70 | 70 | ||
| 71 | static int xtensa_irq_retrigger(struct irq_data *d) | 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 | return 1; | 78 | return 1; |
| 75 | } | 79 | } |
| 76 | 80 | ||
