On 11/15/2018 12:06 AM, Mark Brown wrote:
Switching between clocks while the device isn't completely idle is unlikely to work well with any device - I'd have questions about a use case that's doing that.
The clocks are switched inside the hw_params callback of the machine driver, when the sampling rate changes from a multiple of 48kHz to a multiple of 44.1kHz and vice versa, usually after opening the device and before starting playback. That has to be so, as far as I can see.
If by idle you mean, not playing, then the device is idle during the switch. If by idle you mean biased off, then it depends on circumstance. For instance if playback at 44.1kHz is stopped and quickly restarted at 48kHz, as often happens, the device won't have had the chance to sit long enough to be biased off (and even if it has, I'm not entirely sure whether it won't be biased on before the hw_params callback). The pop may still be avoided if auto-mute is used, but that's not always the case. My proposed fix on the other hand consistently avoids generating the pop and does not rely on muting. I'm just not sure how to best implement it.