diff options
author | Kailang Yang <kailang@realtek.com> | 2010-11-23 02:56:16 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-11-23 02:56:16 -0500 |
commit | 48c88e820fb3e35c5925e4743fd13f200891b7b5 (patch) | |
tree | bff32835ed6153a17a05703249a6d74836567cbf /sound/pci | |
parent | 1657cbd87125a623d28ce8a7ef5ff6959098d425 (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')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 18 |
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 */ |
14624 | enum { | 14624 | enum { |
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) | |||
15023 | static int patch_alc269(struct hda_codec *codec) | 15026 | static 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); |