Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cace16f174d971a80f81e68ed04f1124a50dd800
Commit:     cace16f174d971a80f81e68ed04f1124a50dd800
Parent:     493b4acb9ed3193b19d45d62e0e5740d20f47adc
Author:     Matthew Ranostay <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 30 14:58:38 2008 +0100
Committer:  Mercurial server <[EMAIL PROTECTED]>
CommitDate: Thu Jan 31 17:33:37 2008 +0100

    [ALSA] hda: fix Mic in as output
    
    Some laptop has an internal analog microphone that is 'fixed'.
    This patch prevents creating a 'Mic In as Output' switch for
    ports that can't be outputs.
    
    Signed-off-by: Matthew Ranostay <[EMAIL PROTECTED]>
    Signed-off-by: Takashi Iwai <[EMAIL PROTECTED]>
    Signed-off-by: Jaroslav Kysela <[EMAIL PROTECTED]>
---
 sound/pci/hda/patch_sigmatel.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 7c8cd59..caf48ed 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -2283,15 +2283,23 @@ static int stac92xx_auto_create_multi_out_ctls(struct 
hda_codec *codec,
        }
 
        if (spec->mic_switch) {
+               unsigned int def_conf;
                nid = cfg->input_pins[AUTO_PIN_MIC];
-               pincap = snd_hda_param_read(codec, nid,
-                                               AC_PAR_PIN_CAP);
-               if (pincap & AC_PINCAP_OUT) {
-                       err = stac92xx_add_control(spec,
-                               STAC_CTL_WIDGET_IO_SWITCH,
-                               "Mic as Output Switch", (nid << 8) | 1);
-                       if (err < 0)
-                               return err;
+               def_conf = snd_hda_codec_read(codec, nid, 0,
+                                               AC_VERB_GET_CONFIG_DEFAULT, 0);
+
+               /* some laptops have an internal analog microphone
+                * which can't be used as a output */
+               if (get_defcfg_connect(def_conf) != AC_JACK_PORT_FIXED) {
+                       pincap = snd_hda_param_read(codec, nid,
+                                                       AC_PAR_PIN_CAP);
+                       if (pincap & AC_PINCAP_OUT) {
+                               err = stac92xx_add_control(spec,
+                                       STAC_CTL_WIDGET_IO_SWITCH,
+                                       "Mic as Output Switch", (nid << 8) | 1);
+                               if (err < 0)
+                                       return err;
+                       }
                }
        }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to