On Monday 28 September 2009 14:17:36 ext Mark Brown wrote:
On Mon, Sep 28, 2009 at 12:38:08PM +0300, Peter Ujfalusi wrote:
Fixes the following scenario: if during active playback/capture the DAPM routes has been modified in a way, that there will be no complete route (for example muting the output) DAPM would set the codec into BIAS_STANDBY, which could disable the clocks from the codec (codec is master), which breaks the playback with error since the clocks are missing from the serial bus and no data is shifted out/in.
This is only helping because the clocks generation is controlled by the bias level configuration. That's not really the way things are supposed to work - I'd rather see a different fix that explicitly represents whatever the requirement is for controlling the clocks. Turning on the clocks based on the bais level will generally result in them being turned on too much which will waste power.
I suspect you want to use AIF widgets and make the PLL a supply for them and any other things that need the PLL, and we should make arrangements to ensure that the AIF widget is enabled whenever the interface is live and the CODEC is master.
I see. So there is no mechanism in place which would keep the serial interface up when there is an ongoing playback/capture regardless of the DAPM routing?
On the other hand it also make sense to set the codec bias level to ON state, when there is ongoing playback/capture. Or not, not sure about it.
I have solved the problem for now without this patch, right now the kernel version that I'm using is 2.6.31, so I don't have the AIF widget to play with...
Thanks, Péter