From bcb8a884ee256e31d45a46bdeb83423457ac48d2 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Tue, 5 Jun 2007 07:03:30 +0000 Subject: e200: Add recording. Just from MIC right now and FM integration will happen soon. Most every bit of weirdness is nescessary and no problems seem to exist that the retailos doesn't exhibit too (namely noise when LCD is on when recording from MIC). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13557 a1c6a512-1295-4272-9138-f99709370657 --- .../target/arm/sandisk/sansa-e200/audio-e200.c | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 firmware/target/arm/sandisk/sansa-e200/audio-e200.c (limited to 'firmware/target/arm/sandisk/sansa-e200/audio-e200.c') diff --git a/firmware/target/arm/sandisk/sansa-e200/audio-e200.c b/firmware/target/arm/sandisk/sansa-e200/audio-e200.c new file mode 100644 index 0000000000..a3f3284b98 --- /dev/null +++ b/firmware/target/arm/sandisk/sansa-e200/audio-e200.c @@ -0,0 +1,103 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2007 by Michael Sevakis + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#include "system.h" +#include "cpu.h" +#include "audio.h" +#include "sound.h" + +int audio_channels = 2; +int audio_output_source = AUDIO_SRC_PLAYBACK; + +void audio_set_output_source(int source) +{ + int oldmode = set_fiq_status(FIQ_DISABLED); + + if ((unsigned)source >= AUDIO_NUM_SOURCES) + source = AUDIO_SRC_PLAYBACK; + + audio_output_source = source; + + if (source != AUDIO_SRC_PLAYBACK) + IISCONFIG |= (1 << 29); + + set_fiq_status(oldmode); +} /* audio_set_output_source */ + +void audio_set_source(int source, unsigned flags) +{ + static int last_source = AUDIO_SRC_PLAYBACK; +#if 0 + static bool last_recording = false; + bool recording = flags & SRCF_RECORDING; +#endif + (void)flags; + + switch (source) + { + default: /* playback - no recording */ + source = AUDIO_SRC_PLAYBACK; + case AUDIO_SRC_PLAYBACK: + audio_channels = 2; + if (source != last_source) + { + audiohw_set_monitor(false); + audiohw_disable_recording(); + } + break; + + case AUDIO_SRC_MIC: /* recording only */ + audio_channels = 1; + if (source != last_source) + { + audiohw_set_monitor(false); + audiohw_enable_recording(true); /* source mic */ + } + break; + +#if 0 + case AUDIO_SRC_FMRADIO: /* recording and playback */ + audio_channels = 2; + + if (!recording) + audiohw_set_recvol(23, 23, AUDIO_GAIN_LINEIN); + + if (source == last_source && recording == last_recording) + break; + + last_recording = recording; + + if (recording) + { + audiohw_set_monitor(false); + audiohw_enable_recording(false); + } + else + { + audiohw_disable_recording(); + audiohw_set_monitor(true); /* line 1 analog audio path */ + } + + break; +#endif + } /* end switch */ + + last_source = source; +} /* audio_set_source */ + + -- cgit v1.2.3