diff options
author | Marcoen Hirschberg <marcoen@gmail.com> | 2007-01-16 15:49:29 +0000 |
---|---|---|
committer | Marcoen Hirschberg <marcoen@gmail.com> | 2007-01-16 15:49:29 +0000 |
commit | 6309eabc6413acaa91a8e3dd94d3cb382a38dc14 (patch) | |
tree | 3a9a097d2d518bb348db7e78c58f808fdaba37b2 /firmware | |
parent | 0fedaa205c78858d5b043f9fe432b5ba62b13fbe (diff) | |
download | rockbox-6309eabc6413acaa91a8e3dd94d3cb382a38dc14.tar.gz rockbox-6309eabc6413acaa91a8e3dd94d3cb382a38dc14.zip |
add cpu frequency scaling to the gigabeat. default/normal: 100MHz, boosted: 300MHz
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12023 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/config-gigabeat.h | 3 | ||||
-rw-r--r-- | firmware/export/system.h | 10 | ||||
-rw-r--r-- | firmware/target/arm/gigabeat/meg-fx/system-meg-fx.c | 22 |
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 | |||
283 | static inline unsigned short swap16(unsigned short value) | 293 | static 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 | ||
71 | void 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 | } | ||