Commit ffd364ddd3090e2ef0d4882970c1e342db8b482f
Committed by
Takashi Iwai
1 parent
f7de8ba3fc
Exists in
master
and in
38 other branches
ALSA: ice1724 - Create capture pcm only for ADC-enabled configurations
Add the capture pcm only if there is at least one ADC configured in the SYSCONF register. Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Showing 2 changed files with 11 additions and 3 deletions Side-by-side Diff
sound/pci/ice1712/envy24ht.h
... | ... | @@ -66,6 +66,7 @@ |
66 | 66 | #define VT1724_CFG_CLOCK384 0x40 /* 16.9344Mhz, 44.1kHz*384 */ |
67 | 67 | #define VT1724_CFG_MPU401 0x20 /* MPU401 UARTs */ |
68 | 68 | #define VT1724_CFG_ADC_MASK 0x0c /* one, two or one and S/PDIF, stereo ADCs */ |
69 | +#define VT1724_CFG_ADC_NONE 0x0c /* no ADCs */ | |
69 | 70 | #define VT1724_CFG_DAC_MASK 0x03 /* one, two, three, four stereo DACs */ |
70 | 71 | |
71 | 72 | #define VT1724_REG_AC97_CFG 0x05 /* byte */ |
sound/pci/ice1712/ice1724.c
... | ... | @@ -1117,14 +1117,21 @@ |
1117 | 1117 | static int __devinit snd_vt1724_pcm_profi(struct snd_ice1712 *ice, int device) |
1118 | 1118 | { |
1119 | 1119 | struct snd_pcm *pcm; |
1120 | - int err; | |
1120 | + int capt, err; | |
1121 | 1121 | |
1122 | - err = snd_pcm_new(ice->card, "ICE1724", device, 1, 1, &pcm); | |
1122 | + if ((ice->eeprom.data[ICE_EEP2_SYSCONF] & VT1724_CFG_ADC_MASK) == | |
1123 | + VT1724_CFG_ADC_NONE) | |
1124 | + capt = 0; | |
1125 | + else | |
1126 | + capt = 1; | |
1127 | + err = snd_pcm_new(ice->card, "ICE1724", device, 1, capt, &pcm); | |
1123 | 1128 | if (err < 0) |
1124 | 1129 | return err; |
1125 | 1130 | |
1126 | 1131 | snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_vt1724_playback_pro_ops); |
1127 | - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_vt1724_capture_pro_ops); | |
1132 | + if (capt) | |
1133 | + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, | |
1134 | + &snd_vt1724_capture_pro_ops); | |
1128 | 1135 | |
1129 | 1136 | pcm->private_data = ice; |
1130 | 1137 | pcm->info_flags = 0; |