Re: [PATCH] ASoC: stm32: sai: manage context in set_sysclk callback
From: Olivier MOYSAN <olivier.moysan@foss.st.com>
Date: 2025-09-17 14:21:26
Also in:
linux-sound, lkml
Hi Kuninori, On 9/17/25 02:32, Kuninori Morimoto wrote:
Hi Olivier Thank you for your feedbackquoted
Here is feedback regarding commit 5725bce709db1c001140d79398581e067e28c031 ASoC: simple-card-utils: Unify clock direction by clk_direction(snip)quoted
To accommodate the change introduced by this commit, I added the property "system-clock-direction-out" in the SAI device tree node.(snip)quoted
* Before the change: - Initialization: simple_init_dai() -> set_sysclk(id=0, freq=sai_ck freq, dir=out) Calls clk_set_rate_exclusive() simple_util_shutdown() -> set_sysclk(id=0, freq=0, dir=out) Calls clk_rate_exclusive_put() (releases the mclk clock)Here, about "Before the change". Does this "change" mean "before adding system-clock-direction-out" or "before commit 5725bce709db1..." ?
Oh yes, I mean both in fact. Namely, before having the commit and the system-clock-direction-out property. Typically, I tested on a v6.10 and on a v6.17 (or later) where I noticed a change in the SAI driver behavior.
quoted
* After the change: - Initialization: simple_init_dai() -> set_sysclk(id=0, freq=sai_ck freq, dir=out) Calls clk_set_rate_exclusive() simple_util_shutdown() -> set_sysclk(id=0, freq=0, dir=in) clk_rate_exclusive_put() NOT called (mclk clock is not released)Hmm... If it was latest kernel, and if you added "system-clock-direction-out" in DT, dir should be "out" in my understanding. dir=in means it doesn't have "system-clock-direction-out". And, dir will not be changed (out/in) in init / shutdown. Are these same DAI ? Both "struct snd_soc_dai" and "struct simple_util_dai" have "*name". Could you please double-check it ?
I did supplementary checks, keeping only one DAI and adding additional traces. It seems I reached a wrong conclusion regarding the cause of unbalanced calls. Sorry for the confusion. Looking at the traces (see below), initially, we had one call with the 'in' direction (kernel clock frequency) and one call with the 'out' direction. Now, both calls have the 'out' direction when the property 'system-clock-direction-out' is set. This seems more consistent with the changes from commit 5725bce709db1. In my setup, the kernel clock is an input clock. Maybe it should be tagged as an input clock. However, we have no 'system-clock-direction-in' property yet. Anyway, the patch in the STM32 SAI driver is still valid. v6.10 simple_init_dai - dai: 0x110b6418, dai name: cs42l51-hifi, simple_init_dai - dai: 0x6204899f, dai name: 4400b004.audio-controller, stm32_sai_set_sysclk - dai: 0x6204899f, dai name: 4400b004.audio-controller, id: 0, freq: 29700000, dir: 0 stm32_sai_set_sysclk - dai: 0x6204899f, dai name: 4400b004.audio-controller, id: 0, freq: 12288000, dir: 1 stm32_sai_set_sysclk - dai: 0x6204899f, [set_rate] current freq: 0, request freq: 12288000 simple_util_shutdown - dai: 0x6204899f, dai name: 4400b004.audio-controller, dir: 0 stm32_sai_set_sysclk - dai: 0x6204899f, dai name: 4400b004.audio-controller, id: 0, freq: 0, dir: 1 stm32_sai_set_sysclk - dai: 0x6204899f, [put_rate] v6.17 simple_init_dai - dai: 0xbca889eb, dai name: cs42l51-hifi, simple_init_dai - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, stm32_sai_set_sysclk - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, id: 0, freq: 29700000, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, [set_rate] current freq: 0, request freq: 29700000 stm32_sai_set_sysclk - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, id: 0, freq: 12288000, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, [set_rate] current freq: 24573875, request freq: 12288000 stm32_sai_set_sysclk - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, id: 0, freq: 12288000, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, [set_rate] current freq: 24573875, request freq: 12288000 stm32_sai_set_sysclk - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, id: 0, freq: 12288000, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, [set_rate] current freq: 24573875, request freq: 12288000 stm32_sai_set_sysclk - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, id: 0, freq: 12288000, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, [set_rate] current freq: 24573875, request freq: 12288000 simple_util_shutdown - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, dai name: 4400b004.audio-controller, id: 0, freq: 0, dir: 1 stm32_sai_set_sysclk - dai: 0x4c0382ed, [put_rate] I hope this can be helpful. Thanks and Best regards Olivier
Thank you for your help !! Best regards --- Kuninori Morimoto