On Fri, Jul 09, 2021 at 08:25:17PM +0000, Robert Hancock wrote:
On Fri, 2021-07-09 at 19:02 +0100, Mark Brown wrote:
Given that it knows the MCLK if set_sysclk() is used and it knows the sample rate it should just be able to calculate the ratio?
I see that snd_soc_component_driver has a set_sysclk callback as well, so that allows the formatter to handle setting the divider. However, right now with simple-audio-card that callback is not being invoked on the formatter, though it is on the I2S transmitter.
I'm thinking something needs to be added to asoc_simple_hw_params to call snd_soc_component_set_sysclk on the platform component(s) like it calls snd_soc_dai_set_sysclk for the codec DAI and CPU DAI.
Not sure exactly how that should be done though - we could use for_each_rtd_components to iterate through all of the components and call snd_soc_component_set_sysclk on all of them, though that would also potentially duplicate some settings already done by the snd_soc_dai_set_sysclk calls on the CPU and codec DAIs. I'm not sure if that really hurts anything though?
Yeah, I don't think that's likely to hurt anything - I'd be surprised if there were that many things that actually have set_sysclk() to even notice.