On Mon, Dec 02, 2013 at 12:19:16PM +0000, Mark Brown wrote:
On Mon, Dec 02, 2013 at 11:05:31AM +0100, Takashi Iwai wrote:
Nicolin Chen wrote:
The snd_soc_dai_digital_mute() here will be never executed because we only decrease codec->active in snd_soc_close(). Thus correct it.
A couple of minor problems by this approach:
- snd_soc_dai_digital_mute() will be called twice in the normal PCM close path.
Right, it's called in close() so it's redundant to call it here most of the time. On the other hand it will at least get called slightly sooner which is good and in the case of reconfiguration we'll mute while doing that - doing the mute earlier is better.
- In full duplex mode where both playback/capture streams share the same codec, one of the directions won't be handled correctly because codec->active is incremented/decremented twice (once for each direction).
Indeed, the check needs to be on playback_active or capture_active rather than on the overall DAI.
Sir, thank you for the hint. I will reconsider about the modification.
And also thank Iwai-san for pointing out the flaws in my patch.
Best regards, Nicolin Chen