summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c
diff options
context:
space:
mode:
authorMarcoen Hirschberg <marcoen@gmail.com>2007-04-18 12:22:27 +0000
committerMarcoen Hirschberg <marcoen@gmail.com>2007-04-18 12:22:27 +0000
commitf44f961812c059b69df19ac5bd828986ba10513f (patch)
tree9b19de69126ed041992f31a7c690db841a36af6f /firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c
parentc3dcc87aa494934943769b70fd752af1271d196a (diff)
downloadrockbox-f44f961812c059b69df19ac5bd828986ba10513f.tar.gz
rockbox-f44f961812c059b69df19ac5bd828986ba10513f.zip
move the Gigabeat from gigabeat/meg-fx to s3c2440/gigabeat-fx to avoid problems with possible ports in the future: Gigabeat S/V (i.mx31 based) and Kenwood HD20GA7/HD20GA9 (s3c2440 based)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13200 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c')
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c
new file mode 100644
index 0000000000..b7e59e66ea
--- /dev/null
+++ b/firmware/target/arm/s3c2440/gigabeat-fx/system-meg-fx.c
@@ -0,0 +1,96 @@
1#include "kernel.h"
2#include "system.h"
3#include "panic.h"
4
5#include "lcd.h"
6#include <stdio.h>
7
8const int TIMER4_MASK = (1 << 14);
9const int LCD_MASK = (1 << 16);
10const int DMA0_MASK = (1 << 17);
11const int DMA1_MASK = (1 << 18);
12const int DMA2_MASK = (1 << 19);
13const int DMA3_MASK = (1 << 20);
14
15int system_memory_guard(int newmode)
16{
17 (void)newmode;
18 return 0;
19}
20
21extern void timer4(void);
22extern void dma0(void);
23extern void dma1(void);
24extern void dma3(void);
25
26void irq(void)
27{
28 int intpending = INTPND;
29
30 SRCPND = intpending; /* Clear this interrupt. */
31 INTPND = intpending; /* Clear this interrupt. */
32
33 /* Timer 4 */
34 if ((intpending & TIMER4_MASK) != 0)
35 timer4();
36 else if ((intpending & DMA0_MASK) != 0)
37 dma0();
38 else
39 {
40 /* unexpected interrupt */
41 }
42}
43
44void system_reboot(void)
45{
46 WTCON = 0;
47 WTCNT = WTDAT = 1 ;
48 WTCON = 0x21;
49 for(;;)
50 ;
51}
52
53void system_init(void)
54{
55 /* Turn off un-needed devices */
56
57 /* Turn off all of the UARTS */
58 CLKCON &= ~( (1<<10) | (1<<11) |(1<<12) );
59
60 /* Turn off AC97 and Camera */
61 CLKCON &= ~( (1<<19) | (1<<20) );
62
63 /* Turn off USB host */
64 CLKCON &= ~(1 << 6);
65
66 /* Turn off NAND flash controller */
67 CLKCON &= ~(1 << 4);
68
69}
70
71
72#ifdef HAVE_ADJUSTABLE_CPU_FREQ
73
74void set_cpu_frequency(long frequency)
75{
76 if (frequency == CPUFREQ_MAX)
77 {
78 asm volatile("mov r0, #0\n"
79 "mrc p15, 0, r0, c1, c0, 0\n"
80 "orr r0, r0, #3<<30\n" /* set to Asynchronous mode*/
81 "mcr p15, 0, r0, c1, c0, 0" : : : "r0");
82
83 FREQ = CPUFREQ_MAX;
84 }
85 else
86 {
87 asm volatile("mov r0, #0\n"
88 "mrc p15, 0, r0, c1, c0, 0\n"
89 "bic r0, r0, #3<<30\n" /* set to FastBus mode*/
90 "mcr p15, 0, r0, c1, c0, 0" : : : "r0");
91
92 FREQ = CPUFREQ_NORMAL;
93 }
94}
95
96#endif