[PATCH] [UBUNTU:sound/pci/{emu10k1, hda}/] Add support for various newer HDA and Audigy 2 ZS models
crimsun at fungus.sh.nu
crimsun at fungus.sh.nu
Mon Jul 31 05:45:36 UTC 2006
From 883575b4fbd4eda900698a8e6e29c5893b05503a Mon Sep 17 00:00:00 2001
From: Daniel T Chen <crimsun at ubuntu.com>
Date: Mon, 31 Jul 2006 01:16:30 -0400
Subject: [PATCH] [UBUNTU:sound/pci/{emu10k1,hda}/] Add support for various newer HDA and Audigy 2 ZS models
UpstreamStatus: Added in upstream hg alsa-kernel changesets:
eb44890cd16c [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=eb44890cd16cd38364f02a7166d8ddc4dcd6825a;style=raw],
d57b617f0f77 [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=d57b617f0f77ba39d392dd7bbe9b71eb591a7a01;style=raw],
80f32e51a1ba [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=80f32e51a1ba1ab2a0bfc446dfd8740c33be4729;style=raw],
4b55c6c8ae32 [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=4b55c6c8ae32f47fe190968187f4ed3ec12f448c;style=raw],
d360a99b1107 [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=d360a99b1107f42c453676c2b43c2dd94b958c5b;style=raw],
deb4696bea5f [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=deb4696bea5fcbf610ebbd36289a9313cf8f777d;style=raw],
934b07851c77 [http://hg-mirror.alsa-project.org/alsa-kernel?cmd=changeset;node=934b07851c7744d39994c3c8c22863bfffb873c3;style=raw]
This commit aggregates the addition of support for various new models:
+ Samsung X10 (using AD1986A codec)
+ Clevo m665n (added 'clevo' model using ALC880 codec)
+ HP xw4400/6400/8400/9400 (added 'hp-bpc' model using ALC262 codec)
+ Benq ED8 (added 'benq' model using ALC262 codec)
+ ASUS M2NPV-VM (using AD1986A codec)
+ Arima W820Di1 (added 'arima' model using ALC882 codec)
+ Dell OEM/Creative Labs Audigy 2 ZS [SB0353]
Signed-off-by: Daniel T Chen <crimsun at ubuntu.com>
---
sound/pci/emu10k1/emu10k1_main.c | 11 +++++
sound/pci/hda/patch_analog.c | 4 ++
sound/pci/hda/patch_realtek.c | 79 ++++++++++++++++++++++++++++++++++----
3 files changed, 85 insertions(+), 9 deletions(-)
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
index cf8043b..2ef6f01 100644
--- a/sound/pci/emu10k1/emu10k1_main.c
+++ b/sound/pci/emu10k1/emu10k1_main.c
@@ -749,6 +749,17 @@ static emu_chip_details_t emu_chip_detai
.ca0102_chip = 1,
.ca0151_chip = 1,
.spdif_bug = 1} ,
+ /* Dell OEM/Creative Labs Audigy 2 ZS */
+ /* See ALSA bug#1365 */
+ {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10031102,
+ .driver = "Audigy2", .name = "Audigy 2 ZS [SB0353]",
+ .id = "Audigy2",
+ .emu10k2_chip = 1,
+ .ca0102_chip = 1,
+ .ca0151_chip = 1,
+ .spk71 = 1,
+ .spdif_bug = 1,
+ .ac97_chip = 1} ,
{.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10021102,
.driver = "Audigy2", .name = "Audigy 2 Platinum [SB0240P]",
.id = "Audigy2",
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 23e6d39..ce160c3 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -789,6 +789,8 @@ static struct hda_board_config ad1986a_c
.config = AD1986A_3STACK }, /* ASUS A8N-VM CSM */
{ .pci_subvendor = 0x1043, .pci_subdevice = 0x81b3,
.config = AD1986A_3STACK }, /* ASUS P5RD2-VM / P5GPL-X SE */
+ { .pci_subvendor = 0x1043, .pci_subdevice = 0x81cb,
+ .config = AD1986A_3STACK }, /* ASUS M2NPV-VM */
{ .modelname = "laptop", .config = AD1986A_LAPTOP },
{ .pci_subvendor = 0x144d, .pci_subdevice = 0xc01e,
.config = AD1986A_LAPTOP }, /* FSC V2060 */
@@ -801,6 +803,8 @@ static struct hda_board_config ad1986a_c
.config = AD1986A_LAPTOP_EAPD }, /* Samsung X60 Chane */
{ .pci_subvendor = 0x144d, .pci_subdevice = 0xc024,
.config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */
+ { .pci_subvendor = 0x144d, .pci_subdevice = 0xc026,
+ .config = AD1986A_LAPTOP_EAPD }, /* Samsung X10-T2300 Culesa */
{ .pci_subvendor = 0x1043, .pci_subdevice = 0x1153,
.config = AD1986A_LAPTOP_EAPD }, /* ASUS M9 */
{ .pci_subvendor = 0x1043, .pci_subdevice = 0x1213,
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 639747b..b3f5d4a 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -79,6 +79,7 @@ enum {
ALC262_BASIC,
ALC262_FUJITSU,
ALC262_HP_BPC,
+ ALC262_BENQ_ED8,
ALC262_AUTO,
ALC262_MODEL_LAST /* last tag */
};
@@ -97,6 +98,7 @@ enum {
enum {
ALC882_3ST_DIG,
ALC882_6ST_DIG,
+ ALC882_ARIMA,
ALC882_AUTO,
ALC882_MODEL_LAST,
};
@@ -1317,6 +1319,10 @@ static struct hda_verb alc880_pin_clevo_
};
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*/
@@ -2106,6 +2112,7 @@ static struct hda_board_config alc880_cf
{ .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) */
@@ -2117,8 +2124,13 @@ static struct hda_board_config alc880_cf
{ .modelname = "3stack-digout", .config = ALC880_3ST_DIG },
{ .pci_subvendor = 0x8086, .pci_subdevice = 0xe308, .config = ALC880_3ST_DIG },
{ .pci_subvendor = 0x1025, .pci_subdevice = 0x0070, .config = ALC880_3ST_DIG },
- /* Clevo m520G NB */
- { .pci_subvendor = 0x1558, .pci_subdevice = 0x0520, .config = ALC880_CLEVO },
+
+ /* Clevo laptops */
+ { .modelname = "clevo", .config = ALC880_CLEVO },
+ { .pci_subvendor = 0x1558, .pci_subdevice = 0x0520,
+ .config = ALC880_CLEVO }, /* Clevo m520G NB */
+ { .pci_subvendor = 0x1558, .pci_subdevice = 0x0660,
+ .config = ALC880_CLEVO }, /* Clevo m665n */
/* Back 3 jack plus 1 SPDIF out jack, front 2 jack (Internal add Aux-In)*/
{ .pci_subvendor = 0x8086, .pci_subdevice = 0xe305, .config = ALC880_3ST_DIG },
@@ -2187,8 +2199,11 @@ static struct hda_board_config alc880_cf
{ .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 },
@@ -3860,6 +3875,7 @@ static struct hda_board_config alc260_cf
{ .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 },
@@ -4226,6 +4242,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
*/
@@ -4357,6 +4380,9 @@ static struct hda_board_config alc882_cf
.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 },
{}
};
@@ -4384,6 +4410,15 @@ static struct alc_config_preset alc882_p
.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,
+ },
};
@@ -4959,16 +4994,18 @@ #define alc883_pcm_digital_capture alc88
*/
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 },
{}
};
@@ -5177,8 +5214,10 @@ static int patch_alc883(struct hda_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)
@@ -5459,6 +5498,13 @@ static snd_kcontrol_new_t alc262_fujitsu
{ } /* end */
};
+/* additional init verbs for Benq laptops */
+static struct hda_verb alc262_EAPD_verbs[] = {
+ {0x20, AC_VERB_SET_COEF_INDEX, 0x07},
+ {0x20, AC_VERB_SET_PROC_COEF, 0x3070},
+ {}
+};
+
/* add playback controls from the parsed DAC table */
static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, const struct auto_pin_cfg *cfg)
{
@@ -5729,6 +5775,7 @@ static struct hda_board_config alc262_cf
{ .modelname = "fujitsu", .config = ALC262_FUJITSU },
{ .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397,
.config = ALC262_FUJITSU },
+ { .modelname = "hp-bpc", .config = ALC262_HP_BPC },
{ .pci_subvendor = 0x103c, .pci_subdevice = 0x208c,
.config = ALC262_HP_BPC }, /* xw4400 */
{ .pci_subvendor = 0x103c, .pci_subdevice = 0x3014,
@@ -5737,6 +5784,9 @@ static struct hda_board_config alc262_cf
.config = ALC262_HP_BPC }, /* xw8400 */
{ .pci_subvendor = 0x103c, .pci_subdevice = 0x12fe,
.config = ALC262_HP_BPC }, /* xw9400 */
+ { .modelname = "benq", .config = ALC262_BENQ_ED8 },
+ { .pci_subvendor = 0x17ff, .pci_subdevice = 0x0560,
+ .config = ALC262_BENQ_ED8 },
{ .modelname = "auto", .config = ALC262_AUTO },
{}
};
@@ -5774,6 +5824,16 @@ static struct alc_config_preset alc262_p
.channel_mode = alc262_modes,
.input_mux = &alc262_HP_capture_source,
},
+ [ALC262_BENQ_ED8] = {
+ .mixers = { alc262_base_mixer },
+ .init_verbs = { alc262_init_verbs, alc262_EAPD_verbs },
+ .num_dacs = ARRAY_SIZE(alc262_dac_nids),
+ .dac_nids = alc262_dac_nids,
+ .hp_nid = 0x03,
+ .num_channel_mode = ARRAY_SIZE(alc262_modes),
+ .channel_mode = alc262_modes,
+ .input_mux = &alc262_capture_source,
+ },
};
static int patch_alc262(struct hda_codec *codec)
@@ -6437,6 +6497,7 @@ static struct hda_board_config alc861_cf
{ .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 },
--
1.4.1
--
Daniel T. Chen crimsun at ubuntu.com
GPG key: www.sh.nu/~crimsun/pubkey.gpg.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20060730/5cd1e3cc/attachment.sig>
More information about the kernel-team
mailing list