Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: simple-card-utils: Unify clock direction by clk_direction

Original sample-card assumes SND_SOC_CLOCK_IN is used for
snd_soc_dai_set_sysclk(), but someday, Codec uses SND_SOC_CLOCK_IN
and CPU uses SND_SOC_CLOCK_OUT at hw_params(), and dai->clk_direction
is used at simple_init_dai().

There is no uniformity today. Let's use dai->clk_direction for all cases.

Fortunately, almost all DAI doesn't care about "dir"
(= SND_SOC_CLOCK_IN/OUT) in .set_sysclk callback function (which is called
in snd_soc_dai_set_sysclk()), so this patch has no effect in such DAIs.

But this patch might breaks some existing Sound Card. Use
"system-clock-direction-out" property if it needs to use SND_SOC_CLOCK_OUT

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/87y10lu0gx.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Kuninori Morimoto and committed by
Mark Brown
5725bce7 301c26a0

+6 -6
+6 -6
sound/soc/generic/simple-card-utils.c
··· 365 365 struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, i); 366 366 367 367 if (props->mclk_fs && !dai->clk_fixed && !snd_soc_dai_active(cpu_dai)) 368 - snd_soc_dai_set_sysclk(cpu_dai, 369 - 0, 0, SND_SOC_CLOCK_OUT); 368 + snd_soc_dai_set_sysclk(cpu_dai, 0, 0, dai->clk_direction); 370 369 371 370 simple_clk_disable(dai); 372 371 } ··· 373 374 struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, i); 374 375 375 376 if (props->mclk_fs && !dai->clk_fixed && !snd_soc_dai_active(codec_dai)) 376 - snd_soc_dai_set_sysclk(codec_dai, 377 - 0, 0, SND_SOC_CLOCK_IN); 377 + snd_soc_dai_set_sysclk(codec_dai, 0, 0, dai->clk_direction); 378 378 379 379 simple_clk_disable(dai); 380 380 } ··· 481 483 } 482 484 483 485 for_each_rtd_codec_dais(rtd, i, sdai) { 484 - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, SND_SOC_CLOCK_IN); 486 + pdai = simple_props_to_dai_codec(props, i); 487 + ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); 485 488 if (ret && ret != -ENOTSUPP) 486 489 return ret; 487 490 } 488 491 489 492 for_each_rtd_cpu_dais(rtd, i, sdai) { 490 - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, SND_SOC_CLOCK_OUT); 493 + pdai = simple_props_to_dai_cpu(props, i); 494 + ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); 491 495 if (ret && ret != -ENOTSUPP) 492 496 return ret; 493 497 }