diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-09-07 11:52:14 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-09-23 04:46:46 -0400 |
commit | e08a007d1041e0bc3df6b855043d8efde91851aa (patch) | |
tree | ace6ac98dec5bfc7a658df9aa6d0c78393b8598b /sound/pci/hda/patch_realtek.c | |
parent | dafbbb1fdbf103b24d0f7aa645625b6bd558c896 (diff) |
[ALSA] hda-codec - Fix SPDIF device number of ALC codecs
Assign the SPDIF always to the secondary device (dev#1) to keep
the same configuration. Move the optional capture device to the
third device (dev#2).
hda_intel now just ignores the NULL entries in the pcm arrays
from codecs.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d037051b66b4..ba9e050e2012 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1796,25 +1796,9 @@ static int alc_build_pcms(struct hda_codec *codec) | |||
1796 | } | 1796 | } |
1797 | } | 1797 | } |
1798 | 1798 | ||
1799 | /* If the use of more than one ADC is requested for the current | 1799 | /* SPDIF for stream index #1 */ |
1800 | * model, configure a second analog capture-only PCM. | ||
1801 | */ | ||
1802 | if (spec->num_adc_nids > 1) { | ||
1803 | codec->num_pcms++; | ||
1804 | info++; | ||
1805 | info->name = spec->stream_name_analog; | ||
1806 | /* No playback stream for second PCM */ | ||
1807 | info->stream[SNDRV_PCM_STREAM_PLAYBACK] = alc_pcm_null_playback; | ||
1808 | info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = 0; | ||
1809 | if (spec->stream_analog_capture) { | ||
1810 | snd_assert(spec->adc_nids, return -EINVAL); | ||
1811 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = *(spec->stream_analog_capture); | ||
1812 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adc_nids[1]; | ||
1813 | } | ||
1814 | } | ||
1815 | |||
1816 | if (spec->multiout.dig_out_nid || spec->dig_in_nid) { | 1800 | if (spec->multiout.dig_out_nid || spec->dig_in_nid) { |
1817 | codec->num_pcms++; | 1801 | codec->num_pcms = 2; |
1818 | info++; | 1802 | info++; |
1819 | info->name = spec->stream_name_digital; | 1803 | info->name = spec->stream_name_digital; |
1820 | if (spec->multiout.dig_out_nid && | 1804 | if (spec->multiout.dig_out_nid && |
@@ -1829,6 +1813,24 @@ static int alc_build_pcms(struct hda_codec *codec) | |||
1829 | } | 1813 | } |
1830 | } | 1814 | } |
1831 | 1815 | ||
1816 | /* If the use of more than one ADC is requested for the current | ||
1817 | * model, configure a second analog capture-only PCM. | ||
1818 | */ | ||
1819 | /* Additional Analaog capture for index #2 */ | ||
1820 | if (spec->num_adc_nids > 1 && spec->stream_analog_capture && | ||
1821 | spec->adc_nids) { | ||
1822 | codec->num_pcms = 3; | ||
1823 | info++; | ||
1824 | info->name = spec->stream_name_analog; | ||
1825 | /* No playback stream for second PCM */ | ||
1826 | info->stream[SNDRV_PCM_STREAM_PLAYBACK] = alc_pcm_null_playback; | ||
1827 | info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = 0; | ||
1828 | if (spec->stream_analog_capture) { | ||
1829 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = *(spec->stream_analog_capture); | ||
1830 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adc_nids[1]; | ||
1831 | } | ||
1832 | } | ||
1833 | |||
1832 | return 0; | 1834 | return 0; |
1833 | } | 1835 | } |
1834 | 1836 | ||