@@ -933,6 +933,9 @@ 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},
+ {"Headphone Channel Switch", 9, CTL_PLAYBACK_SWITCH},
+ {"HP Channel Switch", 2, CTL_PLAYBACK_SWITCH},
+ {"Speaker Channel Switch", 7, CTL_PLAYBACK_SWITCH},
/* Capture Volume/Switch controls without a " Capture ..." suffix */
{"ADC Boost Gain", 14, CTL_CAPTURE_VOLUME},
{"IN1 Boost", 9, CTL_CAPTURE_VOLUME},
The following ASoC codec drivers: sound/soc/codecs/rt5640.c sound/soc/codecs/rt5645.c Use the following troublesome playback-switch-control names: "Headphone Channel Switch" "HP Channel Switch" "Speaker Channel Switch" There are 2 problems with these names: 1. They are the mute controls for the matching: "Headphone Playback Volume" "HP Playback Volume" "Speaker Playback Volume" controls, to be properly paired, which is necessary for HW volume-control support, the simple mixer code needs to recognize that the base-name for these is e.g. "Headphone" not "Headphone Channel". 2. They are playback-switches, yet they get recognized as global-switches. Add these to the exceptions table so that they get the proper basename and type set. Note we can NOT fix this by adding " Channel Switch" as a suffix to the suffixes table, because the line-out output on these codecs has the following controls: "OUT Playback Switch" "OUT Channel Switch" "OUT Playback Volume" Where the 2 switches describe mutes in 2 different places in the graph. So if we were to add a " Channel Switch" suffix map to CTL_PLAYBACK_SWITCH then we would get 2 CTL_PLAYBACK_SWITCH controls for the "OUT" mixer element, which is not allowed. Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- src/mixer/simple_none.c | 3 +++ 1 file changed, 3 insertions(+)