Add headphone gain and DAC filter controls, which use the same commands
as the AE-5. Also, change input source enumerated control item count to
exclude front microphone.

Signed-off-by: Connor McAdams <conmanx...@gmail.com>
---
 sound/pci/hda/patch_ca0132.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 8c6e38734489..52f6d3740e0a 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -5839,6 +5839,13 @@ static int ca0132_alt_input_source_put(struct 
snd_kcontrol *kcontrol,
        int sel = ucontrol->value.enumerated.item[0];
        unsigned int items = IN_SRC_NUM_OF_INPUTS;
 
+       /*
+        * The AE-7 has no front microphone, so limit items to 2: rear mic and
+        * line-in.
+        */
+       if (ca0132_quirk(spec) == QUIRK_AE7)
+               items = 2;
+
        if (sel >= items)
                return 0;
 
@@ -7029,20 +7036,25 @@ static int ca0132_build_controls(struct hda_codec 
*codec)
                }
        }
 
-       if (ca0132_quirk(spec) == QUIRK_AE5) {
+       switch (ca0132_quirk(spec)) {
+       case QUIRK_AE5:
+       case QUIRK_AE7:
                err = ae5_add_headphone_gain_enum(codec);
                if (err < 0)
                        return err;
                err = ae5_add_sound_filter_enum(codec);
                if (err < 0)
                        return err;
-       }
-
-       if (ca0132_quirk(spec) == QUIRK_ZXR) {
+               break;
+       case QUIRK_ZXR:
                err = zxr_add_headphone_gain_switch(codec);
                if (err < 0)
                        return err;
+               break;
+       default:
+               break;
        }
+
 #ifdef ENABLE_TUNING_CONTROLS
        add_tuning_ctls(codec);
 #endif
-- 
2.20.1

Reply via email to