diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2007-11-11 19:11:23 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2007-11-11 19:11:23 +0000 |
commit | 6e36ac547c23c3890439a3b81772d7e3c1ce938d (patch) | |
tree | 67b5bbeb4d01774411c11fc72dbb56f913ae6cf4 /firmware/drivers/audio | |
parent | 31ea780ee0df7c6b2eadc61287fe8a7dcb81ba52 (diff) | |
download | rockbox-6e36ac547c23c3890439a3b81772d7e3c1ce938d.tar.gz rockbox-6e36ac547c23c3890439a3b81772d7e3c1ce938d.zip |
H10: Touch-up the audio source switching a bit. Actually fix my earlier errors when enabling recording from Line/FM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15580 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/audio')
-rw-r--r-- | firmware/drivers/audio/wm8731.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/firmware/drivers/audio/wm8731.c b/firmware/drivers/audio/wm8731.c index 44aeefe791..66eb1e859a 100644 --- a/firmware/drivers/audio/wm8731.c +++ b/firmware/drivers/audio/wm8731.c | |||
@@ -238,6 +238,8 @@ void audiohw_enable_recording(bool source_mic) | |||
238 | codec_set_active(false); | 238 | codec_set_active(false); |
239 | 239 | ||
240 | wm8731_regs[PDCTRL] &= ~PDCTRL_ADCPD; | 240 | wm8731_regs[PDCTRL] &= ~PDCTRL_ADCPD; |
241 | /* NOTE: When switching to digital monitoring we will not want | ||
242 | * the DAC disabled. */ | ||
241 | wm8731_regs[PDCTRL] |= PDCTRL_DACPD; | 243 | wm8731_regs[PDCTRL] |= PDCTRL_DACPD; |
242 | wm8731_regs[AAPCTRL] &= ~AAPCTRL_DACSEL; | 244 | wm8731_regs[AAPCTRL] &= ~AAPCTRL_DACSEL; |
243 | 245 | ||
@@ -247,7 +249,7 @@ void audiohw_enable_recording(bool source_mic) | |||
247 | wm8731_regs[PDCTRL] &= ~PDCTRL_MICPD; | 249 | wm8731_regs[PDCTRL] &= ~PDCTRL_MICPD; |
248 | wm8731_regs[PDCTRL] |= PDCTRL_LINEINPD; | 250 | wm8731_regs[PDCTRL] |= PDCTRL_LINEINPD; |
249 | wm8731_regs[AAPCTRL] |= AAPCTRL_INSEL | AAPCTRL_SIDETONE; | 251 | wm8731_regs[AAPCTRL] |= AAPCTRL_INSEL | AAPCTRL_SIDETONE; |
250 | wm8731_regs[AAPCTRL] &= ~AAPCTRL_MUTEMIC; | 252 | wm8731_regs[AAPCTRL] &= ~(AAPCTRL_MUTEMIC | AAPCTRL_BYPASS); |
251 | } else { | 253 | } else { |
252 | wm8731_regs[PDCTRL] |= PDCTRL_MICPD; | 254 | wm8731_regs[PDCTRL] |= PDCTRL_MICPD; |
253 | wm8731_regs[PDCTRL] &= ~PDCTRL_LINEINPD; | 255 | wm8731_regs[PDCTRL] &= ~PDCTRL_LINEINPD; |
@@ -259,9 +261,6 @@ void audiohw_enable_recording(bool source_mic) | |||
259 | wm8731_write(AAPCTRL, wm8731_regs[AAPCTRL]); | 261 | wm8731_write(AAPCTRL, wm8731_regs[AAPCTRL]); |
260 | 262 | ||
261 | if (!source_mic) { | 263 | if (!source_mic) { |
262 | wm8731_regs[AAPCTRL] |= AAPCTRL_INSEL | AAPCTRL_SIDETONE; | ||
263 | wm8731_regs[AAPCTRL] &= ~(AAPCTRL_MUTEMIC | AAPCTRL_BYPASS); | ||
264 | } else { | ||
265 | wm8731_write_and(LINVOL, ~LINVOL_LINMUTE); | 264 | wm8731_write_and(LINVOL, ~LINVOL_LINMUTE); |
266 | wm8731_write_and(RINVOL, ~RINVOL_RINMUTE); | 265 | wm8731_write_and(RINVOL, ~RINVOL_RINMUTE); |
267 | } | 266 | } |
@@ -321,13 +320,11 @@ void audiohw_set_monitor(int enable) | |||
321 | { | 320 | { |
322 | if(enable) | 321 | if(enable) |
323 | { | 322 | { |
324 | wm8731_regs[AAPCTRL] |= AAPCTRL_BYPASS; | 323 | wm8731_write_and(PDCTRL, ~PDCTRL_LINEINPD); |
325 | wm8731_regs[AAPCTRL] &=~ (AAPCTRL_DACSEL | AAPCTRL_SIDETONE); | 324 | wm8731_write_or(AAPCTRL, AAPCTRL_BYPASS); |
326 | wm8731_write(AAPCTRL, wm8731_regs[AAPCTRL]); | ||
327 | } | 325 | } |
328 | else { | 326 | else { |
329 | wm8731_regs[AAPCTRL] &=~ AAPCTRL_BYPASS; | 327 | wm8731_write_and(AAPCTRL, ~AAPCTRL_BYPASS); |
330 | wm8731_regs[AAPCTRL] |= AAPCTRL_DACSEL | AAPCTRL_SIDETONE; | 328 | wm8731_write_or(PDCTRL, PDCTRL_LINEINPD); |
331 | wm8731_write(AAPCTRL, wm8731_regs[AAPCTRL]); | ||
332 | } | 329 | } |
333 | } | 330 | } |