1
0
Fork 0
forked from len0rd/rockbox

A few preparations for the D2 PCM driver: move driver up to TCC780x level, move FIQ handler into PCM driver, add some new register defines, and remove those goddamn warnings.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17209 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Rob Purchase 2008-04-21 20:16:18 +00:00
parent 5d7d410a47
commit fd773cbda6
5 changed files with 30 additions and 21 deletions

View file

@ -925,7 +925,7 @@ target/arm/tcc780x/kernel-tcc780x.c
target/arm/tcc780x/timer-tcc780x.c target/arm/tcc780x/timer-tcc780x.c
target/arm/wmcodec-telechips.c target/arm/wmcodec-telechips.c
target/arm/tcc780x/debug-tcc780x.c target/arm/tcc780x/debug-tcc780x.c
target/arm/tcc780x/cowond2/pcm-cowond2.c target/arm/tcc780x/pcm-tcc780x.c
#endif /* BOOTLOADER */ #endif /* BOOTLOADER */
#endif /* SIMULATOR */ #endif /* SIMULATOR */
#endif /* COWON_D2 */ #endif /* COWON_D2 */

View file

@ -73,7 +73,7 @@
#define PCLKCFG10 (*(volatile unsigned long *)0xF3000048) #define PCLKCFG10 (*(volatile unsigned long *)0xF3000048)
#define PCLKCFG11 (*(volatile unsigned long *)0xF300004C) #define PCLKCFG11 (*(volatile unsigned long *)0xF300004C)
#define PCLK_ADC (*(volatile unsigned long *)0xF3000050) #define PCLK_ADC (*(volatile unsigned long *)0xF3000050)
#define PCLKCFG13 (*(volatile unsigned long *)0xF3000054) #define PCLK_DAI (*(volatile unsigned long *)0xF3000054)
#define PCLKCFG14 (*(volatile unsigned long *)0xF3000058) #define PCLKCFG14 (*(volatile unsigned long *)0xF3000058)
#define PCLK_RFREQ (*(volatile unsigned long *)0xF300005C) #define PCLK_RFREQ (*(volatile unsigned long *)0xF300005C)
#define PCLKCFG16 (*(volatile unsigned long *)0xF3000060) #define PCLKCFG16 (*(volatile unsigned long *)0xF3000060)
@ -171,6 +171,21 @@
#define SDCFG1 (*(volatile unsigned long *)0xF1001000) #define SDCFG1 (*(volatile unsigned long *)0xF1001000)
#define MCFG1 (*(volatile unsigned long *)0xF1001008) #define MCFG1 (*(volatile unsigned long *)0xF1001008)
/* DAI */
#define DADO_L0 (*(volatile unsigned long *)0xF0059020)
#define DADO_R0 (*(volatile unsigned long *)0xF0059024)
#define DADO_L1 (*(volatile unsigned long *)0xF0059028)
#define DADO_R1 (*(volatile unsigned long *)0xF005902c)
#define DADO_L2 (*(volatile unsigned long *)0xF0059030)
#define DADO_R2 (*(volatile unsigned long *)0xF0059034)
#define DADO_L3 (*(volatile unsigned long *)0xF0059038)
#define DADO_R3 (*(volatile unsigned long *)0xF005903c)
#define DADO_L(_x_) (*(volatile unsigned int *)(0xF0059020+8*(_x_)))
#define DADO_R(_x_) (*(volatile unsigned int *)(0xF0059024+8*(_x_)))
#define DAMR (*(volatile unsigned long *)0xF0059040)
#define DAVC (*(volatile unsigned long *)0xF0059044)
/* Misc */ /* Misc */
#define ECFG0 (*(volatile unsigned long *)0xF300500C) #define ECFG0 (*(volatile unsigned long *)0xF300500C)

View file

@ -25,62 +25,62 @@
void pcm_postinit(void) void pcm_postinit(void)
{ {
#warning function not implemented
} }
const void * pcm_play_dma_get_peak_buffer(int *count) const void * pcm_play_dma_get_peak_buffer(int *count)
{ {
#warning function not implemented
(void) count; (void) count;
return 0; return 0;
} }
void pcm_play_dma_init(void) void pcm_play_dma_init(void)
{ {
#warning function not implemented
} }
void pcm_apply_settings(void) void pcm_apply_settings(void)
{ {
#warning function not implemented
} }
void pcm_set_frequency(unsigned int frequency) void pcm_set_frequency(unsigned int frequency)
{ {
#warning function not implemented
(void) frequency; (void) frequency;
} }
void pcm_play_dma_start(const void *addr, size_t size) void pcm_play_dma_start(const void *addr, size_t size)
{ {
#warning function not implemented
(void) addr; (void) addr;
(void) size; (void) size;
} }
void pcm_play_dma_stop(void) void pcm_play_dma_stop(void)
{ {
#warning function not implemented
} }
void pcm_play_lock(void) void pcm_play_lock(void)
{ {
#warning function not implemented
} }
void pcm_play_unlock(void) void pcm_play_unlock(void)
{ {
#warning function not implemented
} }
void pcm_play_dma_pause(bool pause) void pcm_play_dma_pause(bool pause)
{ {
#warning function not implemented
(void) pause; (void) pause;
} }
size_t pcm_get_bytes_waiting(void) size_t pcm_get_bytes_waiting(void)
{ {
#warning function not implemented
return 0; return 0;
} }
void fiq_handler(void)
{
/* Clear FIQ status */
CREQ = DAI_TX_IRQ_MASK | DAI_RX_IRQ_MASK;
/* Return from FIQ */
asm volatile (
"subs pc, lr, #4 \r\n"
);
}

View file

@ -142,12 +142,6 @@ void irq_handler(void)
"subs pc, lr, #4 \n"); /* Return from IRQ */ "subs pc, lr, #4 \n"); /* Return from IRQ */
} }
void fiq_handler(void)
{
asm volatile (
"subs pc, lr, #4 \r\n"
);
}
#endif /* !defined(BOOTLOADER) */ #endif /* !defined(BOOTLOADER) */
@ -254,7 +248,8 @@ void system_init(void)
#if !defined(BOOTLOADER) #if !defined(BOOTLOADER)
IRQSEL = -1; /* set all interrupts to be IRQs not FIQs */ /* Set DAI interrupts as FIQ, all others are IRQ. */
IRQSEL = ~(DAI_RX_IRQ_MASK | DAI_TX_IRQ_MASK);
POL = 0x200108; /* IRQs 3,8,21 active low (as OF) */ POL = 0x200108; /* IRQs 3,8,21 active low (as OF) */
MODE = 0x20ce07c0; /* IRQs 6-10,17-19,22-23,29 level-triggered (as OF) */ MODE = 0x20ce07c0; /* IRQs 6-10,17-19,22-23,29 level-triggered (as OF) */

View file

@ -38,7 +38,6 @@
void audiohw_init(void) void audiohw_init(void)
{ {
#warning function not implemented
} }
void wmcodec_write(int reg, int data) void wmcodec_write(int reg, int data)