Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=baba8ee9d12d17cac1042a5c816aef7d6610a6c3
Commit:     baba8ee9d12d17cac1042a5c816aef7d6610a6c3
Parent:     d258e24a39a75834f25c39f90a3a429978e9b896
Author:     Takashi Iwai <[EMAIL PROTECTED]>
AuthorDate: Mon Apr 23 17:17:48 2007 +0200
Committer:  Jaroslav Kysela <[EMAIL PROTECTED]>
CommitDate: Fri May 11 16:56:09 2007 +0200

    [ALSA] hda-codec - Fix output pin types in auto configuration
    
    Use PIN_HP output type for HP pin widgets accordingly, instead of
    always applying PIN_OUT.
    
    Signed-off-by: Takashi Iwai <[EMAIL PROTECTED]>
    Signed-off-by: Jaroslav Kysela <[EMAIL PROTECTED]>
---
 sound/pci/hda/patch_realtek.c |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 61dffb8..6cace82 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3095,6 +3095,14 @@ static void alc880_auto_set_output_and_unmute(struct 
hda_codec *codec,
        }
 }
 
+static int get_pin_type(int line_out_type)
+{
+       if (line_out_type == AUTO_PIN_HP_OUT)
+               return PIN_HP;
+       else
+               return PIN_OUT;
+}
+
 static void alc880_auto_init_multi_out(struct hda_codec *codec)
 {
        struct alc_spec *spec = codec->spec;
@@ -3103,7 +3111,8 @@ static void alc880_auto_init_multi_out(struct hda_codec 
*codec)
        alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
        for (i = 0; i < spec->autocfg.line_outs; i++) {
                hda_nid_t nid = spec->autocfg.line_out_pins[i];
-               alc880_auto_set_output_and_unmute(codec, nid, PIN_OUT, i);
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
+               alc880_auto_set_output_and_unmute(codec, nid, pin_type, i);
        }
 }
 
@@ -4292,8 +4301,10 @@ static void alc260_auto_init_multi_out(struct hda_codec 
*codec)
 
        alc_subsystem_id(codec, 0x10, 0x15, 0x0f);
        nid = spec->autocfg.line_out_pins[0];
-       if (nid)
-               alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
+       if (nid) {
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
+               alc260_auto_set_output_and_unmute(codec, nid, pin_type, 0);
+       }
        
        nid = spec->autocfg.speaker_pins[0];
        if (nid)
@@ -4301,7 +4312,7 @@ static void alc260_auto_init_multi_out(struct hda_codec 
*codec)
 
        nid = spec->autocfg.hp_pins[0];
        if (nid)
-               alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
+               alc260_auto_set_output_and_unmute(codec, nid, PIN_HP, 0);
 }
 
 #define ALC260_PIN_CD_NID              0x16
@@ -5164,8 +5175,9 @@ static void alc882_auto_init_multi_out(struct hda_codec 
*codec)
        alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
        for (i = 0; i <= HDA_SIDE; i++) {
                hda_nid_t nid = spec->autocfg.line_out_pins[i];
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
                if (nid)
-                       alc882_auto_set_output_and_unmute(codec, nid, PIN_OUT,
+                       alc882_auto_set_output_and_unmute(codec, nid, pin_type,
                                                          i);
        }
 }
@@ -6185,8 +6197,9 @@ static void alc883_auto_init_multi_out(struct hda_codec 
*codec)
        alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
        for (i = 0; i <= HDA_SIDE; i++) {
                hda_nid_t nid = spec->autocfg.line_out_pins[i];
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
                if (nid)
-                       alc883_auto_set_output_and_unmute(codec, nid, PIN_OUT,
+                       alc883_auto_set_output_and_unmute(codec, nid, pin_type,
                                                          i);
        }
 }
@@ -8182,8 +8195,9 @@ static void alc861_auto_init_multi_out(struct hda_codec 
*codec)
        alc_subsystem_id(codec, 0x0e, 0x0f, 0x0b);
        for (i = 0; i < spec->autocfg.line_outs; i++) {
                hda_nid_t nid = spec->autocfg.line_out_pins[i];
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
                if (nid)
-                       alc861_auto_set_output_and_unmute(codec, nid, PIN_OUT,
+                       alc861_auto_set_output_and_unmute(codec, nid, pin_type,
                                                          
spec->multiout.dac_nids[i]);
        }
 }
@@ -8892,9 +8906,10 @@ static void alc861vd_auto_init_multi_out(struct 
hda_codec *codec)
        alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
        for (i = 0; i <= HDA_SIDE; i++) {
                hda_nid_t nid = spec->autocfg.line_out_pins[i];
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
                if (nid)
                        alc861vd_auto_set_output_and_unmute(codec, nid,
-                                                               PIN_OUT, i);
+                                                           pin_type, i);
        }
 }
 
@@ -9867,8 +9882,9 @@ static void alc662_auto_init_multi_out(struct hda_codec 
*codec)
 
        for (i = 0; i <= HDA_SIDE; i++) {
                hda_nid_t nid = spec->autocfg.line_out_pins[i];
+               int pin_type = get_pin_type(spec->autocfg.line_out_type);
                if (nid)
-                       alc662_auto_set_output_and_unmute(codec, nid, PIN_OUT,
+                       alc662_auto_set_output_and_unmute(codec, nid, pin_type,
                                                          i);
        }
 }
-
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