summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8702/system-s5l8702.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8702/system-s5l8702.c')
-rw-r--r--firmware/target/arm/s5l8702/system-s5l8702.c48
1 files changed, 4 insertions, 44 deletions
diff --git a/firmware/target/arm/s5l8702/system-s5l8702.c b/firmware/target/arm/s5l8702/system-s5l8702.c
index f93a6a70ec..6a06c29694 100644
--- a/firmware/target/arm/s5l8702/system-s5l8702.c
+++ b/firmware/target/arm/s5l8702/system-s5l8702.c
@@ -25,6 +25,7 @@
25#include "system-target.h" 25#include "system-target.h"
26#include "pmu-target.h" 26#include "pmu-target.h"
27#include "gpio-s5l8702.h" 27#include "gpio-s5l8702.h"
28#include "dma-s5l8702.h"
28 29
29#define default_interrupt(name) \ 30#define default_interrupt(name) \
30 extern __attribute__((weak,alias("UIRQ"))) void name (void) 31 extern __attribute__((weak,alias("UIRQ"))) void name (void)
@@ -55,22 +56,8 @@ default_interrupt(INT_IRQ12);
55default_interrupt(INT_IRQ13); 56default_interrupt(INT_IRQ13);
56default_interrupt(INT_IRQ14); 57default_interrupt(INT_IRQ14);
57default_interrupt(INT_IRQ15); 58default_interrupt(INT_IRQ15);
58default_interrupt(INT_DMAC0C0); 59default_interrupt(INT_DMAC0);
59default_interrupt(INT_DMAC0C1); 60default_interrupt(INT_DMAC1);
60default_interrupt(INT_DMAC0C2);
61default_interrupt(INT_DMAC0C3);
62default_interrupt(INT_DMAC0C4);
63default_interrupt(INT_DMAC0C5);
64default_interrupt(INT_DMAC0C6);
65default_interrupt(INT_DMAC0C7);
66default_interrupt(INT_DMAC1C0);
67default_interrupt(INT_DMAC1C1);
68default_interrupt(INT_DMAC1C2);
69default_interrupt(INT_DMAC1C3);
70default_interrupt(INT_DMAC1C4);
71default_interrupt(INT_DMAC1C5);
72default_interrupt(INT_DMAC1C6);
73default_interrupt(INT_DMAC1C7);
74default_interrupt(INT_IRQ18); 61default_interrupt(INT_IRQ18);
75default_interrupt(INT_USB_FUNC); 62default_interrupt(INT_USB_FUNC);
76default_interrupt(INT_IRQ20); 63default_interrupt(INT_IRQ20);
@@ -141,34 +128,6 @@ void INT_TIMER32()
141 if ((THCON >> 12) & 0x7 & tstat) INT_TIMERH(); 128 if ((THCON >> 12) & 0x7 & tstat) INT_TIMERH();
142} 129}
143 130
144void INT_DMAC0(void) ICODE_ATTR;
145void INT_DMAC0()
146{
147 uint32_t intsts = DMAC0INTSTS;
148 if (intsts & 1) INT_DMAC0C0();
149 if (intsts & 2) INT_DMAC0C1();
150 if (intsts & 4) INT_DMAC0C2();
151 if (intsts & 8) INT_DMAC0C3();
152 if (intsts & 0x10) INT_DMAC0C4();
153 if (intsts & 0x20) INT_DMAC0C5();
154 if (intsts & 0x40) INT_DMAC0C6();
155 if (intsts & 0x80) INT_DMAC0C7();
156}
157
158void INT_DMAC1(void) ICODE_ATTR;
159void INT_DMAC1()
160{
161 uint32_t intsts = DMAC1INTSTS;
162 if (intsts & 1) INT_DMAC1C0();
163 if (intsts & 2) INT_DMAC1C1();
164 if (intsts & 4) INT_DMAC1C2();
165 if (intsts & 8) INT_DMAC1C3();
166 if (intsts & 0x10) INT_DMAC1C4();
167 if (intsts & 0x20) INT_DMAC1C5();
168 if (intsts & 0x40) INT_DMAC1C6();
169 if (intsts & 0x80) INT_DMAC1C7();
170}
171
172static void (* const irqvector[])(void) = 131static void (* const irqvector[])(void) =
173{ 132{
174 INT_EXT0,INT_EXT1,INT_EXT2,INT_EXT3,INT_IRQ4,INT_IRQ5,INT_IRQ6,INT_TIMER32, 133 INT_EXT0,INT_EXT1,INT_EXT2,INT_EXT3,INT_IRQ4,INT_IRQ5,INT_IRQ6,INT_TIMER32,
@@ -225,6 +184,7 @@ void system_init(void)
225{ 184{
226 /*gpio_init();*/ 185 /*gpio_init();*/
227 pmu_init(); 186 pmu_init();
187 dma_init();
228 VIC0INTENABLE = 1 << IRQ_WHEEL; 188 VIC0INTENABLE = 1 << IRQ_WHEEL;
229 VIC0INTENABLE = 1 << IRQ_ATA; 189 VIC0INTENABLE = 1 << IRQ_ATA;
230 VIC1INTENABLE = 1 << (IRQ_MMC - 32); 190 VIC1INTENABLE = 1 << (IRQ_MMC - 32);