Unverified Commit 5b162f60 authored by Vijendar Mukunda's avatar Vijendar Mukunda Committed by Mark Brown
Browse files

ASoC: amd: acp: modify conditional check for programming i2s mclk



ACP provides different IO configurations(ACP PDM, I2S and SoundWire).
I2S mclk should be programmed only when I2S configuration is selected and
I2S controller is programmed as clock master.
Modify the conditional check for programming i2s mclk.

Signed-off-by: default avatarVijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://patch.msgid.link/20240617072844.871468-6-Vijendar.Mukunda@amd.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 50f16701
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -229,12 +229,13 @@ static int rembrandt_audio_probe(struct platform_device *pdev)
	adata->rsrc = &rsrc;
	adata->platform = REMBRANDT;
	adata->flag = chip->flag;
	adata->is_i2s_config = chip->is_i2s_config;
	adata->machines = snd_soc_acpi_amd_rmb_acp_machines;
	acp_machine_select(adata);

	dev_set_drvdata(dev, adata);

	if (chip->flag != FLAG_AMD_LEGACY_ONLY_DMIC) {
	if (chip->is_i2s_config && rsrc.soc_mclk) {
		ret = acp6x_master_clock_generate(dev);
		if (ret)
			return ret;
@@ -267,7 +268,7 @@ static int __maybe_unused rmb_pcm_resume(struct device *dev)
	snd_pcm_uframes_t buf_in_frames;
	u64 buf_size;

	if (adata->flag != FLAG_AMD_LEGACY_ONLY_DMIC)
	if (adata->is_i2s_config && adata->rsrc->soc_mclk)
		acp6x_master_clock_generate(dev);

	spin_lock(&adata->acp_lock);
+3 −2
Original line number Diff line number Diff line
@@ -239,11 +239,12 @@ static int acp63_audio_probe(struct platform_device *pdev)
	adata->rsrc = &rsrc;
	adata->platform = ACP63;
	adata->flag = chip->flag;
	adata->is_i2s_config = chip->is_i2s_config;
	adata->machines = snd_soc_acpi_amd_acp63_acp_machines;
	acp_machine_select(adata);
	dev_set_drvdata(dev, adata);

	if (chip->flag != FLAG_AMD_LEGACY_ONLY_DMIC) {
	if (chip->is_i2s_config && rsrc.soc_mclk) {
		ret = acp63_i2s_master_clock_generate(adata);
		if (ret)
			return ret;
@@ -276,7 +277,7 @@ static int __maybe_unused acp63_pcm_resume(struct device *dev)
	snd_pcm_uframes_t buf_in_frames;
	u64 buf_size;

	if (adata->flag != FLAG_AMD_LEGACY_ONLY_DMIC)
	if (adata->is_i2s_config && adata->rsrc->soc_mclk)
		acp63_i2s_master_clock_generate(adata);

	spin_lock(&adata->acp_lock);
+1 −0
Original line number Diff line number Diff line
@@ -173,6 +173,7 @@ struct acp_dev_data {
	unsigned int i2s_irq;

	bool tdm_mode;
	bool is_i2s_config;
	/* SOC specific dais */
	struct snd_soc_dai_driver *dai_driver;
	int num_dai;