sound: oxygen: better defaults for upmixing control
authorClemens Ladisch <clemens@ladisch.de>
Mon, 28 Sep 2009 09:15:49 +0000 (11:15 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 28 Sep 2009 09:54:00 +0000 (11:54 +0200)
On card models with two-channel outputs, the base driver can
automatically disable the upmixing control so that the model
drivers do not need to do this.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/hifier.c
sound/pci/oxygen/oxygen_mixer.c
sound/pci/oxygen/xonar_pcm179x.c

index 84ef131..9026a14 100644 (file)
@@ -141,19 +141,11 @@ static void set_cs5340_params(struct oxygen *chip,
 
 static const DECLARE_TLV_DB_LINEAR(ak4396_db_scale, TLV_DB_GAIN_MUTE, 0);
 
 
 static const DECLARE_TLV_DB_LINEAR(ak4396_db_scale, TLV_DB_GAIN_MUTE, 0);
 
-static int hifier_control_filter(struct snd_kcontrol_new *template)
-{
-       if (!strcmp(template->name, "Stereo Upmixing"))
-               return 1; /* stereo only - we don't need upmixing */
-       return 0;
-}
-
 static const struct oxygen_model model_hifier = {
        .shortname = "C-Media CMI8787",
        .longname = "C-Media Oxygen HD Audio",
        .chip = "CMI8788",
        .init = hifier_init,
 static const struct oxygen_model model_hifier = {
        .shortname = "C-Media CMI8787",
        .longname = "C-Media Oxygen HD Audio",
        .chip = "CMI8788",
        .init = hifier_init,
-       .control_filter = hifier_control_filter,
        .cleanup = hifier_cleanup,
        .resume = hifier_resume,
        .set_dac_params = set_ak4396_params,
        .cleanup = hifier_cleanup,
        .resume = hifier_resume,
        .set_dac_params = set_ak4396_params,
index 5401c54..e8e911a 100644 (file)
@@ -954,6 +954,9 @@ static int add_controls(struct oxygen *chip,
                        if (err == 1)
                                continue;
                }
                        if (err == 1)
                                continue;
                }
+               if (!strcmp(template.name, "Stereo Upmixing") &&
+                   chip->model.dac_channels == 2)
+                       continue;
                if (!strcmp(template.name, "Master Playback Volume") &&
                    chip->model.dac_tlv) {
                        template.tlv.p = chip->model.dac_tlv;
                if (!strcmp(template.name, "Master Playback Volume") &&
                    chip->model.dac_tlv) {
                        template.tlv.p = chip->model.dac_tlv;
index 522efde..07aaa89 100644 (file)
@@ -605,8 +605,6 @@ static int xonar_st_control_filter(struct snd_kcontrol_new *template)
 {
        if (!strncmp(template->name, "CD Capture ", 11))
                return 1; /* no CD input */
 {
        if (!strncmp(template->name, "CD Capture ", 11))
                return 1; /* no CD input */
-       if (!strcmp(template->name, "Stereo Upmixing"))
-               return 1; /* stereo only - we don't need upmixing */
        return 0;
 }
 
        return 0;
 }