aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorKailang Yang <kailang@realtek.com>2010-11-23 02:56:16 -0500
committerTakashi Iwai <tiwai@suse.de>2010-11-23 02:56:16 -0500
commit48c88e820fb3e35c5925e4743fd13f200891b7b5 (patch)
treebff32835ed6153a17a05703249a6d74836567cbf /sound/pci/hda
parent1657cbd87125a623d28ce8a7ef5ff6959098d425 (diff)
ALSA: hda - Identify more variants for ALC269
Give more correct chip names for ALC269-variant codecs. Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/patch_realtek.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 38b63fb79cbd..0ac6aed0c889 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -14623,7 +14623,10 @@ static int alc275_setup_dual_adc(struct hda_codec *codec)
14623/* different alc269-variants */ 14623/* different alc269-variants */
14624enum { 14624enum {
14625 ALC269_TYPE_NORMAL, 14625 ALC269_TYPE_NORMAL,
14626 ALC269_TYPE_ALC258,
14626 ALC269_TYPE_ALC259, 14627 ALC269_TYPE_ALC259,
14628 ALC269_TYPE_ALC269VB,
14629 ALC269_TYPE_ALC270,
14627 ALC269_TYPE_ALC271X, 14630 ALC269_TYPE_ALC271X,
14628}; 14631};
14629 14632
@@ -15023,7 +15026,7 @@ static int alc269_fill_coef(struct hda_codec *codec)
15023static int patch_alc269(struct hda_codec *codec) 15026static int patch_alc269(struct hda_codec *codec)
15024{ 15027{
15025 struct alc_spec *spec; 15028 struct alc_spec *spec;
15026 int board_config; 15029 int board_config, coef;
15027 int err; 15030 int err;
15028 15031
15029 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 15032 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
@@ -15034,14 +15037,23 @@ static int patch_alc269(struct hda_codec *codec)
15034 15037
15035 alc_auto_parse_customize_define(codec); 15038 alc_auto_parse_customize_define(codec);
15036 15039
15037 if ((alc_read_coef_idx(codec, 0) & 0x00f0) == 0x0010){ 15040 coef = alc_read_coef_idx(codec, 0);
15041 if ((coef & 0x00f0) == 0x0010) {
15038 if (codec->bus->pci->subsystem_vendor == 0x1025 && 15042 if (codec->bus->pci->subsystem_vendor == 0x1025 &&
15039 spec->cdefine.platform_type == 1) { 15043 spec->cdefine.platform_type == 1) {
15040 alc_codec_rename(codec, "ALC271X"); 15044 alc_codec_rename(codec, "ALC271X");
15041 spec->codec_variant = ALC269_TYPE_ALC271X; 15045 spec->codec_variant = ALC269_TYPE_ALC271X;
15042 } else { 15046 } else if ((coef & 0xf000) == 0x1000) {
15047 spec->codec_variant = ALC269_TYPE_ALC270;
15048 } else if ((coef & 0xf000) == 0x2000) {
15043 alc_codec_rename(codec, "ALC259"); 15049 alc_codec_rename(codec, "ALC259");
15044 spec->codec_variant = ALC269_TYPE_ALC259; 15050 spec->codec_variant = ALC269_TYPE_ALC259;
15051 } else if ((coef & 0xf000) == 0x3000) {
15052 alc_codec_rename(codec, "ALC258");
15053 spec->codec_variant = ALC269_TYPE_ALC258;
15054 } else {
15055 alc_codec_rename(codec, "ALC269VB");
15056 spec->codec_variant = ALC269_TYPE_ALC269VB;
15045 } 15057 }
15046 } else 15058 } else
15047 alc_fix_pll_init(codec, 0x20, 0x04, 15); 15059 alc_fix_pll_init(codec, 0x20, 0x04, 15);