Thread (7 messages) flat view 7 messages, 3 authors, 2025-09-26

Re: [PATCH] ASoC: stm32: sai: manage context in set_sysclk callback

From: Olivier MOYSAN <olivier.moysan@foss.st.com>
Date: 2025-09-24 09:49:40
Also in: linux-sound, lkml

Hi Kuninori,

On 9/18/25 03:34, Kuninori Morimoto wrote:
Hi Olivier

Thank you for clarify the situation
quoted
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.
(snip)
quoted
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.
Ah.. simple-card-utils calls snd_soc_dai_set_sysclk() from 3 functions

	- simple_init_dai()
	- simple_util_hw_params()
	- simple_util_shutdown()

but its "direction" is...

Step0:
	Before
	a728f56094e7cf60a1dc0642fe86901d1a4dfb4e
	 ("ASoC: make clock direction configurable in asoc-simple")

	- simple_init_dai()		fixed: 0
	- simple_util_hw_params()	fixed: SND_SOC_CLOCK_xx
	- simple_util_shutdown()	fixed: SND_SOC_CLOCK_xx

Step1:
	After
	a728f56094e7cf60a1dc0642fe86901d1a4dfb4e
	 ("ASoC: make clock direction configurable in asoc-simple")

	and before

	5725bce709db1c001140d79398581e067e28c031
	("ASoC: simple-card-utils: Unify clock direction by clk_direction")


	- simple_init_dai()		dai->clk_direction
	- simple_util_hw_params()	fixed: SND_SOC_CLOCK_xx
	- simple_util_shutdown()	fixed: SND_SOC_CLOCK_xx

Step2:
	After
	5725bce709db1c001140d79398581e067e28c031
	("ASoC: simple-card-utils: Unify clock direction by clk_direction")

	- simple_init_dai()		dai->clk_direction
	- simple_util_hw_params()	dai->clk_direction
	- simple_util_shutdown()	dai->clk_direction

In Step0 and Step1, your dirver is called with both dir IN/OUT ?
Yes, based on the trace, this appears to be the case.
quoted
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.
OK

Or maybe reset simple_dai->sysclk somehow (not sure...) ?
(simple_init_dai() will call snd_soc_dai_set_sysclk() if it has
simple_dai->sysclk)
Yes, resetting simple_dai->sysclk may also be an option, but I could not 
find a way to do it in practice. Requesting a reset of 
simple_dai->sysclk from the CPU DAI .probe callback might be the right 
time I think, but there is no service that allows this.
Another way would be to set "system-clock-frequency = <0>" in the CPU DT 
node. However, this is not possible, as it conflicts with the following 
check in the simple_set_clk_rate() function:
if (simple_dai->clk_fixed && rate != simple_dai->sysclk) {
    dev_err(...)
}

So, the current patch still seems like the better option to me.

Best regards
Olivier
Thank you for your help !!

Best regards
---
Kuninori Morimoto
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help