summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/export/config-gigabeat.h3
-rw-r--r--firmware/export/system.h10
-rw-r--r--firmware/target/arm/gigabeat/meg-fx/system-meg-fx.c22
3 files changed, 33 insertions, 2 deletions
diff --git a/firmware/export/config-gigabeat.h b/firmware/export/config-gigabeat.h
index a12322ef4c..6e22e8d7ab 100644
--- a/firmware/export/config-gigabeat.h
+++ b/firmware/export/config-gigabeat.h
@@ -124,10 +124,9 @@
124#define USB_GIGABEAT_STYLE 124#define USB_GIGABEAT_STYLE
125 125
126#define HAVE_HEADPHONE_DETECTION 126#define HAVE_HEADPHONE_DETECTION
127
127/* Define this if you have adjustable CPU frequency */ 128/* Define this if you have adjustable CPU frequency */
128#if 0 /* TODO */
129#define HAVE_ADJUSTABLE_CPU_FREQ 129#define HAVE_ADJUSTABLE_CPU_FREQ
130#endif
131 130
132#define BOOTFILE_EXT "gigabeat" 131#define BOOTFILE_EXT "gigabeat"
133#define BOOTFILE "rockbox." BOOTFILE_EXT 132#define BOOTFILE "rockbox." BOOTFILE_EXT
diff --git a/firmware/export/system.h b/firmware/export/system.h
index 86bbefb28f..688cf9bc15 100644
--- a/firmware/export/system.h
+++ b/firmware/export/system.h
@@ -273,6 +273,14 @@ static inline unsigned long swap32(unsigned long value)
273 273
274/* TODO: Implement set_irq_level and check CPU frequencies */ 274/* TODO: Implement set_irq_level and check CPU frequencies */
275 275
276#if CONFIG_CPU == S3C2440
277
278#define CPUFREQ_DEFAULT 98784000
279#define CPUFREQ_NORMAL 98784000
280#define CPUFREQ_MAX 296352000
281
282#else
283
276#define CPUFREQ_DEFAULT_MULT 8 284#define CPUFREQ_DEFAULT_MULT 8
277#define CPUFREQ_DEFAULT 24000000 285#define CPUFREQ_DEFAULT 24000000
278#define CPUFREQ_NORMAL_MULT 10 286#define CPUFREQ_NORMAL_MULT 10
@@ -280,6 +288,8 @@ static inline unsigned long swap32(unsigned long value)
280#define CPUFREQ_MAX_MULT 25 288#define CPUFREQ_MAX_MULT 25
281#define CPUFREQ_MAX 75000000 289#define CPUFREQ_MAX 75000000
282 290
291#endif
292
283static inline unsigned short swap16(unsigned short value) 293static inline unsigned short swap16(unsigned short value)
284 /* 294 /*
285 result[15..8] = value[ 7..0]; 295 result[15..8] = value[ 7..0];
diff --git a/firmware/target/arm/gigabeat/meg-fx/system-meg-fx.c b/firmware/target/arm/gigabeat/meg-fx/system-meg-fx.c
index b922daaaa0..0cb16668f3 100644
--- a/firmware/target/arm/gigabeat/meg-fx/system-meg-fx.c
+++ b/firmware/target/arm/gigabeat/meg-fx/system-meg-fx.c
@@ -68,4 +68,26 @@ void system_init(void)
68 68
69} 69}
70 70
71void set_cpu_frequency(long frequency)
72{
73 if (frequency == CPUFREQ_MAX)
74 {
75 /* FCLK: 300MHz, HCLK: 100MHz, PCLK: 50MHz */
76 /* MDIV: 97, PDIV: 1, SDIV: 2 */
77 /* HDIV: 3, PDIV: 1 */
78
79 MPLLCON = (97 << 12) | (1 << 4) | 2;
80 CLKDIVN = (3 << 1) | 1;
81 FREQ = CPUFREQ_MAX;
82 }
83 else
84 {
85 /* FCLK: 200MHz, HCLK: 100MHz, PCLK: 50MHz */
86 /* MDIV: 62, PDIV: 1, SDIV: 2 */
87 /* HDIV: 1, PDIV: 1 */
71 88
89 MPLLCON = (62 << 12) | (1 << 4) | 3;
90 CLKDIVN = (0 << 1) | 1;
91 FREQ = CPUFREQ_NORMAL;
92 }
93}