linux-stable/sound
Hans de Goede 42121c2645
ASoC: rt5670: Add emulated 'DAC1 Playback Switch' control
For reliable output-mute LED control we need a "DAC1 Playback Switch"
control. The "DAC Playback volume" control is the only control in the
path from the DAC1 data input to the speaker output, so the UCM profile
for the speaker output will have its PlaybackMixerElem set to "DAC1".

But userspace (pulseaudio) will set the "DAC1 Playback Volume" control to
its softest setting (which is not fully muted) while still showing the
speaker as being enabled at a low volume in the UI.

If we were to set the SNDRV_CTL_ELEM_ACCESS_SPK_LED on the "DAC1 Playback
Volume" control, this would mean then what pressing KEY_VOLUMEDOWN the
speaker-mute LED (embedded in the volume-mute toggle key) would light
while the UI is still showing the speaker as being enabled at a low
volume, meaning that the UI and the LED are out of sync.

Only after an _extra_ KEY_VOLUMEDOWN press would the UI show the
speaker as being muted.

The path from DAC1 data input to the speaker output does have
a digital mixer with DAC1's data as one of its inputs direclty after
the "DAC1 Playback Volume" control.

This commit adds an emulated "DAC1 Playback Switch" control by:

1. Declaring the enable flag for that mixers DAC1 input as well as the
"DAC1 Playback Switch" control both as SND_SOC_NOPM controls.

2. Storing the settings of both controls as driver-private data

3. Only clearing the mute flag for the DAC1 input of that mixer if the
stored values indicate both controls are enabled.

This is a preparation patch for adding "audio-mute" LED trigger support.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210215142118.308516-5-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-03-10 12:48:35 +00:00
..
ac97 ALSA: ac97: Constify static struct attribute_group 2021-01-31 09:49:58 +01:00
aoa ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
arm ARM updates for 5.12-rc1: 2021-02-22 14:27:07 -08:00
atmel
core ASoC: Updates for v5.12 2021-02-17 21:16:27 +01:00
drivers ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
firewire ALSA: fireface: fix to parse sync status register of latter protocol 2021-02-08 15:58:36 +01:00
hda ALSA/ASoC/SOF/SoundWire: fix Kconfig issues 2021-03-02 18:30:07 +01:00
i2c ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
isa isa: Make the remove callback for isa drivers return void 2021-01-26 07:51:48 +01:00
mips ALSA: n64: Fix return value check in n64audio_probe() 2021-02-25 10:29:13 +01:00
oss ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
parisc
pci ALSA: hda/realtek: Apply dual codec quirks for MSI Godlike X570 board 2021-03-03 15:25:03 +01:00
pcmcia
ppc ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
sh
soc ASoC: rt5670: Add emulated 'DAC1 Playback Switch' control 2021-03-10 12:48:35 +00:00
sparc ALSA: sparc: dbri: fix repeated word 'the' 2020-10-17 09:58:35 +02:00
spi
synth
usb ALSA: usb-audio: Fix Pioneer DJM devices URB_CONTROL request direction to set samplerate 2021-03-01 15:44:53 +01:00
x86 ALSA: x86: Simplify with dma_set_mask_and_coherent() 2021-01-15 11:17:19 +01:00
xen ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
ac97_bus.c
Kconfig
last.c
Makefile
sound_core.c