Skip to content

Commit 2bc54aa

Browse files
William Breathitt Graygregkh
authored andcommitted
counter: 104-quad-8: Fix skipped IRQ lines during events configuration
IRQ trigger configuration is skipped if it has already been set before; however, the IRQ line still needs to be OR'd to irq_enabled because irq_enabled is reset for every events_configure call. This patch moves the irq_enabled OR operation update to before the irq_trigger check so that IRQ line enablement is not skipped. Fixes: c95cc0d ("counter: 104-quad-8: Fix persistent enabled events bug") Cc: stable <stable@kernel.org> Link: https://lore.kernel.org/r/20220815122301.2750-1-william.gray@linaro.org/ Signed-off-by: William Breathitt Gray <william.gray@linaro.org> Link: https://lore.kernel.org/r/179eed11eaf225dbd908993b510df0c8f67b1230.1663844776.git.william.gray@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent ab4bbde commit 2bc54aa

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/counter/104-quad-8.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,9 @@ static int quad8_events_configure(struct counter_device *counter)
449449
return -EINVAL;
450450
}
451451

452+
/* Enable IRQ line */
453+
irq_enabled |= BIT(event_node->channel);
454+
452455
/* Skip configuration if it is the same as previously set */
453456
if (priv->irq_trigger[event_node->channel] == next_irq_trigger)
454457
continue;
@@ -462,9 +465,6 @@ static int quad8_events_configure(struct counter_device *counter)
462465
priv->irq_trigger[event_node->channel] << 3;
463466
iowrite8(QUAD8_CTR_IOR | ior_cfg,
464467
&priv->reg->channel[event_node->channel].control);
465-
466-
/* Enable IRQ line */
467-
irq_enabled |= BIT(event_node->channel);
468468
}
469469

470470
iowrite8(irq_enabled, &priv->reg->index_interrupt);

0 commit comments

Comments
 (0)