aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorChris Ball <cjb@laptop.org>2008-11-06 16:50:09 -0500
committerTakashi Iwai <tiwai@suse.de>2008-12-10 11:14:45 -0500
commite463ae1d13ffe4943bb31f47cc6f24415e55a59a (patch)
tree676f8dd8713fa32c40409d7766c3013486efcfeb /sound/pci
parent189d34e747e9540b70227f6682bd680868d90b10 (diff)
ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording
The OLPC has a privacy light hooked up in series with the microphone's V_Ref bias. We want to activate the bias while we are capturing audio. Signed-off-by: Chris Ball <cjb@laptop.org> Signed-off-by: Andres Salomon <dilinger@debian.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/cs5535audio/cs5535audio_pcm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sound/pci/cs5535audio/cs5535audio_pcm.c b/sound/pci/cs5535audio/cs5535audio_pcm.c
index 6aa0c19390d7..fa2a6b1b81a6 100644
--- a/sound/pci/cs5535audio/cs5535audio_pcm.c
+++ b/sound/pci/cs5535audio/cs5535audio_pcm.c
@@ -363,11 +363,27 @@ static int snd_cs5535audio_capture_open(struct snd_pcm_substream *substream)
363 if ((err = snd_pcm_hw_constraint_integer(runtime, 363 if ((err = snd_pcm_hw_constraint_integer(runtime,
364 SNDRV_PCM_HW_PARAM_PERIODS)) < 0) 364 SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
365 return err; 365 return err;
366
367#ifdef CONFIG_OLPC
368 /* Enable the V_ref bias only while recording. */
369 err = snd_ac97_update_bits(cs5535au->ac97, AC97_AD_MISC,
370 1 << AC97_AD_VREFD_SHIFT, 0);
371 if (err < 0)
372 snd_printk(KERN_ERR "Error updating AD_MISC %d\n", err);
373#endif
366 return 0; 374 return 0;
367} 375}
368 376
369static int snd_cs5535audio_capture_close(struct snd_pcm_substream *substream) 377static int snd_cs5535audio_capture_close(struct snd_pcm_substream *substream)
370{ 378{
379 int err;
380 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
381
382#ifdef CONFIG_OLPC
383 /* Disable V_ref bias. */
384 err = snd_ac97_update_bits(cs5535au->ac97, AC97_AD_MISC,
385 1 << AC97_AD_VREFD_SHIFT, 1 << AC97_AD_VREFD_SHIFT);
386#endif
371 return 0; 387 return 0;
372} 388}
373 389