linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping
@ 2023-06-26 10:53 Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 2/6] ASoC: amd: ps: add fix for dma irq mask for rx streams for SDW0 instance Vijendar Mukunda
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Vijendar Mukunda @ 2023-06-26 10:53 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Vijendar Mukunda,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Syed Saba Kareem,
	Mario Limonciello, open list

Add comments for DMA stream id and IRQ bit mapping in
ACP_EXTERNAL_CNTL & ACP_EXTERNAL_CNTL1 registers for
SDW0 and SDW1 manager instances.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/ps/acp63.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/sound/soc/amd/ps/acp63.h b/sound/soc/amd/ps/acp63.h
index e96e6dc9d90f..733a16e23d32 100644
--- a/sound/soc/amd/ps/acp63.h
+++ b/sound/soc/amd/ps/acp63.h
@@ -116,8 +116,28 @@
 #define ACP63_SDW0_DMA_MAX_STREAMS	6
 #define ACP63_SDW1_DMA_MAX_STREAMS	2
 #define ACP_P1_AUDIO_TX_THRESHOLD	6
+
+/*
+ * Below entries describes SDW0 instance DMA stream id and DMA irq bit mapping
+ * in ACP_EXTENAL_INTR_CNTL register.
+ * Stream id		IRQ Bit
+ * 0 (SDW0_AUDIO0_TX)	28
+ * 1 (SDW0_AUDIO1_TX)	26
+ * 2 (SDW0_AUDIO2_TX)	24
+ * 3 (SDW0_AUDIO0_RX)	27
+ * 4 (SDW0_AUDIO1_RX)	25
+ * 5 (SDW0_AUDIO2_RX)	23
+ */
 #define SDW0_DMA_TX_IRQ_MASK(i)	(ACP_AUDIO0_TX_THRESHOLD - (2 * (i)))
 #define SDW0_DMA_RX_IRQ_MASK(i)	(ACP_AUDIO0_RX_THRESHOLD - (2 * (i)))
+
+/*
+ * Below entries describes SDW1 instance DMA stream id and DMA irq bit mapping
+ * in ACP_EXTENAL_INTR_CNTL1 register.
+ * Stream id		IRQ Bit
+ * 0 (SDW1_AUDIO1_TX)	6
+ * 1 (SDW1_AUDIO1_RX)	5
+ */
 #define SDW1_DMA_IRQ_MASK(i)	(ACP_P1_AUDIO_TX_THRESHOLD - (i))
 
 #define ACP_DELAY_US		5
-- 
2.34.1


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

* [PATCH 2/6] ASoC: amd: ps: add fix for dma irq mask for rx streams for SDW0 instance
  2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
@ 2023-06-26 10:53 ` Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 3/6] ASoC: amd: ps: fix for position register set for AUDIO0 RX stream Vijendar Mukunda
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Vijendar Mukunda @ 2023-06-26 10:53 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Vijendar Mukunda,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Syed Saba Kareem,
	Mario Limonciello, open list

Correct the DMA irq mask macro to program DMA irq bits correctly for
SDW0 instance rx streams.

Fixes: 298d4f7b1765 ("ASoC: amd: ps: add support for SoundWire DMA interrupts")

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/ps/acp63.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/amd/ps/acp63.h b/sound/soc/amd/ps/acp63.h
index 733a16e23d32..8b853b8d0219 100644
--- a/sound/soc/amd/ps/acp63.h
+++ b/sound/soc/amd/ps/acp63.h
@@ -129,7 +129,7 @@
  * 5 (SDW0_AUDIO2_RX)	23
  */
 #define SDW0_DMA_TX_IRQ_MASK(i)	(ACP_AUDIO0_TX_THRESHOLD - (2 * (i)))
-#define SDW0_DMA_RX_IRQ_MASK(i)	(ACP_AUDIO0_RX_THRESHOLD - (2 * (i)))
+#define SDW0_DMA_RX_IRQ_MASK(i)	(ACP_AUDIO0_RX_THRESHOLD - (2 * ((i) - 3)))
 
 /*
  * Below entries describes SDW1 instance DMA stream id and DMA irq bit mapping
-- 
2.34.1


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

* [PATCH 3/6] ASoC: amd: ps: fix for position register set for AUDIO0 RX stream
  2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 2/6] ASoC: amd: ps: add fix for dma irq mask for rx streams for SDW0 instance Vijendar Mukunda
@ 2023-06-26 10:53 ` Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 4/6] ASoC: amd: ps: add comments for DMA register mapping Vijendar Mukunda
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Vijendar Mukunda @ 2023-06-26 10:53 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Vijendar Mukunda,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, open list

For AUDIO0 RX stream, AUDIO0_RX position registers should be used.
DMA error is reported due to referring wrong position register set for
AUDIO0 RX stream.
Correct the position register set for AUDIO0 RX stream.

Fixes: f722917350ee ("ASoC: amd: ps: add SoundWire dma driver dma ops")

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/ps/ps-sdw-dma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/amd/ps/ps-sdw-dma.c b/sound/soc/amd/ps/ps-sdw-dma.c
index ade130a8062a..3ab41bd1fce2 100644
--- a/sound/soc/amd/ps/ps-sdw-dma.c
+++ b/sound/soc/amd/ps/ps-sdw-dma.c
@@ -30,7 +30,7 @@ static struct sdw_dma_ring_buf_reg sdw0_dma_ring_buf_reg[ACP63_SDW0_DMA_MAX_STRE
 	 ACP_AUDIO2_TX_LINEARPOSITIONCNTR_LOW, ACP_AUDIO2_TX_LINEARPOSITIONCNTR_HIGH},
 	{ACP_AUDIO0_RX_DMA_SIZE, ACP_AUDIO0_RX_FIFOADDR, ACP_AUDIO0_RX_FIFOSIZE,
 	 ACP_AUDIO0_RX_RINGBUFSIZE, ACP_AUDIO0_RX_RINGBUFADDR, ACP_AUDIO0_RX_INTR_WATERMARK_SIZE,
-	 ACP_AUDIO0_TX_LINEARPOSITIONCNTR_LOW, ACP_AUDIO0_TX_LINEARPOSITIONCNTR_HIGH},
+	 ACP_AUDIO0_RX_LINEARPOSITIONCNTR_LOW, ACP_AUDIO0_RX_LINEARPOSITIONCNTR_HIGH},
 	{ACP_AUDIO1_RX_DMA_SIZE, ACP_AUDIO1_RX_FIFOADDR, ACP_AUDIO1_RX_FIFOSIZE,
 	 ACP_AUDIO1_RX_RINGBUFSIZE, ACP_AUDIO1_RX_RINGBUFADDR, ACP_AUDIO1_RX_INTR_WATERMARK_SIZE,
 	 ACP_AUDIO1_RX_LINEARPOSITIONCNTR_LOW, ACP_AUDIO1_RX_LINEARPOSITIONCNTR_HIGH},
-- 
2.34.1


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

* [PATCH 4/6] ASoC: amd: ps: add comments for DMA register mapping
  2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 2/6] ASoC: amd: ps: add fix for dma irq mask for rx streams for SDW0 instance Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 3/6] ASoC: amd: ps: fix for position register set for AUDIO0 RX stream Vijendar Mukunda
@ 2023-06-26 10:53 ` Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 5/6] ASoC: amd: ps: fix byte count return value for invalid SoundWire manager instance Vijendar Mukunda
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Vijendar Mukunda @ 2023-06-26 10:53 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Vijendar Mukunda,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, open list

Add comments for DMA register mapping for both the SoundWire manager
instances.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/ps/ps-sdw-dma.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/sound/soc/amd/ps/ps-sdw-dma.c b/sound/soc/amd/ps/ps-sdw-dma.c
index 3ab41bd1fce2..000ab5d96815 100644
--- a/sound/soc/amd/ps/ps-sdw-dma.c
+++ b/sound/soc/amd/ps/ps-sdw-dma.c
@@ -39,6 +39,11 @@ static struct sdw_dma_ring_buf_reg sdw0_dma_ring_buf_reg[ACP63_SDW0_DMA_MAX_STRE
 	 ACP_AUDIO2_RX_LINEARPOSITIONCNTR_LOW, ACP_AUDIO2_RX_LINEARPOSITIONCNTR_HIGH}
 };
 
+/*
+ * SDW1 instance supports one TX stream and one RX stream.
+ * For TX/RX streams DMA registers programming for SDW1 instance, it uses ACP_P1_AUDIO1 register
+ * set as per hardware register documentation
+ */
 static struct sdw_dma_ring_buf_reg sdw1_dma_ring_buf_reg[ACP63_SDW1_DMA_MAX_STREAMS] =  {
 	{ACP_P1_AUDIO1_TX_DMA_SIZE, ACP_P1_AUDIO1_TX_FIFOADDR, ACP_P1_AUDIO1_TX_FIFOSIZE,
 	 ACP_P1_AUDIO1_TX_RINGBUFSIZE, ACP_P1_AUDIO1_TX_RINGBUFADDR,
@@ -59,6 +64,12 @@ static u32 sdw0_dma_enable_reg[ACP63_SDW0_DMA_MAX_STREAMS] = {
 	ACP_SW0_AUDIO2_RX_EN,
 };
 
+/*
+ * SDW1 instance supports one TX stream and one RX stream.
+ * For TX/RX streams DMA enable register programming for SDW1 instance,
+ * it uses ACP_SW1_AUDIO1_TX_EN and ACP_SW1_AUDIO1_RX_EN registers
+ * as per hardware register documentation.
+ */
 static u32 sdw1_dma_enable_reg[ACP63_SDW1_DMA_MAX_STREAMS] = {
 	ACP_SW1_AUDIO1_TX_EN,
 	ACP_SW1_AUDIO1_RX_EN,
-- 
2.34.1


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

* [PATCH 5/6] ASoC: amd: ps: fix byte count return value for invalid SoundWire manager instance
  2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
                   ` (2 preceding siblings ...)
  2023-06-26 10:53 ` [PATCH 4/6] ASoC: amd: ps: add comments for DMA register mapping Vijendar Mukunda
@ 2023-06-26 10:53 ` Vijendar Mukunda
  2023-06-26 10:53 ` [PATCH 6/6] ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count() Vijendar Mukunda
  2023-06-29 10:33 ` [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Mark Brown
  5 siblings, 0 replies; 7+ messages in thread
From: Vijendar Mukunda @ 2023-06-26 10:53 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Vijendar Mukunda,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, open list

acp_get_byte_count() function should return zero bytes instead of
-EINVAL for invalid SoundWire manager instance.

Fixes: f722917350ee ("ASoC: amd: ps: add SoundWire dma driver dma ops")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/ps/ps-sdw-dma.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/amd/ps/ps-sdw-dma.c b/sound/soc/amd/ps/ps-sdw-dma.c
index 000ab5d96815..324c80fca672 100644
--- a/sound/soc/amd/ps/ps-sdw-dma.c
+++ b/sound/soc/amd/ps/ps-sdw-dma.c
@@ -318,12 +318,13 @@ static u64 acp63_sdw_get_byte_count(struct acp_sdw_dma_stream *stream, void __io
 		pos_high_reg = sdw1_dma_ring_buf_reg[stream->stream_id].pos_high_reg;
 		break;
 	default:
-		return -EINVAL;
+		goto POINTER_RETURN_BYTES;
 	}
 	if (pos_low_reg) {
 		byte_count.bcount.high = readl(acp_base + pos_high_reg);
 		byte_count.bcount.low = readl(acp_base + pos_low_reg);
 	}
+POINTER_RETURN_BYTES:
 	return byte_count.bytescount;
 }
 
-- 
2.34.1


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

* [PATCH 6/6] ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count()
  2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
                   ` (3 preceding siblings ...)
  2023-06-26 10:53 ` [PATCH 5/6] ASoC: amd: ps: fix byte count return value for invalid SoundWire manager instance Vijendar Mukunda
@ 2023-06-26 10:53 ` Vijendar Mukunda
  2023-06-29 10:33 ` [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Mark Brown
  5 siblings, 0 replies; 7+ messages in thread
From: Vijendar Mukunda @ 2023-06-26 10:53 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Vijendar Mukunda,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
	Venkata Prasad Potturu, V sujith kumar Reddy, Ajit Kumar Pandey,
	open list

For invalid dai id, instead of returning -EINVAL
return bytes count as zero in acp_get_byte_count() function.

Fixes: 623621a9f9e1 ("ASoC: amd: Add common framework to support I2S on ACP SOC")

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/acp/amd.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/sound/soc/amd/acp/amd.h b/sound/soc/amd/acp/amd.h
index 5f2119f42271..12a176a50fd6 100644
--- a/sound/soc/amd/acp/amd.h
+++ b/sound/soc/amd/acp/amd.h
@@ -173,7 +173,7 @@ int snd_amd_acp_find_config(struct pci_dev *pci);
 
 static inline u64 acp_get_byte_count(struct acp_dev_data *adata, int dai_id, int direction)
 {
-	u64 byte_count, low = 0, high = 0;
+	u64 byte_count = 0, low = 0, high = 0;
 
 	if (direction == SNDRV_PCM_STREAM_PLAYBACK) {
 		switch (dai_id) {
@@ -191,7 +191,7 @@ static inline u64 acp_get_byte_count(struct acp_dev_data *adata, int dai_id, int
 			break;
 		default:
 			dev_err(adata->dev, "Invalid dai id %x\n", dai_id);
-			return -EINVAL;
+			goto POINTER_RETURN_BYTES;
 		}
 	} else {
 		switch (dai_id) {
@@ -213,12 +213,13 @@ static inline u64 acp_get_byte_count(struct acp_dev_data *adata, int dai_id, int
 			break;
 		default:
 			dev_err(adata->dev, "Invalid dai id %x\n", dai_id);
-			return -EINVAL;
+			goto POINTER_RETURN_BYTES;
 		}
 	}
 	/* Get 64 bit value from two 32 bit registers */
 	byte_count = (high << 32) | low;
 
+POINTER_RETURN_BYTES:
 	return byte_count;
 }
 
-- 
2.34.1


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

* Re: [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping
  2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
                   ` (4 preceding siblings ...)
  2023-06-26 10:53 ` [PATCH 6/6] ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count() Vijendar Mukunda
@ 2023-06-29 10:33 ` Mark Brown
  5 siblings, 0 replies; 7+ messages in thread
From: Mark Brown @ 2023-06-29 10:33 UTC (permalink / raw)
  To: Vijendar Mukunda
  Cc: alsa-devel, Basavaraj.Hiregoudar, Sunil-kumar.Dommati,
	Mastan.Katragadda, Arungopal.kondaveeti, Liam Girdwood,
	Jaroslav Kysela, Takashi Iwai, Syed Saba Kareem,
	Mario Limonciello, open list

On Mon, 26 Jun 2023 16:23:49 +0530, Vijendar Mukunda wrote:
> Add comments for DMA stream id and IRQ bit mapping in
> ACP_EXTERNAL_CNTL & ACP_EXTERNAL_CNTL1 registers for
> SDW0 and SDW1 manager instances.
> 
> 

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/6] ASoC: amd: ps: add comments for DMA irq bits mapping
      commit: 7beda6a256ed10e74dc00fcd0fc8da0ad8fea78d
[2/6] ASoC: amd: ps: add fix for dma irq mask for rx streams for SDW0 instance
      commit: 322a163ea6a38f63555d824c5b66c7df5a595c2d
[3/6] ASoC: amd: ps: fix for position register set for AUDIO0 RX stream
      commit: f15f6b294dde506bd4902db3262e9b4ab7e9e5a9
[4/6] ASoC: amd: ps: add comments for DMA register mapping
      commit: 46b50e514b191ae15789cccabace5b6040c9278e
[5/6] ASoC: amd: ps: fix byte count return value for invalid SoundWire manager instance
      commit: 68a653ab864ccf7874fe622f3af20fe7345c39be
[6/6] ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count()
      commit: 85aeab362201cf52c34cd429e4f6c75a0b42f9a3

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


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

end of thread, other threads:[~2023-06-29 10:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-26 10:53 [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Vijendar Mukunda
2023-06-26 10:53 ` [PATCH 2/6] ASoC: amd: ps: add fix for dma irq mask for rx streams for SDW0 instance Vijendar Mukunda
2023-06-26 10:53 ` [PATCH 3/6] ASoC: amd: ps: fix for position register set for AUDIO0 RX stream Vijendar Mukunda
2023-06-26 10:53 ` [PATCH 4/6] ASoC: amd: ps: add comments for DMA register mapping Vijendar Mukunda
2023-06-26 10:53 ` [PATCH 5/6] ASoC: amd: ps: fix byte count return value for invalid SoundWire manager instance Vijendar Mukunda
2023-06-26 10:53 ` [PATCH 6/6] ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count() Vijendar Mukunda
2023-06-29 10:33 ` [PATCH 1/6] ASoC: amd: ps: add comments for DMA irq bits mapping Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).