aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-09-07 11:52:14 -0400
committerJaroslav Kysela <perex@suse.cz>2006-09-23 04:46:46 -0400
commite08a007d1041e0bc3df6b855043d8efde91851aa (patch)
treeace6ac98dec5bfc7a658df9aa6d0c78393b8598b /sound/pci/hda/patch_realtek.c
parentdafbbb1fdbf103b24d0f7aa645625b6bd558c896 (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.c38
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