Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d273809e2e512d0638d443dce408ac0342ab73cf
Commit:     d273809e2e512d0638d443dce408ac0342ab73cf
Parent:     0cb65f2262776e07c2b8ec1121738b97f8941dae
Author:     Takashi Iwai <[EMAIL PROTECTED]>
AuthorDate: Thu Aug 16 14:59:45 2007 +0200
Committer:  Jaroslav Kysela <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 15:59:03 2007 +0200

    [ALSA] hda-codec - Add ALC268 acer model
    
    Added model=acer for ALC268 codec support.
    The configuration is: headphone = 0x14, speaker = 0x15
    needs hp-jack auto-detection.  The same routine as alc262-fujitsu model
    is used.
    Also, added the auto-muting routine for ALC268 model=toshiba.
    
    Signed-off-by: Takashi Iwai <[EMAIL PROTECTED]>
    Signed-off-by: Jaroslav Kysela <[EMAIL PROTECTED]>
---
 Documentation/sound/alsa/ALSA-Configuration.txt |    1 +
 sound/pci/hda/patch_realtek.c                   |   76 ++++++++++++++++++++++-
 2 files changed, 76 insertions(+), 1 deletions(-)

diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt 
b/Documentation/sound/alsa/ALSA-Configuration.txt
index 7f14eb9..b42458f 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -833,6 +833,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This 
was removed.
        ALC268
          3stack        3-stack model
          toshiba       Toshiba A205
+         acer          Acer laptops
          auto          auto-config reading BIOS (default)
 
        ALC662
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index a6fcfbc..b47934f 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -103,6 +103,7 @@ enum {
 enum {
        ALC268_3ST,
        ALC268_TOSHIBA,
+       ALC268_ACER,
        ALC268_AUTO,
        ALC268_MODEL_LAST /* last tag */
 };
@@ -8234,6 +8235,58 @@ static struct hda_verb alc268_eapd_verbs[] = {
        { }
 };
 
+/* Toshiba specific */
+#define alc268_toshiba_automute        alc262_hippo_automute
+
+static struct hda_verb alc268_toshiba_verbs[] = {
+       {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
+       { } /* end */
+};
+
+/* Acer specific */
+#define alc268_acer_bind_master_vol    alc262_fujitsu_bind_master_vol
+#define alc268_acer_master_sw_put      alc262_fujitsu_master_sw_put
+#define alc268_acer_automute   alc262_fujitsu_automute
+
+static struct snd_kcontrol_new alc268_acer_mixer[] = {
+       /* output mixer control */
+       HDA_BIND_VOL("Master Playback Volume", &alc268_acer_bind_master_vol),
+       {
+               .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+               .name = "Master Playback Switch",
+               .info = snd_hda_mixer_amp_switch_info,
+               .get = snd_hda_mixer_amp_switch_get,
+               .put = alc268_acer_master_sw_put,
+               .private_value = HDA_COMPOSE_AMP_VAL(0x14, 3, 0, HDA_OUTPUT),
+       },
+       { }
+};
+
+static struct hda_verb alc268_acer_verbs[] = {
+       {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
+       {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
+
+       {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
+       { }
+};
+
+/* unsolicited event for HP jack sensing */
+static void alc268_toshiba_unsol_event(struct hda_codec *codec,
+                                      unsigned int res)
+{
+       if ((res >> 28) != ALC880_HP_EVENT)
+               return;
+       alc268_toshiba_automute(codec);
+}
+
+static void alc268_acer_unsol_event(struct hda_codec *codec,
+                                      unsigned int res)
+{
+       if ((res >> 28) != ALC880_HP_EVENT)
+               return;
+       alc268_acer_automute(codec, 1);
+}
+
 /*
  * generic initialization of ADC, input mixers and output mixers
  */
@@ -8619,12 +8672,15 @@ static void alc268_auto_init(struct hda_codec *codec)
 static const char *alc268_models[ALC268_MODEL_LAST] = {
        [ALC268_3ST]            = "3stack",
        [ALC268_TOSHIBA]        = "toshiba",
+       [ALC268_ACER]           = "acer",
        [ALC268_AUTO]           = "auto",
 };
 
 static struct snd_pci_quirk alc268_cfg_tbl[] = {
        SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST),
        SND_PCI_QUIRK(0x1179, 0xff10, "TOSHIBA A205", ALC268_TOSHIBA),
+       SND_PCI_QUIRK(0x103c, 0x30cc, "TOSHIBA", ALC268_TOSHIBA),
+       SND_PCI_QUIRK(0x1025, 0x0126, "Acer", ALC268_ACER),
        {}
 };
 
@@ -8644,7 +8700,8 @@ static struct alc_config_preset alc268_presets[] = {
        },
        [ALC268_TOSHIBA] = {
                .mixers = { alc268_base_mixer, alc268_capture_alt_mixer },
-               .init_verbs = { alc268_base_init_verbs, alc268_eapd_verbs },
+               .init_verbs = { alc268_base_init_verbs, alc268_eapd_verbs,
+                               alc268_toshiba_verbs },
                .num_dacs = ARRAY_SIZE(alc268_dac_nids),
                .dac_nids = alc268_dac_nids,
                .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt),
@@ -8653,6 +8710,23 @@ static struct alc_config_preset alc268_presets[] = {
                .num_channel_mode = ARRAY_SIZE(alc268_modes),
                .channel_mode = alc268_modes,
                .input_mux = &alc268_capture_source,
+               .input_mux = &alc268_capture_source,
+               .unsol_event = alc268_toshiba_unsol_event,
+               .init_hook = alc268_toshiba_automute,
+       },
+       [ALC268_ACER] = {
+               .mixers = { alc268_acer_mixer, alc268_capture_alt_mixer },
+               .init_verbs = { alc268_base_init_verbs, alc268_eapd_verbs,
+                               alc268_acer_verbs },
+               .num_dacs = ARRAY_SIZE(alc268_dac_nids),
+               .dac_nids = alc268_dac_nids,
+               .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt),
+               .adc_nids = alc268_adc_nids_alt,
+               .hp_nid = 0x02,
+               .num_channel_mode = ARRAY_SIZE(alc268_modes),
+               .channel_mode = alc268_modes,
+               .input_mux = &alc268_capture_source,
+               .unsol_event = alc268_acer_unsol_event,
        },
 };
 
-
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