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
This commit is contained in:
Dave Chapman 2006-02-26 20:29:29 +00:00
parent ecdadcbaed
commit a1e2a52e3e
3 changed files with 15 additions and 7 deletions

View file

@ -348,9 +348,17 @@ prefetch_abort_handler:
b UIE
fiq_handler:
#if CONFIG_CPU == PP5020
@ Branch straight to FIQ handler in pcm_playback.c. This also handles the
@ the correct return sequence.
ldr pc, =fiq
#else
stmfd sp!, {r0-r3, r12, lr}
mov lr, pc
ldr pc, =fiq
ldmfd sp!, {r0-r3, r12, lr}
subs pc, lr, #4
#endif
data_abort_handler:
sub r0, lr, #8

View file

@ -95,6 +95,8 @@
#define GPIO_MASK (1 << GPIO_IRQ)
#define SER0_MASK (1 << SER0_IRQ)
#define SER1_MASK (1 << SER1_IRQ)
#define DMA_OUT_MASK (1 << DMA_OUT_IRQ)
#define TIMER1_VAL (*(volatile unsigned long *)(0xcf001104))
#define TIMER1_CFG (*(volatile unsigned long *)(0xcf001100))

View file

@ -333,8 +333,6 @@ static int pcm_freq = 0x6; /* 44.1 is default */
unsigned short* p IBSS_ATTR;
long p_size IBSS_ATTR;
#define PP5002_DMA_OUT_MASK (1 << DMA_OUT_IRQ)
static void dma_start(const void *addr, size_t size)
{
p=(unsigned short*)addr;
@ -348,8 +346,8 @@ static void dma_start(const void *addr, size_t size)
outl(I2S_MASK, 0x60004024);
#else
/* setup I2S interrupt for FIQ */
outl(inl(0xcf00103c) | PP5002_DMA_OUT_MASK, 0xcf00103c);
outl(PP5002_DMA_OUT_MASK, 0xcf001034);
outl(inl(0xcf00103c) | DMA_OUT_MASK, 0xcf00103c);
outl(DMA_OUT_MASK, 0xcf001034);
#endif
/* Clear the FIQ disable bit in cpsr_c */
@ -370,7 +368,7 @@ static void dma_start(const void *addr, size_t size)
#if CONFIG_CPU == PP5020
IISCONFIG |= 0x2;
#elif CONFIG_CPU == PP5002
IISFIFO_CFG &= ~(1<<9);
IISFIFO_CFG |= (1<<9);
#endif
return;
}
@ -483,7 +481,7 @@ void pcm_play_pause(bool play)
#if CONFIG_CPU == PP5020
IISCONFIG |= 0x2;
#elif CONFIG_CPU == PP5002
IISFIFO_CFG &= ~(1<<9);
IISFIFO_CFG |= (1<<9);
#endif
return;
}
@ -643,7 +641,7 @@ void fiq(void)
#if CONFIG_CPU == PP5020
IISCONFIG |= 0x2;
#elif CONFIG_CPU == PP5002
IISFIFO_CFG &= ~(1<<9);
IISFIFO_CFG |= (1<<9);
#endif
return;
}