On Thu, Feb 10, 2011 at 09:40:37PM -0800, Stephen Warren wrote:
So, what's happening is that once the mic is removed, there's no active path in the whole codec, so everything gets shut down, including CLK_SYS. In turn, this means that mic detection doesn't work, so when the mic gets plugged back in, that event is not noticed, and nothing gets re-enabled.
If I am playing a stream at the same time as recording, that solves (hides) the problem, since the codec is active and CLK_SYS stays enabled.
I found that if I revert:
2c8be5a26e42cfc4906c4daa8a5a5c82610ddb3d ASoC: Dynamically manage CLK_SYS in WM8903
That also fixes the issue. I'm not entirely clear why though; perhaps there are simply missing entries in the route map for CLK_SYS to mic-related widgets?
There's a link from CLK_SYS to Mic Bias so if Mic Bias is enabled then CLK_SYS should be kept up too. However, it looks like the core DAPM logic is getting this wrong and the force enable is only applying to the immediate widget. In the case of a supply widget this is clearly the wrong thing to do. I'll send out a patch for this shortly.