Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d15aacb authored by Andrew Bresticker's avatar Andrew Bresticker Committed by Mark Brown
Browse files

ASoC: max98090: request IRQF_ONESHOT interrupt



request_threaded_irq() rejects calls which both do not specify a handler
(indicating that the primary IRQ handler should be used) and do not set
IRQF_ONESHOT because the combination is unsafe with level-triggered
interrupts.  It is safe in this case, though, since max98090 IRQs are
edge-triggered and the interrupts aren't ACK'ed until the codec's IRQ
status register is read.  Because of this, an IRQF_ONESHOT interrupt
doesn't really make a difference, but request one anyway in order to make
request_threaded_irq() happy.

Signed-off-by: default avatarAndrew Bresticker <abrestic@chromium.org>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent f722406f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2233,7 +2233,7 @@ static int max98090_probe(struct snd_soc_codec *codec)
	dev_dbg(codec->dev, "irq = %d\n", max98090->irq);

	ret = request_threaded_irq(max98090->irq, NULL,
		max98090_interrupt, IRQF_TRIGGER_FALLING,
		max98090_interrupt, IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
		"max98090_interrupt", codec);
	if (ret < 0) {
		dev_err(codec->dev, "request_irq failed: %d\n",