The following ASoC codec drivers:
sound/soc/codecs/rt5640.c sound/soc/codecs/rt5645.c sound/soc/codecs/rt5651.c sound/soc/codecs/rt5677.c
Use capture-volume-control names like: "IN1 Boost", note the missing " Volume" suffix. This causes the mixer code to not identify these as volume-controls, which causes some of the dB related sm_elem_ops to return -EINVAL.
This in turn causes alsamixer to not show dB info and causes UCM profile HW volume control support in pulseaudio to not work properly due to the lacking dB scale info.
This cannot be fixed on the kernel side because the non " Volume" suffixed names are used in UCM profiles currently shipping in alsa-ucm-conf.
Add these to the exceptions table, so that these correctly get identified as CTL_CAPTURE_VOLUME controls.
Signed-off-by: Hans de Goede hdegoede@redhat.com --- src/mixer/simple_none.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/src/mixer/simple_none.c b/src/mixer/simple_none.c index b29554cb..8f964959 100644 --- a/src/mixer/simple_none.c +++ b/src/mixer/simple_none.c @@ -926,6 +926,11 @@ static const struct excep { {"3D Control - Depth", 18, CTL_PLAYBACK_VOLUME}, {"3D Control Sigmatel - Depth", 27, CTL_PLAYBACK_VOLUME}, {"3D Control Sigmatel - Rear Depth", 32, CTL_PLAYBACK_VOLUME}, + /* Capture Volume/Switch controls without a " Capture ..." suffix */ + {"ADC Boost Gain", 14, CTL_CAPTURE_VOLUME}, + {"IN1 Boost", 9, CTL_CAPTURE_VOLUME}, + {"IN2 Boost", 9, CTL_CAPTURE_VOLUME}, + {"IN3 Boost", 9, CTL_CAPTURE_VOLUME}, {NULL,} }; #endif