mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 3/3] ASoC: dwc: always enable/disable i2s irqs
@ 2025-03-25 21:18 Brady Norander
  2025-03-26 13:25 ` Mark Brown
  0 siblings, 1 reply; 2+ messages in thread
From: Brady Norander @ 2025-03-25 21:18 UTC (permalink / raw)
  To: Mark Brown, linux-kernel, alsa-devel
  Cc: Jaroslav Kysela, Takashi Iwai, u.kleine-koenig, Wu Bo, Brady Norander

Commit a42e988 ("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. Revert to the old behavior by always
enabling and disabling i2s irqs while keeping DMA handshake control.

Fixes: a42e988 ("ASoC: dwc: add DMA handshake control")
Signed-off-by: Brady Norander <bradynorander@gmail.com>
---
 sound/soc/dwc/dwc-i2s.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/sound/soc/dwc/dwc-i2s.c b/sound/soc/dwc/dwc-i2s.c
index 57b789d7fbed..5b4f20dbf7bb 100644
--- a/sound/soc/dwc/dwc-i2s.c
+++ b/sound/soc/dwc/dwc-i2s.c
@@ -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);
-- 
2.49.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 3/3] ASoC: dwc: always enable/disable i2s irqs
  2025-03-25 21:18 [PATCH 3/3] ASoC: dwc: always enable/disable i2s irqs Brady Norander
@ 2025-03-26 13:25 ` Mark Brown
  0 siblings, 0 replies; 2+ messages in thread
From: Mark Brown @ 2025-03-26 13:25 UTC (permalink / raw)
  To: Brady Norander
  Cc: linux-kernel, alsa-devel, Jaroslav Kysela, Takashi Iwai,
	u.kleine-koenig, Wu Bo

[-- Attachment #1: Type: text/plain, Size: 858 bytes --]

On Tue, Mar 25, 2025 at 05:18:05PM -0400, Brady Norander wrote:

> Commit a42e988 ("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. Revert to the old behavior by always
> enabling and disabling i2s irqs while keeping DMA handshake control.
> 
> Fixes: a42e988 ("ASoC: dwc: add DMA handshake control")
> Signed-off-by: Brady Norander <bradynorander@gmail.com>

Same issue with dependencies here - what's going on?  It also doesn't
seem like the changelog is describing what's goin on well, if all AMD
systems were broken by a change from 2023 I'd really expect to have
heard about it by now.  We've had AMD themselves doing fairly extensive
work without reporting any issues.  What specifically is the problem you
are seeing?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-03-26 13:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-25 21:18 [PATCH 3/3] ASoC: dwc: always enable/disable i2s irqs Brady Norander
2025-03-26 13:25 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®