diff options
author | Jaroslav Kysela <perex@perex.cz> | 2010-01-21 08:54:38 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2010-01-21 08:54:38 -0500 |
commit | fd0b092a7b14559e2ff17ef3aaefb5d8adc7e15f (patch) | |
tree | beacc87216332d87c3fe2c47cf00d3bf5f9ee87c /sound/pci/hda/patch_analog.c | |
parent | c91a988dc6551c66418690e36b2a23cdb0255da8 (diff) |
ALSA: hda - AD1988 codec - fix SPDIF-input mixer initialization (unmute)
The SPDIF-input pin 0x1c is muted by default in hardware. Unmute appropriate
pin to get captured samples instead zeros. Tested on Lenovo Thinkstation.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/pci/hda/patch_analog.c')
-rw-r--r-- | sound/pci/hda/patch_analog.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index cecd3c108990..865715e3f938 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -2458,6 +2458,12 @@ static struct hda_verb ad1988_spdif_init_verbs[] = { | |||
2458 | { } | 2458 | { } |
2459 | }; | 2459 | }; |
2460 | 2460 | ||
2461 | static struct hda_verb ad1988_spdif_in_init_verbs[] = { | ||
2462 | /* unmute SPDIF input pin */ | ||
2463 | {0x1c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
2464 | { } | ||
2465 | }; | ||
2466 | |||
2461 | /* AD1989 has no ADC -> SPDIF route */ | 2467 | /* AD1989 has no ADC -> SPDIF route */ |
2462 | static struct hda_verb ad1989_spdif_init_verbs[] = { | 2468 | static struct hda_verb ad1989_spdif_init_verbs[] = { |
2463 | /* SPDIF-1 out pin */ | 2469 | /* SPDIF-1 out pin */ |
@@ -3193,8 +3199,11 @@ static int patch_ad1988(struct hda_codec *codec) | |||
3193 | ad1988_spdif_init_verbs; | 3199 | ad1988_spdif_init_verbs; |
3194 | } | 3200 | } |
3195 | } | 3201 | } |
3196 | if (spec->dig_in_nid && codec->vendor_id < 0x11d4989a) | 3202 | if (spec->dig_in_nid && codec->vendor_id < 0x11d4989a) { |
3197 | spec->mixers[spec->num_mixers++] = ad1988_spdif_in_mixers; | 3203 | spec->mixers[spec->num_mixers++] = ad1988_spdif_in_mixers; |
3204 | spec->init_verbs[spec->num_init_verbs++] = | ||
3205 | ad1988_spdif_in_init_verbs; | ||
3206 | } | ||
3198 | 3207 | ||
3199 | codec->patch_ops = ad198x_patch_ops; | 3208 | codec->patch_ops = ad198x_patch_ops; |
3200 | switch (board_config) { | 3209 | switch (board_config) { |