]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: amd: acp: move i2s clock generation sequence
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>
Mon, 17 Jun 2024 07:28:40 +0000 (12:58 +0530)
committerMark Brown <broonie@kernel.org>
Fri, 21 Jun 2024 12:18:08 +0000 (13:18 +0100)
I2S clock generation registers should be programmed before starting the I2S
dma when I2S controller is programmed as clock master. Move i2s clock
generation register programming sequence prior to i2s dma start.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://patch.msgid.link/20240617072844.871468-7-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/acp/acp-i2s.c

index 54985fd0eedeeff0868e0141afb65d93fbf0893d..97258b4cf89b0d9fd59b49eb9755a34e28d479fe 100644 (file)
@@ -369,12 +369,12 @@ static int acp_i2s_trigger(struct snd_pcm_substream *substream, int cmd, struct
                }
                writel(period_bytes, adata->acp_base + water_val);
                writel(buf_size, adata->acp_base + buf_reg);
+               if (rsrc->soc_mclk)
+                       acp_set_i2s_clk(adata, dai->driver->id);
                val = readl(adata->acp_base + reg_val);
                val = val | BIT(0);
                writel(val, adata->acp_base + reg_val);
                writel(1, adata->acp_base + ier_val);
-               if (rsrc->soc_mclk)
-                       acp_set_i2s_clk(adata, dai->driver->id);
                return 0;
        case SNDRV_PCM_TRIGGER_STOP:
        case SNDRV_PCM_TRIGGER_SUSPEND: