summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Purchase <shotofadds@rockbox.org>2008-04-21 20:16:18 +0000
committerRob Purchase <shotofadds@rockbox.org>2008-04-21 20:16:18 +0000
commitfd773cbda68fe0f0edc89507a57ddb6f500fd681 (patch)
treeb24d89d188c88c92bd1dae536f86d6eb0f10fe62
parent5d7d410a47f0c046a8250e4f64a61e80b2af87c2 (diff)
downloadrockbox-fd773cbda68fe0f0edc89507a57ddb6f500fd681.tar.gz
rockbox-fd773cbda68fe0f0edc89507a57ddb6f500fd681.zip
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
-rw-r--r--firmware/SOURCES2
-rw-r--r--firmware/export/tcc780x.h17
-rw-r--r--firmware/target/arm/tcc780x/pcm-tcc780x.c (renamed from firmware/target/arm/tcc780x/cowond2/pcm-cowond2.c)22
-rw-r--r--firmware/target/arm/tcc780x/system-tcc780x.c9
-rw-r--r--firmware/target/arm/wmcodec-telechips.c1
5 files changed, 30 insertions, 21 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index 6acf81d76b..bf4fb86af4 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -925,7 +925,7 @@ target/arm/tcc780x/kernel-tcc780x.c
925target/arm/tcc780x/timer-tcc780x.c 925target/arm/tcc780x/timer-tcc780x.c
926target/arm/wmcodec-telechips.c 926target/arm/wmcodec-telechips.c
927target/arm/tcc780x/debug-tcc780x.c 927target/arm/tcc780x/debug-tcc780x.c
928target/arm/tcc780x/cowond2/pcm-cowond2.c 928target/arm/tcc780x/pcm-tcc780x.c
929#endif /* BOOTLOADER */ 929#endif /* BOOTLOADER */
930#endif /* SIMULATOR */ 930#endif /* SIMULATOR */
931#endif /* COWON_D2 */ 931#endif /* COWON_D2 */
diff --git a/firmware/export/tcc780x.h b/firmware/export/tcc780x.h
index cff0a2e576..d88d05c417 100644
--- a/firmware/export/tcc780x.h
+++ b/firmware/export/tcc780x.h
@@ -73,7 +73,7 @@
73#define PCLKCFG10 (*(volatile unsigned long *)0xF3000048) 73#define PCLKCFG10 (*(volatile unsigned long *)0xF3000048)
74#define PCLKCFG11 (*(volatile unsigned long *)0xF300004C) 74#define PCLKCFG11 (*(volatile unsigned long *)0xF300004C)
75#define PCLK_ADC (*(volatile unsigned long *)0xF3000050) 75#define PCLK_ADC (*(volatile unsigned long *)0xF3000050)
76#define PCLKCFG13 (*(volatile unsigned long *)0xF3000054) 76#define PCLK_DAI (*(volatile unsigned long *)0xF3000054)
77#define PCLKCFG14 (*(volatile unsigned long *)0xF3000058) 77#define PCLKCFG14 (*(volatile unsigned long *)0xF3000058)
78#define PCLK_RFREQ (*(volatile unsigned long *)0xF300005C) 78#define PCLK_RFREQ (*(volatile unsigned long *)0xF300005C)
79#define PCLKCFG16 (*(volatile unsigned long *)0xF3000060) 79#define PCLKCFG16 (*(volatile unsigned long *)0xF3000060)
@@ -171,6 +171,21 @@
171#define SDCFG1 (*(volatile unsigned long *)0xF1001000) 171#define SDCFG1 (*(volatile unsigned long *)0xF1001000)
172#define MCFG1 (*(volatile unsigned long *)0xF1001008) 172#define MCFG1 (*(volatile unsigned long *)0xF1001008)
173 173
174/* DAI */
175
176#define DADO_L0 (*(volatile unsigned long *)0xF0059020)
177#define DADO_R0 (*(volatile unsigned long *)0xF0059024)
178#define DADO_L1 (*(volatile unsigned long *)0xF0059028)
179#define DADO_R1 (*(volatile unsigned long *)0xF005902c)
180#define DADO_L2 (*(volatile unsigned long *)0xF0059030)
181#define DADO_R2 (*(volatile unsigned long *)0xF0059034)
182#define DADO_L3 (*(volatile unsigned long *)0xF0059038)
183#define DADO_R3 (*(volatile unsigned long *)0xF005903c)
184#define DADO_L(_x_) (*(volatile unsigned int *)(0xF0059020+8*(_x_)))
185#define DADO_R(_x_) (*(volatile unsigned int *)(0xF0059024+8*(_x_)))
186#define DAMR (*(volatile unsigned long *)0xF0059040)
187#define DAVC (*(volatile unsigned long *)0xF0059044)
188
174/* Misc */ 189/* Misc */
175 190
176#define ECFG0 (*(volatile unsigned long *)0xF300500C) 191#define ECFG0 (*(volatile unsigned long *)0xF300500C)
diff --git a/firmware/target/arm/tcc780x/cowond2/pcm-cowond2.c b/firmware/target/arm/tcc780x/pcm-tcc780x.c
index 2d50f042d9..a9312749c8 100644
--- a/firmware/target/arm/tcc780x/cowond2/pcm-cowond2.c
+++ b/firmware/target/arm/tcc780x/pcm-tcc780x.c
@@ -25,62 +25,62 @@
25 25
26void pcm_postinit(void) 26void pcm_postinit(void)
27{ 27{
28 #warning function not implemented
29} 28}
30 29
31const void * pcm_play_dma_get_peak_buffer(int *count) 30const void * pcm_play_dma_get_peak_buffer(int *count)
32{ 31{
33 #warning function not implemented
34 (void) count; 32 (void) count;
35 return 0; 33 return 0;
36} 34}
37 35
38void pcm_play_dma_init(void) 36void pcm_play_dma_init(void)
39{ 37{
40 #warning function not implemented
41} 38}
42 39
43void pcm_apply_settings(void) 40void pcm_apply_settings(void)
44{ 41{
45 #warning function not implemented
46} 42}
47 43
48void pcm_set_frequency(unsigned int frequency) 44void pcm_set_frequency(unsigned int frequency)
49{ 45{
50 #warning function not implemented
51 (void) frequency; 46 (void) frequency;
52} 47}
53 48
54void pcm_play_dma_start(const void *addr, size_t size) 49void pcm_play_dma_start(const void *addr, size_t size)
55{ 50{
56 #warning function not implemented
57 (void) addr; 51 (void) addr;
58 (void) size; 52 (void) size;
59} 53}
60 54
61void pcm_play_dma_stop(void) 55void pcm_play_dma_stop(void)
62{ 56{
63 #warning function not implemented
64} 57}
65 58
66void pcm_play_lock(void) 59void pcm_play_lock(void)
67{ 60{
68 #warning function not implemented
69} 61}
70 62
71void pcm_play_unlock(void) 63void pcm_play_unlock(void)
72{ 64{
73 #warning function not implemented
74} 65}
75 66
76void pcm_play_dma_pause(bool pause) 67void pcm_play_dma_pause(bool pause)
77{ 68{
78 #warning function not implemented
79 (void) pause; 69 (void) pause;
80} 70}
81 71
82size_t pcm_get_bytes_waiting(void) 72size_t pcm_get_bytes_waiting(void)
83{ 73{
84 #warning function not implemented
85 return 0; 74 return 0;
86} 75}
76
77void fiq_handler(void)
78{
79 /* Clear FIQ status */
80 CREQ = DAI_TX_IRQ_MASK | DAI_RX_IRQ_MASK;
81
82 /* Return from FIQ */
83 asm volatile (
84 "subs pc, lr, #4 \r\n"
85 );
86}
diff --git a/firmware/target/arm/tcc780x/system-tcc780x.c b/firmware/target/arm/tcc780x/system-tcc780x.c
index c109b8ddda..54cd3ffcb6 100644
--- a/firmware/target/arm/tcc780x/system-tcc780x.c
+++ b/firmware/target/arm/tcc780x/system-tcc780x.c
@@ -142,12 +142,6 @@ void irq_handler(void)
142 "subs pc, lr, #4 \n"); /* Return from IRQ */ 142 "subs pc, lr, #4 \n"); /* Return from IRQ */
143} 143}
144 144
145void fiq_handler(void)
146{
147 asm volatile (
148 "subs pc, lr, #4 \r\n"
149 );
150}
151#endif /* !defined(BOOTLOADER) */ 145#endif /* !defined(BOOTLOADER) */
152 146
153 147
@@ -254,7 +248,8 @@ void system_init(void)
254 248
255#if !defined(BOOTLOADER) 249#if !defined(BOOTLOADER)
256 250
257 IRQSEL = -1; /* set all interrupts to be IRQs not FIQs */ 251 /* Set DAI interrupts as FIQ, all others are IRQ. */
252 IRQSEL = ~(DAI_RX_IRQ_MASK | DAI_TX_IRQ_MASK);
258 253
259 POL = 0x200108; /* IRQs 3,8,21 active low (as OF) */ 254 POL = 0x200108; /* IRQs 3,8,21 active low (as OF) */
260 MODE = 0x20ce07c0; /* IRQs 6-10,17-19,22-23,29 level-triggered (as OF) */ 255 MODE = 0x20ce07c0; /* IRQs 6-10,17-19,22-23,29 level-triggered (as OF) */
diff --git a/firmware/target/arm/wmcodec-telechips.c b/firmware/target/arm/wmcodec-telechips.c
index 851158ca8d..0e42df9c20 100644
--- a/firmware/target/arm/wmcodec-telechips.c
+++ b/firmware/target/arm/wmcodec-telechips.c
@@ -38,7 +38,6 @@
38 38
39void audiohw_init(void) 39void audiohw_init(void)
40{ 40{
41 #warning function not implemented
42} 41}
43 42
44void wmcodec_write(int reg, int data) 43void wmcodec_write(int reg, int data)