* [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence
@ 2024-08-12 11:05 Vijendar Mukunda
2024-08-12 11:05 ` [PATCH 2/2] ASoC: SOF: amd: Fix for incorrect acp error register offsets Vijendar Mukunda
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Vijendar Mukunda @ 2024-08-12 11:05 UTC (permalink / raw)
To: broonie
Cc: alsa-devel, Sunil-kumar.Dommati, Basavaraj.Hiregoudar,
venkataprasad.potturu, pierre-louis.bossart, lgirdwood,
yung-chuan.liao, peter.ujfalusi, ranjani.sridharan, perex, tiwai,
cristian.ciocaltea, sound-open-firmware, linux-sound,
linux-kernel, kai.vehmanen, Vijendar Mukunda, Daniel Baluta
As per design, ACP iram-dram fence register sequence should be initiated
before triggering SHA dma. This ensures that IRAM size will programmed
correctly before initiaing SHA dma.
Fixes: 094d11768f74 ("ASoC: SOF: amd: Skip IRAM/DRAM size modification for Steam Deck OLED")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
sound/soc/sof/amd/acp.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c
index 7b122656efd1..b8d4f986f89d 100644
--- a/sound/soc/sof/amd/acp.c
+++ b/sound/soc/sof/amd/acp.c
@@ -263,6 +263,17 @@ int configure_and_run_sha_dma(struct acp_dev_data *adata, void *image_addr,
snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SHA_DMA_STRT_ADDR, start_addr);
snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SHA_DMA_DESTINATION_ADDR, dest_addr);
snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SHA_MSG_LENGTH, image_length);
+
+ /* psp_send_cmd only required for vangogh platform (rev - 5) */
+ if (desc->rev == 5 && !(adata->quirks && adata->quirks->skip_iram_dram_size_mod)) {
+ /* Modify IRAM and DRAM size */
+ ret = psp_send_cmd(adata, MBOX_ACP_IRAM_DRAM_FENCE_COMMAND | IRAM_DRAM_FENCE_2);
+ if (ret)
+ return ret;
+ ret = psp_send_cmd(adata, MBOX_ACP_IRAM_DRAM_FENCE_COMMAND | MBOX_ISREADY_FLAG);
+ if (ret)
+ return ret;
+ }
snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SHA_DMA_CMD, ACP_SHA_RUN);
ret = snd_sof_dsp_read_poll_timeout(sdev, ACP_DSP_BAR, ACP_SHA_TRANSFER_BYTE_CNT,
@@ -280,17 +291,6 @@ int configure_and_run_sha_dma(struct acp_dev_data *adata, void *image_addr,
return ret;
}
- /* psp_send_cmd only required for vangogh platform (rev - 5) */
- if (desc->rev == 5 && !(adata->quirks && adata->quirks->skip_iram_dram_size_mod)) {
- /* Modify IRAM and DRAM size */
- ret = psp_send_cmd(adata, MBOX_ACP_IRAM_DRAM_FENCE_COMMAND | IRAM_DRAM_FENCE_2);
- if (ret)
- return ret;
- ret = psp_send_cmd(adata, MBOX_ACP_IRAM_DRAM_FENCE_COMMAND | MBOX_ISREADY_FLAG);
- if (ret)
- return ret;
- }
-
ret = snd_sof_dsp_read_poll_timeout(sdev, ACP_DSP_BAR, ACP_SHA_DSP_FW_QUALIFIER,
fw_qualifier, fw_qualifier & DSP_FW_RUN_ENABLE,
ACP_REG_POLL_INTERVAL, ACP_DMA_COMPLETE_TIMEOUT_US);
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] ASoC: SOF: amd: Fix for incorrect acp error register offsets
2024-08-12 11:05 [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Vijendar Mukunda
@ 2024-08-12 11:05 ` Vijendar Mukunda
2024-08-13 8:15 ` [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Markus Elfring
2024-08-13 14:52 ` Mark Brown
2 siblings, 0 replies; 5+ messages in thread
From: Vijendar Mukunda @ 2024-08-12 11:05 UTC (permalink / raw)
To: broonie
Cc: alsa-devel, Sunil-kumar.Dommati, Basavaraj.Hiregoudar,
venkataprasad.potturu, pierre-louis.bossart, lgirdwood,
yung-chuan.liao, peter.ujfalusi, ranjani.sridharan, perex, tiwai,
cristian.ciocaltea, sound-open-firmware, linux-sound,
linux-kernel, kai.vehmanen, Vijendar Mukunda, Daniel Baluta,
Krzysztof Kozlowski, Rander Wang
Adding 'dsp_intr_base' to ACP error status register offset in irq handler
points to wrong register offset. ACP error status register offset got
changed from ACP 6.0 onwards. Add 'acp_error_stat' descriptor field and
update the value based on the ACP variant.
Fix the incorrect register offsets for acp error reason registers.
Add 'acp_sw0_i2s_err_reason' as register field in acp descriptor structure
and update the value based on the acp variant.
ACP_SW1_ERROR_REASON register was added from Rembrandt platform onwards.
Add conditional check for the same.
Fixes: 96eb81851012 ("ASoC: SOF: amd: add interrupt handling for SoundWire manager devices")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
sound/soc/sof/amd/acp-dsp-offset.h | 6 ++++--
sound/soc/sof/amd/acp.c | 11 +++++++----
sound/soc/sof/amd/acp.h | 2 ++
sound/soc/sof/amd/pci-acp63.c | 2 ++
sound/soc/sof/amd/pci-rmb.c | 2 ++
sound/soc/sof/amd/pci-rn.c | 2 ++
6 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/sound/soc/sof/amd/acp-dsp-offset.h b/sound/soc/sof/amd/acp-dsp-offset.h
index 59afbe2e0f42..072b703f9b3f 100644
--- a/sound/soc/sof/amd/acp-dsp-offset.h
+++ b/sound/soc/sof/amd/acp-dsp-offset.h
@@ -76,13 +76,15 @@
#define DSP_SW_INTR_CNTL_OFFSET 0x0
#define DSP_SW_INTR_STAT_OFFSET 0x4
#define DSP_SW_INTR_TRIG_OFFSET 0x8
-#define ACP_ERROR_STATUS 0x18C4
+#define ACP3X_ERROR_STATUS 0x18C4
+#define ACP6X_ERROR_STATUS 0x1A4C
#define ACP3X_AXI2DAGB_SEM_0 0x1880
#define ACP5X_AXI2DAGB_SEM_0 0x1884
#define ACP6X_AXI2DAGB_SEM_0 0x1874
/* ACP common registers to report errors related to I2S & SoundWire interfaces */
-#define ACP_SW0_I2S_ERROR_REASON 0x18B4
+#define ACP3X_SW_I2S_ERROR_REASON 0x18C8
+#define ACP6X_SW0_I2S_ERROR_REASON 0x18B4
#define ACP_SW1_I2S_ERROR_REASON 0x1A50
/* Registers from ACP_SHA block */
diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c
index b8d4f986f89d..35e56d22930f 100644
--- a/sound/soc/sof/amd/acp.c
+++ b/sound/soc/sof/amd/acp.c
@@ -92,6 +92,7 @@ static int config_dma_channel(struct acp_dev_data *adata, unsigned int ch,
unsigned int idx, unsigned int dscr_count)
{
struct snd_sof_dev *sdev = adata->dev;
+ const struct sof_amd_acp_desc *desc = get_chip_info(sdev->pdata);
unsigned int val, status;
int ret;
@@ -102,7 +103,7 @@ static int config_dma_channel(struct acp_dev_data *adata, unsigned int ch,
val & (1 << ch), ACP_REG_POLL_INTERVAL,
ACP_REG_POLL_TIMEOUT_US);
if (ret < 0) {
- status = snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP_ERROR_STATUS);
+ status = snd_sof_dsp_read(sdev, ACP_DSP_BAR, desc->acp_error_stat);
val = snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP_DMA_ERR_STS_0 + ch * sizeof(u32));
dev_err(sdev->dev, "ACP_DMA_ERR_STS :0x%x ACP_ERROR_STATUS :0x%x\n", val, status);
@@ -402,9 +403,11 @@ static irqreturn_t acp_irq_handler(int irq, void *dev_id)
if (val & ACP_ERROR_IRQ_MASK) {
snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->ext_intr_stat, ACP_ERROR_IRQ_MASK);
- snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + ACP_SW0_I2S_ERROR_REASON, 0);
- snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + ACP_SW1_I2S_ERROR_REASON, 0);
- snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + ACP_ERROR_STATUS, 0);
+ snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->acp_sw0_i2s_err_reason, 0);
+ /* ACP_SW1_I2S_ERROR_REASON is newly added register from rmb platform onwards */
+ if (desc->rev >= 6)
+ snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SW1_I2S_ERROR_REASON, 0);
+ snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->acp_error_stat, 0);
irq_flag = 1;
}
diff --git a/sound/soc/sof/amd/acp.h b/sound/soc/sof/amd/acp.h
index ec9170b3f068..f6f0fcfeb691 100644
--- a/sound/soc/sof/amd/acp.h
+++ b/sound/soc/sof/amd/acp.h
@@ -203,6 +203,8 @@ struct sof_amd_acp_desc {
u32 probe_reg_offset;
u32 reg_start_addr;
u32 reg_end_addr;
+ u32 acp_error_stat;
+ u32 acp_sw0_i2s_err_reason;
u32 sdw_max_link_count;
u64 sdw_acpi_dev_addr;
};
diff --git a/sound/soc/sof/amd/pci-acp63.c b/sound/soc/sof/amd/pci-acp63.c
index 54d42f83ce9e..e90658ba2bd7 100644
--- a/sound/soc/sof/amd/pci-acp63.c
+++ b/sound/soc/sof/amd/pci-acp63.c
@@ -35,6 +35,8 @@ static const struct sof_amd_acp_desc acp63_chip_info = {
.ext_intr_cntl = ACP6X_EXTERNAL_INTR_CNTL,
.ext_intr_stat = ACP6X_EXT_INTR_STAT,
.ext_intr_stat1 = ACP6X_EXT_INTR_STAT1,
+ .acp_error_stat = ACP6X_ERROR_STATUS,
+ .acp_sw0_i2s_err_reason = ACP6X_SW0_I2S_ERROR_REASON,
.dsp_intr_base = ACP6X_DSP_SW_INTR_BASE,
.sram_pte_offset = ACP6X_SRAM_PTE_OFFSET,
.hw_semaphore_offset = ACP6X_AXI2DAGB_SEM_0,
diff --git a/sound/soc/sof/amd/pci-rmb.c b/sound/soc/sof/amd/pci-rmb.c
index 4bc30951f8b0..a366f904e6f3 100644
--- a/sound/soc/sof/amd/pci-rmb.c
+++ b/sound/soc/sof/amd/pci-rmb.c
@@ -33,6 +33,8 @@ static const struct sof_amd_acp_desc rembrandt_chip_info = {
.pgfsm_base = ACP6X_PGFSM_BASE,
.ext_intr_stat = ACP6X_EXT_INTR_STAT,
.dsp_intr_base = ACP6X_DSP_SW_INTR_BASE,
+ .acp_error_stat = ACP6X_ERROR_STATUS,
+ .acp_sw0_i2s_err_reason = ACP6X_SW0_I2S_ERROR_REASON,
.sram_pte_offset = ACP6X_SRAM_PTE_OFFSET,
.hw_semaphore_offset = ACP6X_AXI2DAGB_SEM_0,
.fusion_dsp_offset = ACP6X_DSP_FUSION_RUNSTALL,
diff --git a/sound/soc/sof/amd/pci-rn.c b/sound/soc/sof/amd/pci-rn.c
index e08875bdfa8b..2b7c53470ce8 100644
--- a/sound/soc/sof/amd/pci-rn.c
+++ b/sound/soc/sof/amd/pci-rn.c
@@ -33,6 +33,8 @@ static const struct sof_amd_acp_desc renoir_chip_info = {
.pgfsm_base = ACP3X_PGFSM_BASE,
.ext_intr_stat = ACP3X_EXT_INTR_STAT,
.dsp_intr_base = ACP3X_DSP_SW_INTR_BASE,
+ .acp_error_stat = ACP3X_ERROR_STATUS,
+ .acp_sw0_i2s_err_reason = ACP3X_SW_I2S_ERROR_REASON,
.sram_pte_offset = ACP3X_SRAM_PTE_OFFSET,
.hw_semaphore_offset = ACP3X_AXI2DAGB_SEM_0,
.acp_clkmux_sel = ACP3X_CLKMUX_SEL,
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence
2024-08-12 11:05 [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Vijendar Mukunda
2024-08-12 11:05 ` [PATCH 2/2] ASoC: SOF: amd: Fix for incorrect acp error register offsets Vijendar Mukunda
@ 2024-08-13 8:15 ` Markus Elfring
2024-08-13 8:31 ` Mukunda,Vijendar
2024-08-13 14:52 ` Mark Brown
2 siblings, 1 reply; 5+ messages in thread
From: Markus Elfring @ 2024-08-13 8:15 UTC (permalink / raw)
To: Vijendar Mukunda, linux-sound, alsa-devel, sound-open-firmware,
Mark Brown, Pierre-Louis Bossart, Ranjani Sridharan
Cc: LKML, Ajit Kumar Pandey, Bard Liao, Basavaraj Hiregoudar,
Cristian Ciocaltea, Daniel Baluta, Jaroslav Kysela, Kai Vehmanen,
Sunil-kumar Dommati, Liam Girdwood, Peter Ujfalusi, Takashi Iwai,
Venkata Prasad Potturu
…
> before triggering SHA dma. This ensures that IRAM size will programmed
> correctly before initiaing SHA dma.
Please improve such a change description with an imperative wording.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.11-rc2#n94
Please avoid typos accordingly.
Regards,
Markus
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence
2024-08-13 8:15 ` [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Markus Elfring
@ 2024-08-13 8:31 ` Mukunda,Vijendar
0 siblings, 0 replies; 5+ messages in thread
From: Mukunda,Vijendar @ 2024-08-13 8:31 UTC (permalink / raw)
To: Markus Elfring, linux-sound, alsa-devel, sound-open-firmware,
Mark Brown, Pierre-Louis Bossart, Ranjani Sridharan
Cc: LKML, Ajit Kumar Pandey, Bard Liao, Basavaraj Hiregoudar,
Cristian Ciocaltea, Daniel Baluta, Jaroslav Kysela, Kai Vehmanen,
Sunil-kumar Dommati, Liam Girdwood, Peter Ujfalusi, Takashi Iwai,
Venkata Prasad Potturu
On 13/08/24 13:45, Markus Elfring wrote:
> …
>> before triggering SHA dma. This ensures that IRAM size will programmed
>> correctly before initiaing SHA dma.
> Please improve such a change description with an imperative wording.
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.11-rc2#n94
>
> Please avoid typos accordingly.
Will rephrase the commit message.
>
> Regards,
> Markus
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence
2024-08-12 11:05 [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Vijendar Mukunda
2024-08-12 11:05 ` [PATCH 2/2] ASoC: SOF: amd: Fix for incorrect acp error register offsets Vijendar Mukunda
2024-08-13 8:15 ` [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Markus Elfring
@ 2024-08-13 14:52 ` Mark Brown
2 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2024-08-13 14:52 UTC (permalink / raw)
To: Vijendar Mukunda
Cc: alsa-devel, Sunil-kumar.Dommati, Basavaraj.Hiregoudar,
venkataprasad.potturu, pierre-louis.bossart, lgirdwood,
yung-chuan.liao, peter.ujfalusi, ranjani.sridharan, perex, tiwai,
cristian.ciocaltea, sound-open-firmware, linux-sound,
linux-kernel, kai.vehmanen, Daniel Baluta
On Mon, 12 Aug 2024 16:35:09 +0530, Vijendar Mukunda wrote:
> As per design, ACP iram-dram fence register sequence should be initiated
> before triggering SHA dma. This ensures that IRAM size will programmed
> correctly before initiaing SHA dma.
>
>
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence
commit: c56ba3e44784527fd6efe5eb7a4fa6c9f6969a58
[2/2] ASoC: SOF: amd: Fix for incorrect acp error register offsets
commit: 897e91e995b338002b00454fd0018af26a098148
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] 5+ messages in thread
end of thread, other threads:[~2024-08-13 14:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-12 11:05 [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Vijendar Mukunda
2024-08-12 11:05 ` [PATCH 2/2] ASoC: SOF: amd: Fix for incorrect acp error register offsets Vijendar Mukunda
2024-08-13 8:15 ` [PATCH 1/2] ASoC: SOF: amd: move iram-dram fence register programming sequence Markus Elfring
2024-08-13 8:31 ` Mukunda,Vijendar
2024-08-13 14:52 ` 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®