summaryrefslogtreecommitdiffstats
path: root/firmware/target/coldfire/iaudio
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2009-06-12 18:53:44 +0000
committerJens Arnold <amiconn@rockbox.org>2009-06-12 18:53:44 +0000
commit81b87fe13d6b5f0e8bafd0810f5f8aca2a57bde3 (patch)
tree3372bcdbc512e2fd79350bf679fb89736e51e78a /firmware/target/coldfire/iaudio
parent94823c65ac7555a7ed19521184064255902ff615 (diff)
downloadrockbox-81b87fe13d6b5f0e8bafd0810f5f8aca2a57bde3.tar.gz
rockbox-81b87fe13d6b5f0e8bafd0810f5f8aca2a57bde3.zip
Add iAudio M5 FM radio mod to the advanced build options. * Unify iAudio audio driver, fmradio i2c driver, and power driver (M5 + X5 only).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21264 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/coldfire/iaudio')
-rw-r--r--firmware/target/coldfire/iaudio/audio-iaudio.c (renamed from firmware/target/coldfire/iaudio/x5/audio-x5.c)23
-rw-r--r--firmware/target/coldfire/iaudio/fmradio_i2c-iaudio.c (renamed from firmware/target/coldfire/iaudio/m3/fmradio_i2c-m3.c)0
-rw-r--r--firmware/target/coldfire/iaudio/m3/audio-m3.c116
-rw-r--r--firmware/target/coldfire/iaudio/m5/audio-m5.c84
-rw-r--r--firmware/target/coldfire/iaudio/m5/power-m5.c67
-rw-r--r--firmware/target/coldfire/iaudio/power-x5m5.c (renamed from firmware/target/coldfire/iaudio/x5/power-x5.c)2
-rw-r--r--firmware/target/coldfire/iaudio/x5/fmradio_i2c-x5.c39
7 files changed, 25 insertions, 306 deletions
diff --git a/firmware/target/coldfire/iaudio/x5/audio-x5.c b/firmware/target/coldfire/iaudio/audio-iaudio.c
index eb74eaf3b6..ed3a926d72 100644
--- a/firmware/target/coldfire/iaudio/x5/audio-x5.c
+++ b/firmware/target/coldfire/iaudio/audio-iaudio.c
@@ -18,6 +18,7 @@
* KIND, either express or implied.
*
****************************************************************************/
+#include "config.h"
#include "system.h"
#include "cpu.h"
#include "audio.h"
@@ -41,9 +42,13 @@ void audio_input_mux(int source, unsigned flags)
{
/* Prevent pops from unneeded switching */
static int last_source = AUDIO_SRC_PLAYBACK;
+#ifdef HAVE_FMRADIO_IN
static bool last_recording = false;
bool recording = flags & SRCF_RECORDING;
+#else
+ (void)flags;
+#endif
switch (source)
{
@@ -76,6 +81,7 @@ void audio_input_mux(int source, unsigned flags)
}
break;
+#ifdef HAVE_FMRADIO_IN
case AUDIO_SRC_FMRADIO: /* recording and playback */
if (!recording)
audiohw_set_recvol(23, 23, AUDIO_GAIN_LINEIN);
@@ -99,17 +105,34 @@ void audio_input_mux(int source, unsigned flags)
coldfire_set_dataincontrol(0);
}
break;
+#endif /* HAVE_FMRADIO_IN */
} /* end switch */
/* set line multiplexer */
+#ifdef IAUDIO_M3
+#ifdef HAVE_FMRADIO_IN
+ if (source == AUDIO_SRC_FMRADIO)
+ and_l(~(1 << 25), &GPIO1_OUT); /* FM radio */
+ else
+#endif
+ or_l((1 << 25), &GPIO1_OUT); /* Line In */
+
+ or_l((1 << 25), &GPIO1_ENABLE);
+ or_l((1 << 25), &GPIO1_FUNCTION);
+
+#else /* iAudio M5, X5 */
+#ifdef HAVE_FMRADIO_IN
if (source == AUDIO_SRC_FMRADIO)
and_l(~(1 << 29), &GPIO_OUT); /* FM radio */
else
+#endif
or_l((1 << 29), &GPIO_OUT); /* Line In */
or_l((1 << 29), &GPIO_ENABLE);
or_l((1 << 29), &GPIO_FUNCTION);
+#endif /* iAudio M5, X5 */
+
last_source = source;
} /* audio_input_mux */
diff --git a/firmware/target/coldfire/iaudio/m3/fmradio_i2c-m3.c b/firmware/target/coldfire/iaudio/fmradio_i2c-iaudio.c
index 8bc6fb8445..8bc6fb8445 100644
--- a/firmware/target/coldfire/iaudio/m3/fmradio_i2c-m3.c
+++ b/firmware/target/coldfire/iaudio/fmradio_i2c-iaudio.c
diff --git a/firmware/target/coldfire/iaudio/m3/audio-m3.c b/firmware/target/coldfire/iaudio/m3/audio-m3.c
deleted file mode 100644
index ea401cc40e..0000000000
--- a/firmware/target/coldfire/iaudio/m3/audio-m3.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 by Michael Sevakis
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * 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"
-
-void audio_set_output_source(int source)
-{
- int level = set_irq_level(DMA_IRQ_LEVEL);
- unsigned long txsrc;
-
- if ((unsigned)source >= AUDIO_NUM_SOURCES)
- txsrc = (3 << 8); /* playback, PDOR3 */
- else
- txsrc = (4 << 8); /* recording, iis1RcvData */
-
- IIS1CONFIG = (IIS1CONFIG & ~(7 << 8)) | txsrc;
- restore_irq(level);
-} /* audio_set_output_source */
-
-void audio_input_mux(int source, unsigned flags)
-{
- /* Prevent pops from unneeded switching */
- static int last_source = AUDIO_SRC_PLAYBACK;
- static bool last_recording = false;
-
- bool recording = flags & SRCF_RECORDING;
-
- switch (source)
- {
- default: /* playback - no recording */
- source = AUDIO_SRC_PLAYBACK;
- case AUDIO_SRC_PLAYBACK:
- if (source != last_source)
- {
- audiohw_disable_recording();
- audiohw_set_monitor(false);
- coldfire_set_dataincontrol(0);
- }
- break;
-
- case AUDIO_SRC_MIC: /* recording only */
- if (source != last_source)
- {
- audiohw_enable_recording(true); /* source mic */
- /* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
- coldfire_set_dataincontrol((3 << 14) | (4 << 3));
- }
- break;
-
- case AUDIO_SRC_LINEIN: /* recording only */
- if (source != last_source)
- {
- audiohw_enable_recording(false); /* source line */
- /* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
- coldfire_set_dataincontrol((3 << 14) | (4 << 3));
- }
- break;
-
- case AUDIO_SRC_FMRADIO: /* recording and playback */
- if (!recording)
- audiohw_set_recvol(23, 23, AUDIO_GAIN_LINEIN);
-
- /* I2S recording and analog playback */
- if (source == last_source && recording == last_recording)
- break;
-
- last_recording = recording;
-
- if (recording)
- {
- /* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
- coldfire_set_dataincontrol((3 << 14) | (4 << 3));
- audiohw_enable_recording(false); /* source line */
- }
- else
- {
- audiohw_disable_recording();
- audiohw_set_monitor(true); /* analog bypass */
- coldfire_set_dataincontrol(0);
- }
- break;
- } /* end switch */
-
- /* set line multiplexer */
- if (source == AUDIO_SRC_FMRADIO)
- and_l(~(1 << 25), &GPIO1_OUT); /* FM radio */
- else
- or_l((1 << 25), &GPIO1_OUT); /* Line In */
-
- or_l((1 << 25), &GPIO1_ENABLE);
- or_l((1 << 25), &GPIO1_FUNCTION);
-
- last_source = source;
-} /* audio_input_mux */
-
diff --git a/firmware/target/coldfire/iaudio/m5/audio-m5.c b/firmware/target/coldfire/iaudio/m5/audio-m5.c
deleted file mode 100644
index 728f9be063..0000000000
--- a/firmware/target/coldfire/iaudio/m5/audio-m5.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 by Michael Sevakis
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * 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"
-
-void audio_set_output_source(int source)
-{
- int level = set_irq_level(DMA_IRQ_LEVEL);
- unsigned long txsrc;
-
- if ((unsigned)source >= AUDIO_NUM_SOURCES)
- txsrc = (3 << 8); /* playback, PDOR3 */
- else
- txsrc = (4 << 8); /* recording, iis1RcvData */
-
- IIS1CONFIG = (IIS1CONFIG & ~(7 << 8)) | txsrc;
- restore_irq(level);
-} /* audio_set_output_source */
-
-void audio_input_mux(int source, unsigned flags)
-{
- /* Prevent pops from unneeded switching */
- static int last_source = AUDIO_SRC_PLAYBACK;
-
- (void)flags;
-
- switch (source)
- {
- default: /* playback - no recording */
- source = AUDIO_SRC_PLAYBACK;
- case AUDIO_SRC_PLAYBACK:
- if (source != last_source)
- {
- audiohw_disable_recording();
- audiohw_set_monitor(false);
- coldfire_set_dataincontrol(0);
- }
- break;
-
- case AUDIO_SRC_MIC: /* recording only */
- if (source != last_source)
- {
- audiohw_enable_recording(true); /* source mic */
- /* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
- coldfire_set_dataincontrol((3 << 14) | (4 << 3));
- }
- break;
-
- case AUDIO_SRC_LINEIN: /* recording only */
- if (source != last_source)
- {
- audiohw_enable_recording(false); /* source line */
- /* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
- coldfire_set_dataincontrol((3 << 14) | (4 << 3));
- }
- break;
- } /* end switch */
-
- or_l((1 << 29), &GPIO_OUT); /* Line In */
- or_l((1 << 29), &GPIO_ENABLE);
- or_l((1 << 29), &GPIO_FUNCTION);
-
- last_source = source;
-} /* audio_input_mux */
diff --git a/firmware/target/coldfire/iaudio/m5/power-m5.c b/firmware/target/coldfire/iaudio/m5/power-m5.c
deleted file mode 100644
index 8bb36c663d..0000000000
--- a/firmware/target/coldfire/iaudio/m5/power-m5.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 by Linus Nielsen Feltzing
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "config.h"
-#include "cpu.h"
-#include <stdbool.h>
-#include "kernel.h"
-#include "system.h"
-#include "power.h"
-#include "pcf50606.h"
-#include "lcd-remote-target.h"
-
-void power_init(void)
-{
- /* Charger detect */
- and_l(~0x01000000, &GPIO1_ENABLE);
- or_l(0x01000000, &GPIO1_FUNCTION);
-
- pcf50606_init();
-}
-
-unsigned int power_input_status(void)
-{
- return (GPIO1_READ & 0x01000000) ?
- POWER_INPUT_MAIN_CHARGER : POWER_INPUT_NONE;
-}
-
-void ide_power_enable(bool on)
-{
- /* GPOOD3 */
- int level = disable_irq_save();
- pcf50606_write(0x3c, on ? 0x07 : 0x00);
- restore_irq(level);
-}
-
-bool ide_powered(void)
-{
- int level = disable_irq_save();
- int value = pcf50606_read(0x3c);
- restore_irq(level);
- return (value & 0x07) != 0;
-}
-
-void power_off(void)
-{
- lcd_remote_poweroff();
- set_irq_level(DISABLE_INTERRUPTS);
- and_l(~0x00000008, &GPIO_OUT); /* Set KEEPACT low */
- asm("halt");
-}
diff --git a/firmware/target/coldfire/iaudio/x5/power-x5.c b/firmware/target/coldfire/iaudio/power-x5m5.c
index 4feb9c15d0..e9bdde16ec 100644
--- a/firmware/target/coldfire/iaudio/x5/power-x5.c
+++ b/firmware/target/coldfire/iaudio/power-x5m5.c
@@ -66,8 +66,10 @@ void power_off(void)
asm("halt");
}
+#if (CONFIG_TUNER & TEA5767)
bool tuner_power(bool status)
{
(void)status;
return true;
}
+#endif
diff --git a/firmware/target/coldfire/iaudio/x5/fmradio_i2c-x5.c b/firmware/target/coldfire/iaudio/x5/fmradio_i2c-x5.c
deleted file mode 100644
index 68baed9bb3..0000000000
--- a/firmware/target/coldfire/iaudio/x5/fmradio_i2c-x5.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- * Physical interface of the Philips TEA5767 in iAudio x5
- *
- * Copyright (C) 2002 by Linus Nielsen Feltzing
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "config.h"
-
-#if (CONFIG_TUNER & TEA5767)
-
-#include "i2c-coldfire.h"
-
-int fmradio_i2c_write(unsigned char address, const unsigned char* buf,
- int count)
-{
- return i2c_write(I2C_IFACE_0, address, buf, count);
-}
-
-int fmradio_i2c_read(unsigned char address, unsigned char* buf, int count)
-{
- return i2c_read(I2C_IFACE_0, address, buf, count);
-}
-
-#endif