The following ASoC codec drivers: sound/soc/codecs/rt5659.c sound/soc/codecs/rt5660.c sound/soc/codecs/rt5665.c sound/soc/codecs/rt5668.c sound/soc/codecs/rt5670.c sound/soc/codecs/rt5682.c Use the following troublesome capture-volume-control names: "IN1 Boost Volume" "IN2 Boost Volume" "IN3 Boost Volume" "STO1 ADC Boost Gain Volume" "STO2 ADC Boost Gain Volume" "Mono ADC Boost Gain Volume" And sound/soc/codecs/es8316.c uses "ADC PGA Gain Volume". Note how these are suffixed with just " Volume" instead of "Capture Volume". Add these to the exceptions table, so that the type correctly gets set to CTL_CAPTURE_VOLUME instead of CTL_GLOBAL_VOLUME. This correctly makes snd_mixer_selem_has_capture_volume() return true for these (and makes snd_mixer_selem_has_common_volume() return false). Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> --- src/mixer/simple_none.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mixer/simple_none.c b/src/mixer/simple_none.c index 8f964959..de81966f 100644 --- a/src/mixer/simple_none.c +++ b/src/mixer/simple_none.c @@ -920,8 +920,15 @@ static const struct excep { */ {"Input Source", 12, CTL_CAPTURE_ROUTE}, /* Avoid these Capture Volume/Switch controls getting seen as GLOBAL VOL/SW */ + {"ADC PGA Gain Volume", 12, CTL_CAPTURE_VOLUME}, {"Capture Volume", 7, CTL_CAPTURE_VOLUME}, {"Capture Switch", 7, CTL_CAPTURE_SWITCH}, + {"IN1 Boost Volume", 9, CTL_CAPTURE_VOLUME}, + {"IN2 Boost Volume", 9, CTL_CAPTURE_VOLUME}, + {"IN3 Boost Volume", 9, CTL_CAPTURE_VOLUME}, + {"Mono ADC Boost Gain Volume", 19, CTL_CAPTURE_VOLUME}, + {"STO1 ADC Boost Gain Volume", 19, CTL_CAPTURE_VOLUME}, + {"STO2 ADC Boost Gain Volume", 19, CTL_CAPTURE_VOLUME}, /* Playback Volume/Switch controls without a " Playback ..." suffix */ {"3D Control - Depth", 18, CTL_PLAYBACK_VOLUME}, {"3D Control Sigmatel - Depth", 27, CTL_PLAYBACK_VOLUME}, -- 2.31.1