summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-03-28 20:43:47 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-03-28 20:43:47 +0000
commitcf0892fd7995f0dc7d25727a29663095ff85a491 (patch)
treea88bd08d70ec3ce6257661a938183deaa067a964
parenta7db6e302f90ea9c0d6ae809f06981b5956c8d68 (diff)
downloadrockbox-cf0892fd7995f0dc7d25727a29663095ff85a491.zip
rockbox-cf0892fd7995f0dc7d25727a29663095ff85a491.tar.gz
rockbox-cf0892fd7995f0dc7d25727a29663095ff85a491.tar.bz2
rockbox-cf0892fd7995f0dc7d25727a29663095ff85a491.tar.xz
Audio support for iAudio X5
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9328 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/main.c2
-rw-r--r--firmware/pcm_playback.c24
2 files changed, 15 insertions, 11 deletions
diff --git a/apps/main.c b/apps/main.c
index e7a01c8..c4d8c4a 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -424,6 +424,8 @@ void init(void)
#ifdef HAVE_CHARGING
car_adapter_mode_init();
#endif
+
+// tlv320_device_init();
}
int main(void)
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c
index 0007a71..22dc34d 100644
--- a/firmware/pcm_playback.c
+++ b/firmware/pcm_playback.c
@@ -63,6 +63,12 @@ static void (*callback_for_more)(unsigned char**, size_t*) IDATA_ATTR = NULL;
#define IIS_DEFPARM(freq) ((freq << 12) | 0x300 | 4 << 2)
#define IIS_RESET 0x800
+#ifdef IAUDIO_X5
+#define SET_IIS_CONFIG(x) IIS1CONFIG = (x);
+#else
+#define SET_IIS_CONFIG(x) IIS2CONFIG = (x);
+#endif
+
static int pcm_freq = 0x6; /* 44.1 is default */
/* Set up the DMA transfer that kicks in when the audio FIFO gets empty */
@@ -84,7 +90,7 @@ static void dma_start(const void *addr, size_t size)
BCR0 = size; /* Bytes to transfer */
/* Enable the FIFO and force one write to it */
- IIS2CONFIG = IIS_DEFPARM(pcm_freq);
+ SET_IIS_CONFIG(IIS_DEFPARM(pcm_freq));
/* Also send the audio to S/PDIF */
#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = EBU_DEFPARM;
@@ -100,7 +106,7 @@ static void dma_stop(void)
DCR0 = 0;
DSR0 = 1;
/* Reset the FIFO */
- IIS2CONFIG = IIS_RESET | IIS_DEFPARM(pcm_freq);
+ SET_IIS_CONFIG(IIS_RESET | IIS_DEFPARM(pcm_freq));
#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = IIS_RESET | EBU_DEFPARM;
#endif
@@ -196,7 +202,7 @@ void pcm_init(void)
DMACONFIG = 1; /* DMA0Req = PDOR3 */
/* Reset the audio FIFO */
- IIS2CONFIG = IIS_RESET;
+ SET_IIS_CONFIG(IIS_RESET);
/* Enable interrupt at level 7, priority 0 */
ICR6 = 0x1c;
@@ -205,7 +211,7 @@ void pcm_init(void)
pcm_set_frequency(44100);
/* Prevent pops (resets DAC to zero point) */
- IIS2CONFIG = IIS_DEFPARM(pcm_freq) | IIS_RESET;
+ SET_IIS_CONFIG(IIS_DEFPARM(pcm_freq) | IIS_RESET);
#if defined(HAVE_UDA1380)
/* Initialize default register values. */
@@ -223,7 +229,6 @@ void pcm_init(void)
#elif defined(HAVE_TLV320)
tlv320_init();
- tlv320_enable_output(true);
sleep(HZ/4);
tlv320_mute(false);
#endif
@@ -547,7 +552,7 @@ void pcm_play_pause(bool play)
#ifdef CPU_COLDFIRE
/* Enable the FIFO and force one write to it */
- IIS2CONFIG = IIS_DEFPARM(pcm_freq);
+ SET_IIS_CONFIG(IIS_DEFPARM(pcm_freq));
#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = EBU_DEFPARM;
#endif
@@ -607,7 +612,7 @@ void pcm_play_pause(bool play)
#ifdef CPU_COLDFIRE
/* Disable DMA peripheral request. */
DCR0 &= ~DMA_EEXT;
- IIS2CONFIG = IIS_RESET | IIS_DEFPARM(pcm_freq);
+ SET_IIS_CONFIG(IIS_RESET | IIS_DEFPARM(pcm_freq));
#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = IIS_RESET | EBU_DEFPARM;
#endif
@@ -664,15 +669,12 @@ void pcm_calculate_peaks(int *left, int *right)
short *addr;
short *end;
{
-#ifdef HAVE_UDA1380
+#ifdef CPU_COLDFIRE
size_t samples = (BCR0 & 0xffffff) / 4;
addr = (short *) (SAR0 & ~3);
#elif defined(HAVE_WM8975) || defined(HAVE_WM8758) || defined(HAVE_WM8731)
size_t samples = p_size / 4;
addr = p;
-#elif defined(HAVE_TLV320)
- size_t samples = 4; /* TODO X5 */
- addr = NULL;
#endif
if (samples > PEAK_SAMPLES)