diff options
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 | ||