Unverified Commit 2b727b3f authored by Brady Norander's avatar Brady Norander Committed by Mark Brown
Browse files

ASoC: dwc: always enable/disable i2s irqs



Commit a42e988b ("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: a42e988b ("ASoC: dwc: add DMA handshake control")
Signed-off-by: default avatarBrady Norander <bradynorander@gmail.com>
Link: https://patch.msgid.link/20250330130852.37881-3-bradynorander@gmail.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent dfcf3dde
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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);