]> err.no Git - linux-2.6/commitdiff
[ALSA] Misc fixes for Realtek HD-audio codecs
authorTakashi Iwai <tiwai@suse.de>
Fri, 28 Jul 2006 12:42:36 +0000 (14:42 +0200)
committerJaroslav Kysela <perex@suse.cz>
Sat, 23 Sep 2006 08:39:22 +0000 (10:39 +0200)
- Added model=arima for Arima W820Di1 with ALC882 codec chip
- Added EAPD-control verbs to TCL S700 init verbs
- Added missing model strings for Realtek codecs (to be specified
  via module option explicitly for testing/debugging)

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Documentation/sound/alsa/ALSA-Configuration.txt
sound/pci/hda/patch_realtek.c

index 7344815b855e0da07a0c45b32c8d220e2840c701..d0dbc3fb20c2fa3869eb13a365b97ea322ce5fd8 100644 (file)
@@ -778,11 +778,15 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
          6stack-digout 6-jack with a SPDIF out
          w810          3-jack
          z71v          3-jack (HP shared SPDIF)
-         asus          3-jack
+         asus          3-jack (ASUS Mobo)
+         asus-w1v      ASUS W1V
+         asus-dig      ASUS with SPDIF out
+         asus-dig2     ASUS with SPDIF out (using GPIO2)
          uniwill       3-jack
          F1734         2-jack
          lg            LG laptop (m1 express dual)
          lg-lw         LG LW20 laptop
+         tcl           TCL S700
          clevo         Clevo laptops (m520G, m665n)
          test          for testing/debugging purpose, almost all controls can be
                        adjusted.  Appearing only when compiled with
@@ -791,6 +795,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
 
        ALC260
          hp            HP machines
+         hp-3013       HP machines (3013-variant)
          fujitsu       Fujitsu S7020
          acer          Acer TravelMate
          basic         fixed pin assignment (old default model)
@@ -806,18 +811,22 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
        ALC882/885
          3stack-dig    3-jack with SPDIF I/O
          6stck-dig     6-jack digital with SPDIF I/O
+         arima         Arima W820Di1
          auto          auto-config reading BIOS (default)
 
        ALC883/888
          3stack-dig    3-jack with SPDIF I/O
          6stack-dig    6-jack digital with SPDIF I/O
-         6stack-dig-demo  6-stack digital for Intel demo board
+         3stack-6ch    3-jack 6-channel
+         3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
+         6stack-dig-demo  6-jack digital for Intel demo board
          auto          auto-config reading BIOS (default)
 
        ALC861/660
          3stack        3-jack
          3stack-dig    3-jack with SPDIF I/O
          6stack-dig    6-jack with SPDIF I/O
+         3stack-660    3-jack (for ALC660)
          auto          auto-config reading BIOS (default)
 
        CMI9880
index 42c4f90a92b83d176cedd8ff7ec5bd2300408383..378e5f111e348dc0cf1627242ae02c78a8bf6c0f 100644 (file)
@@ -98,6 +98,7 @@ enum {
 enum {
        ALC882_3ST_DIG,
        ALC882_6ST_DIG,
+       ALC882_ARIMA,
        ALC882_AUTO,
        ALC882_MODEL_LAST,
 };
@@ -1349,6 +1350,10 @@ static struct hda_verb alc880_pin_clevo_init_verbs[] = {
 };
 
 static struct hda_verb alc880_pin_tcl_S700_init_verbs[] = {
+       /* change to EAPD mode */
+       {0x20, AC_VERB_SET_COEF_INDEX, 0x07},
+       {0x20, AC_VERB_SET_PROC_COEF,  0x3060},
+
        /* Headphone output */
        {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
        /* Front output*/
@@ -2146,6 +2151,7 @@ static struct hda_board_config alc880_cfg_tbl[] = {
        { .pci_subvendor = 0x107b, .pci_subdevice = 0x4040, .config = ALC880_3ST },
        { .pci_subvendor = 0x107b, .pci_subdevice = 0x4041, .config = ALC880_3ST },
        /* TCL S700 */
+       { .modelname = "tcl", .config = ALC880_TCL_S700 },
        { .pci_subvendor = 0x19db, .pci_subdevice = 0x4188, .config = ALC880_TCL_S700 },
 
        /* Back 3 jack, front 2 jack (Internal add Aux-In) */
@@ -2232,8 +2238,11 @@ static struct hda_board_config alc880_cfg_tbl[] = {
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x1133, .config = ALC880_ASUS },
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x1123, .config = ALC880_ASUS_DIG },
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x1143, .config = ALC880_ASUS },
+       { .modelname = "asus-w1v", .config = ALC880_ASUS_W1V },
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x10b3, .config = ALC880_ASUS_W1V },
+       { .modelname = "asus-dig", .config = ALC880_ASUS_DIG },
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x8181, .config = ALC880_ASUS_DIG }, /* ASUS P4GPL-X */
+       { .modelname = "asus-dig2", .config = ALC880_ASUS_DIG2 },
        { .pci_subvendor = 0x1558, .pci_subdevice = 0x5401, .config = ALC880_ASUS_DIG2 },
 
        { .modelname = "uniwill", .config = ALC880_UNIWILL_DIG },
@@ -3906,6 +3915,7 @@ static struct hda_board_config alc260_cfg_tbl[] = {
        { .pci_subvendor = 0x152d, .pci_subdevice = 0x0729,
          .config = ALC260_BASIC }, /* CTL Travel Master U553W */
        { .modelname = "hp", .config = ALC260_HP },
+       { .modelname = "hp-3013", .config = ALC260_HP_3013 },
        { .pci_subvendor = 0x103c, .pci_subdevice = 0x3010, .config = ALC260_HP },
        { .pci_subvendor = 0x103c, .pci_subdevice = 0x3011, .config = ALC260_HP },
        { .pci_subvendor = 0x103c, .pci_subdevice = 0x3012, .config = ALC260_HP_3013 },
@@ -4272,6 +4282,13 @@ static struct hda_verb alc882_init_verbs[] = {
        { }
 };
 
+static struct hda_verb alc882_eapd_verbs[] = {
+       /* change to EAPD mode */
+       {0x20, AC_VERB_SET_COEF_INDEX, 0x07},
+       {0x20, AC_VERB_SET_PROC_COEF, 0x3060},
+       { } 
+};
+
 /*
  * generic initialization of ADC, input mixers and output mixers
  */
@@ -4403,6 +4420,9 @@ static struct hda_board_config alc882_cfg_tbl[] = {
          .config = ALC882_6ST_DIG }, /* Foxconn */
        { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668,
          .config = ALC882_6ST_DIG }, /* ECS to Intel*/
+       { .modelname = "arima", .config = ALC882_ARIMA },
+       { .pci_subvendor = 0x161f, .pci_subdevice = 0x2054,
+         .config = ALC882_ARIMA }, /* Arima W820Di1 */
        { .modelname = "auto", .config = ALC882_AUTO },
        {}
 };
@@ -4430,6 +4450,15 @@ static struct alc_config_preset alc882_presets[] = {
                .channel_mode = alc882_sixstack_modes,
                .input_mux = &alc882_capture_source,
        },
+       [ALC882_ARIMA] = {
+               .mixers = { alc882_base_mixer, alc882_chmode_mixer },
+               .init_verbs = { alc882_init_verbs, alc882_eapd_verbs },
+               .num_dacs = ARRAY_SIZE(alc882_dac_nids),
+               .dac_nids = alc882_dac_nids,
+               .num_channel_mode = ARRAY_SIZE(alc882_sixstack_modes),
+               .channel_mode = alc882_sixstack_modes,
+               .input_mux = &alc882_capture_source,
+       },
 };
 
 
@@ -5005,16 +5034,18 @@ static struct snd_kcontrol_new alc883_capture_mixer[] = {
  */
 static struct hda_board_config alc883_cfg_tbl[] = {
        { .modelname = "3stack-dig", .config = ALC883_3ST_2ch_DIG },
+       { .modelname = "3stack-6ch-dig", .config = ALC883_3ST_6ch_DIG },
+       { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668,
+         .config = ALC883_3ST_6ch_DIG }, /* ECS to Intel*/
+       { .modelname = "3stack-6ch", .config = ALC883_3ST_6ch },
+       { .pci_subvendor = 0x108e, .pci_subdevice = 0x534d,
+         .config = ALC883_3ST_6ch },
        { .modelname = "6stack-dig", .config = ALC883_6ST_DIG },
-       { .modelname = "6stack-dig-demo", .config = ALC888_DEMO_BOARD },
        { .pci_subvendor = 0x1462, .pci_subdevice = 0x6668,
          .config = ALC883_6ST_DIG }, /* MSI  */
        { .pci_subvendor = 0x105b, .pci_subdevice = 0x6668,
          .config = ALC883_6ST_DIG }, /* Foxconn */
-       { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668,
-         .config = ALC883_3ST_6ch_DIG }, /* ECS to Intel*/
-       { .pci_subvendor = 0x108e, .pci_subdevice = 0x534d,
-         .config = ALC883_3ST_6ch },
+       { .modelname = "6stack-dig-demo", .config = ALC888_DEMO_BOARD },
        { .modelname = "auto", .config = ALC883_AUTO },
        {}
 };
@@ -5223,8 +5254,10 @@ static int patch_alc883(struct hda_codec *codec)
        spec->stream_digital_playback = &alc883_pcm_digital_playback;
        spec->stream_digital_capture = &alc883_pcm_digital_capture;
 
-       spec->adc_nids = alc883_adc_nids;
-       spec->num_adc_nids = ARRAY_SIZE(alc883_adc_nids);
+       if (! spec->adc_nids && spec->input_mux) {
+               spec->adc_nids = alc883_adc_nids;
+               spec->num_adc_nids = ARRAY_SIZE(alc883_adc_nids);
+       }
 
        codec->patch_ops = alc_patch_ops;
        if (board_config == ALC883_AUTO)
@@ -6504,6 +6537,7 @@ static struct hda_board_config alc861_cfg_tbl[] = {
        { .modelname = "3stack", .config = ALC861_3ST },
        { .pci_subvendor = 0x8086, .pci_subdevice = 0xd600,
          .config = ALC861_3ST },
+       { .modelname = "3stack-660", .config = ALC660_3ST },
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x81e7,
          .config = ALC660_3ST },
        { .modelname = "3stack-dig", .config = ALC861_3ST_DIG },