ASoC: fsl_esai: Disable exception interrupt before scheduling tasklet
[ Upstream commit5.4-rM2-2.2.x-imx-squashed1fecbb71fe
] Disable exception interrupt before scheduling tasklet, otherwise if the tasklet isn't handled immediately, there will be endless xrun interrupt. Fixes:7ccafa2b38
("ASoC: fsl_esai: recover the channel swap after xrun") Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Acked-by: Nicolin Chen <nicoleotsuka@gmail.com> Link: https://lore.kernel.org/r/a8f2ad955aac9e52587beedc1133b3efbe746895.1587968824.git.shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
parent
b543c35951
commit
53057bd4ac
|
@ -87,6 +87,10 @@ static irqreturn_t esai_isr(int irq, void *devid)
|
||||||
if ((saisr & (ESAI_SAISR_TUE | ESAI_SAISR_ROE)) &&
|
if ((saisr & (ESAI_SAISR_TUE | ESAI_SAISR_ROE)) &&
|
||||||
esai_priv->reset_at_xrun) {
|
esai_priv->reset_at_xrun) {
|
||||||
dev_dbg(&pdev->dev, "reset module for xrun\n");
|
dev_dbg(&pdev->dev, "reset module for xrun\n");
|
||||||
|
regmap_update_bits(esai_priv->regmap, REG_ESAI_TCR,
|
||||||
|
ESAI_xCR_xEIE_MASK, 0);
|
||||||
|
regmap_update_bits(esai_priv->regmap, REG_ESAI_RCR,
|
||||||
|
ESAI_xCR_xEIE_MASK, 0);
|
||||||
tasklet_schedule(&esai_priv->task);
|
tasklet_schedule(&esai_priv->task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue