[alsa-devel] [PATCH 2/2 resend] ASoC: cs4271: preserve "Master Playback Switch" setting

Daniel Mack zonque at gmail.com
Fri Mar 22 11:23:32 CET 2013

Hi Mark,

On 22.03.2013 11:18, Mark Brown wrote:
> On Thu, Mar 21, 2013 at 08:43:55PM +0100, Daniel Mack wrote:
>> Currently, both the ALSA control for "Digital Master Playback Switch"
>> and the ALSA core (by calling dai_ops->mute_stream()) control the same
>> bits in the CS4271_VOL[AB]_MUTE registers.
>> That's a problem for applications which intentionally want to keep the
>> flag switched off from userspace, even though the stream is already
>> playing.
>> Fix this by keeping track of the states on both sides - the ALSA
>> control and the ASoC core - and actually mute the Codec if either one
>> of the two flags is set.
> The usual fix for this is to just not have the mute operation if it's
> important.  Otherwise this seems like something we ought to implement in
> the core, it's not a silly feature by any stretch of the imagination but
> it applies to any device with a DAI mute unless there's some device
> specific thing I'm missing here.

Well, the thing is about different use cases. If you leave everything
untouched as of the ALSA controls (unmuted), the codec will enter its
mute state just as expected by the core. The register bit also has
implications to external mute stages btw, which board designers usually
implement with MOSFETs.

It's just that if the user intentionally mutes the stream via the ALSA
control, the core will override it, thus changing the state of the
actual control unexpectedly.

So I'd say having a simple OR logic in this case is reasonable and
serves all the needs I can think of, no?


More information about the Alsa-devel mailing list