diff options
author | Dave Chapman <dave@dchapman.com> | 2006-02-26 20:29:29 +0000 |
---|---|---|
committer | Dave Chapman <dave@dchapman.com> | 2006-02-26 20:29:29 +0000 |
commit | a1e2a52e3e542d689ff990056a0d64553d94225d (patch) | |
tree | 702e9c0da54a5a02e901cfc2e7b74b50aa957b4e | |
parent | ecdadcbaed5bddbd3693af5fc7bc8f2dccd8c3ff (diff) | |
download | rockbox-a1e2a52e3e542d689ff990056a0d64553d94225d.tar.gz rockbox-a1e2a52e3e542d689ff990056a0d64553d94225d.zip |
iPod 3G - small audio fixes, but it still isn't working.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8850 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/crt0.S | 8 | ||||
-rw-r--r-- | firmware/export/pp5002.h | 2 | ||||
-rw-r--r-- | firmware/pcm_playback.c | 12 |
3 files changed, 15 insertions, 7 deletions
diff --git a/firmware/crt0.S b/firmware/crt0.S index 75ff55423a..061ffebeab 100644 --- a/firmware/crt0.S +++ b/firmware/crt0.S | |||
@@ -348,9 +348,17 @@ prefetch_abort_handler: | |||
348 | b UIE | 348 | b UIE |
349 | 349 | ||
350 | fiq_handler: | 350 | fiq_handler: |
351 | #if CONFIG_CPU == PP5020 | ||
351 | @ Branch straight to FIQ handler in pcm_playback.c. This also handles the | 352 | @ Branch straight to FIQ handler in pcm_playback.c. This also handles the |
352 | @ the correct return sequence. | 353 | @ the correct return sequence. |
353 | ldr pc, =fiq | 354 | ldr pc, =fiq |
355 | #else | ||
356 | stmfd sp!, {r0-r3, r12, lr} | ||
357 | mov lr, pc | ||
358 | ldr pc, =fiq | ||
359 | ldmfd sp!, {r0-r3, r12, lr} | ||
360 | subs pc, lr, #4 | ||
361 | #endif | ||
354 | 362 | ||
355 | data_abort_handler: | 363 | data_abort_handler: |
356 | sub r0, lr, #8 | 364 | sub r0, lr, #8 |
diff --git a/firmware/export/pp5002.h b/firmware/export/pp5002.h index 3104fde6f8..807c2e2708 100644 --- a/firmware/export/pp5002.h +++ b/firmware/export/pp5002.h | |||
@@ -95,6 +95,8 @@ | |||
95 | #define GPIO_MASK (1 << GPIO_IRQ) | 95 | #define GPIO_MASK (1 << GPIO_IRQ) |
96 | #define SER0_MASK (1 << SER0_IRQ) | 96 | #define SER0_MASK (1 << SER0_IRQ) |
97 | #define SER1_MASK (1 << SER1_IRQ) | 97 | #define SER1_MASK (1 << SER1_IRQ) |
98 | #define DMA_OUT_MASK (1 << DMA_OUT_IRQ) | ||
99 | |||
98 | 100 | ||
99 | #define TIMER1_VAL (*(volatile unsigned long *)(0xcf001104)) | 101 | #define TIMER1_VAL (*(volatile unsigned long *)(0xcf001104)) |
100 | #define TIMER1_CFG (*(volatile unsigned long *)(0xcf001100)) | 102 | #define TIMER1_CFG (*(volatile unsigned long *)(0xcf001100)) |
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index af642e4d43..6d60c40fdb 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c | |||
@@ -333,8 +333,6 @@ static int pcm_freq = 0x6; /* 44.1 is default */ | |||
333 | unsigned short* p IBSS_ATTR; | 333 | unsigned short* p IBSS_ATTR; |
334 | long p_size IBSS_ATTR; | 334 | long p_size IBSS_ATTR; |
335 | 335 | ||
336 | #define PP5002_DMA_OUT_MASK (1 << DMA_OUT_IRQ) | ||
337 | |||
338 | static void dma_start(const void *addr, size_t size) | 336 | static void dma_start(const void *addr, size_t size) |
339 | { | 337 | { |
340 | p=(unsigned short*)addr; | 338 | p=(unsigned short*)addr; |
@@ -348,8 +346,8 @@ static void dma_start(const void *addr, size_t size) | |||
348 | outl(I2S_MASK, 0x60004024); | 346 | outl(I2S_MASK, 0x60004024); |
349 | #else | 347 | #else |
350 | /* setup I2S interrupt for FIQ */ | 348 | /* setup I2S interrupt for FIQ */ |
351 | outl(inl(0xcf00103c) | PP5002_DMA_OUT_MASK, 0xcf00103c); | 349 | outl(inl(0xcf00103c) | DMA_OUT_MASK, 0xcf00103c); |
352 | outl(PP5002_DMA_OUT_MASK, 0xcf001034); | 350 | outl(DMA_OUT_MASK, 0xcf001034); |
353 | #endif | 351 | #endif |
354 | 352 | ||
355 | /* Clear the FIQ disable bit in cpsr_c */ | 353 | /* Clear the FIQ disable bit in cpsr_c */ |
@@ -370,7 +368,7 @@ static void dma_start(const void *addr, size_t size) | |||
370 | #if CONFIG_CPU == PP5020 | 368 | #if CONFIG_CPU == PP5020 |
371 | IISCONFIG |= 0x2; | 369 | IISCONFIG |= 0x2; |
372 | #elif CONFIG_CPU == PP5002 | 370 | #elif CONFIG_CPU == PP5002 |
373 | IISFIFO_CFG &= ~(1<<9); | 371 | IISFIFO_CFG |= (1<<9); |
374 | #endif | 372 | #endif |
375 | return; | 373 | return; |
376 | } | 374 | } |
@@ -483,7 +481,7 @@ void pcm_play_pause(bool play) | |||
483 | #if CONFIG_CPU == PP5020 | 481 | #if CONFIG_CPU == PP5020 |
484 | IISCONFIG |= 0x2; | 482 | IISCONFIG |= 0x2; |
485 | #elif CONFIG_CPU == PP5002 | 483 | #elif CONFIG_CPU == PP5002 |
486 | IISFIFO_CFG &= ~(1<<9); | 484 | IISFIFO_CFG |= (1<<9); |
487 | #endif | 485 | #endif |
488 | return; | 486 | return; |
489 | } | 487 | } |
@@ -643,7 +641,7 @@ void fiq(void) | |||
643 | #if CONFIG_CPU == PP5020 | 641 | #if CONFIG_CPU == PP5020 |
644 | IISCONFIG |= 0x2; | 642 | IISCONFIG |= 0x2; |
645 | #elif CONFIG_CPU == PP5002 | 643 | #elif CONFIG_CPU == PP5002 |
646 | IISFIFO_CFG &= ~(1<<9); | 644 | IISFIFO_CFG |= (1<<9); |
647 | #endif | 645 | #endif |
648 | return; | 646 | return; |
649 | } | 647 | } |