diff options
author | Takashi Iwai <tiwai@suse.de> | 2011-05-13 19:33:18 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-05-13 19:37:45 +0200 |
commit | fa5dadcbe00fd6c86a149df886d4ae2cc30c33ef (patch) | |
tree | faa32ff1430427f612b68912fffbb4647f028446 /sound/pci | |
parent | ALSA: hda - Parse more deep input-source routes in Conexant auto-parser (diff) | |
download | linux-fa5dadcbe00fd6c86a149df886d4ae2cc30c33ef.tar.xz linux-fa5dadcbe00fd6c86a149df886d4ae2cc30c33ef.zip |
ALSA: hda - Add support of auto-parser to cxt5047 / CX20551 Waikiki
Similarly like other Conexant codecs, now model=auto is supported for
cxt5047.
But the auto-parser mode isn't activated as default yet, since BIOS
pin-configs seem often broken on machines with this codec. User need
to pass model=auto explicitly.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 655bd23e80df..fc02751f22d6 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -1512,6 +1512,7 @@ enum { #ifdef CONFIG_SND_DEBUG CXT5047_TEST, #endif + CXT5047_AUTO, CXT5047_MODELS }; @@ -1522,6 +1523,7 @@ static const char * const cxt5047_models[CXT5047_MODELS] = { #ifdef CONFIG_SND_DEBUG [CXT5047_TEST] = "test", #endif + [CXT5047_AUTO] = "auto", }; static const struct snd_pci_quirk cxt5047_cfg_tbl[] = { @@ -1537,6 +1539,16 @@ static int patch_cxt5047(struct hda_codec *codec) struct conexant_spec *spec; int board_config; + board_config = snd_hda_check_board_config(codec, CXT5047_MODELS, + cxt5047_models, + cxt5047_cfg_tbl); +#if 0 /* not enabled as default, as BIOS often broken for this codec */ + if (board_config < 0) + board_config = CXT5047_AUTO; +#endif + if (board_config == CXT5047_AUTO) + return patch_conexant_auto(codec); + spec = kzalloc(sizeof(*spec), GFP_KERNEL); if (!spec) return -ENOMEM; @@ -1560,9 +1572,6 @@ static int patch_cxt5047(struct hda_codec *codec) codec->patch_ops = conexant_patch_ops; - board_config = snd_hda_check_board_config(codec, CXT5047_MODELS, - cxt5047_models, - cxt5047_cfg_tbl); switch (board_config) { case CXT5047_LAPTOP: spec->num_mixers = 2; @@ -4062,6 +4071,12 @@ static int patch_conexant_auto(struct hda_codec *codec) spec->num_adc_nids = ARRAY_SIZE(cxt5045_adc_nids); spec->capsrc_nids = spec->adc_nids; break; + case 0x14f15047: + codec->pin_amp_workaround = 1; + spec->adc_nids = cxt5047_adc_nids; + spec->num_adc_nids = ARRAY_SIZE(cxt5047_adc_nids); + spec->capsrc_nids = cxt5047_capsrc_nids; + break; default: spec->adc_nids = cx_auto_adc_nids; spec->num_adc_nids = ARRAY_SIZE(cx_auto_adc_nids); |