ASoC: dwc: always enable/disable i2s irqs
[ Upstream commit 2b727b3f8a04fe52f55316ccb8792cfd9b2dd05d ] Commita42e988("ASoC: dwc: add DMA handshake control") changed the behavior of the driver to not enable or disable i2s irqs if using DMA. This breaks platforms such as AMD ACP. Audio playback appears to work but no audio can be heard. Revert to the old behavior by always enabling and disabling i2s irqs while keeping DMA handshake control. Fixes:a42e988b62("ASoC: dwc: add DMA handshake control") Signed-off-by: Brady Norander <bradynorander@gmail.com> Link: https://patch.msgid.link/20250330130852.37881-3-bradynorander@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
eeeba7f43a
commit
dcba15ed08
@@ -199,12 +199,10 @@ static void i2s_start(struct dw_i2s_dev *dev,
|
||||
else
|
||||
i2s_write_reg(dev->i2s_base, IRER, 1);
|
||||
|
||||
/* I2S needs to enable IRQ to make a handshake with DMAC on the JH7110 SoC */
|
||||
if (dev->use_pio || dev->is_jh7110)
|
||||
i2s_enable_irqs(dev, substream->stream, config->chan_nr);
|
||||
else
|
||||
if (!(dev->use_pio || dev->is_jh7110))
|
||||
i2s_enable_dma(dev, substream->stream);
|
||||
|
||||
i2s_enable_irqs(dev, substream->stream, config->chan_nr);
|
||||
i2s_write_reg(dev->i2s_base, CER, 1);
|
||||
}
|
||||
|
||||
@@ -218,11 +216,12 @@ static void i2s_stop(struct dw_i2s_dev *dev,
|
||||
else
|
||||
i2s_write_reg(dev->i2s_base, IRER, 0);
|
||||
|
||||
if (dev->use_pio || dev->is_jh7110)
|
||||
i2s_disable_irqs(dev, substream->stream, 8);
|
||||
else
|
||||
if (!(dev->use_pio || dev->is_jh7110))
|
||||
i2s_disable_dma(dev, substream->stream);
|
||||
|
||||
i2s_disable_irqs(dev, substream->stream, 8);
|
||||
|
||||
|
||||
if (!dev->active) {
|
||||
i2s_write_reg(dev->i2s_base, CER, 0);
|
||||
i2s_write_reg(dev->i2s_base, IER, 0);
|
||||
|
||||
Reference in New Issue
Block a user