On Fri, Feb 26, 2021 at 03:38:15PM +0100, Hans de Goede wrote:
When using AIF1 the 'DAC1 Playback Volume' control will be used as the PlaybackMasterElem in UCM.
We need a matching 'DAC1 Playback Switch' for 2 reasons:
- To be able to truely fully mute the output (the softest volume setting is not fully muted).
- For reliable output-mute LED control.
The path from the IF1_DAC data input to the 'Stereo DAC MIXL' / 'Stereo DAC MIXR' digital mixer has a 'DAC MIXL' / 'DAC MIXR' digital mixer with IF1_DAC data as one of its inputs direclty after the 'DAC1 Playback Volume' control.
This commit adds an emulated "DAC1 Playback Switch" control by:
This feels icky, it seems like if userspace needs to stitch together a stereo mute control that doesn't already exist in the hardware from existing mono controls then UCM ought to have support for figuring that out anyway or if we *must* bodge this in the kernel there should be some generic way of doing it rather than open coding in drivers.
It also makes the whole mute LED thing feel a lot messier even for existing systems than you seemed to be suggesting in the other thread. This device has two I2S interfaces, two DACs (only one of which seems to be affected by this control), and it appears that there's bypass path from the ADC to DAC1 which won't be muted by the newly added mute switch here so this reliable mute control won't be entirely reliable. There look to also be some analogue bypass paths, I didn't fully check. One could equally argue that a software defined mute control should be muting all the analogue outputs, it'd certainly seem more robust.