Commit ffd364ddd3090e2ef0d4882970c1e342db8b482f

Authored by Pavel Hofman
Committed by Takashi Iwai
1 parent f7de8ba3fc

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;