On 19/1/23 16:27, Pierre-Louis Bossart wrote:
You lost me here. Are you saying the soundwire bus clock is only known in the prepare stage?
hw_params() doesn't know the Soundwire bus clock so it can't do the check. We need to wait until we have both the sample rate and the chosen SWIRE_CLK.
Yes, makes sense. I forgot that all the stream management and bandwidth allocation takes place in the prepare stage at the dailink level, and the dai prepare happens after that. Thanks for the clarification.
Also, this isn't validating the params passed by the application. The application cannot pass us "bad" params that would cause pll_config to fail.
The only way the pll_config could fail is if the SoundWire core code chose a SWIRE_CLK that CS42L42 cannot support. This should never happen and if it does it means there's an error in the ACPI or the machine driver.