diff options
Diffstat (limited to 'firmware/target/mips/ingenic_x1000/fiiom3k')
-rw-r--r-- | firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c b/firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c index 0ebe11e24d..7f4441c109 100644 --- a/firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c +++ b/firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "spl-x1000.h" | 22 | #include "spl-x1000.h" |
23 | #include "gpio-x1000.h" | 23 | #include "gpio-x1000.h" |
24 | #include "nand-x1000.h" | 24 | #include "clk-x1000.h" |
25 | #include "system.h" | 25 | #include "system.h" |
26 | #include <string.h> | 26 | #include <string.h> |
27 | 27 | ||
@@ -130,3 +130,36 @@ int spl_get_boot_option(void) | |||
130 | /* Default is to boot Rockbox */ | 130 | /* Default is to boot Rockbox */ |
131 | return SPL_BOOTOPT_ROCKBOX; | 131 | return SPL_BOOTOPT_ROCKBOX; |
132 | } | 132 | } |
133 | |||
134 | void spl_handle_pre_boot(int bootopt) | ||
135 | { | ||
136 | /* Move system to EXCLK so we can manipulate the PLLs */ | ||
137 | clk_set_ccr_mux(CLKMUX_SCLK_A(EXCLK) | CLKMUX_CPU(SCLK_A) | | ||
138 | CLKMUX_AHB0(SCLK_A) | CLKMUX_AHB2(SCLK_A)); | ||
139 | clk_set_ccr_div(1, 1, 1, 1, 1); | ||
140 | |||
141 | /* Enable APLL @ 1008 MHz (24 MHz EXCLK * 42 = 1008 MHz) */ | ||
142 | jz_writef(CPM_APCR, BS(1), PLLM(41), PLLN(0), PLLOD(0), ENABLE(1)); | ||
143 | while(jz_readf(CPM_APCR, ON) == 0); | ||
144 | |||
145 | /* System clock setup -- common to Rockbox and FiiO firmware | ||
146 | * ---- | ||
147 | * CPU at 1 GHz, L2 cache at 500 MHz | ||
148 | * AHB0 and AHB2 and 200 MHz | ||
149 | * PCLK at 100 MHz | ||
150 | * DDR at 200 MHz | ||
151 | */ | ||
152 | clk_set_ccr_div(1, 2, 5, 5, 10); | ||
153 | clk_set_ccr_mux(CLKMUX_SCLK_A(APLL) | CLKMUX_CPU(SCLK_A) | | ||
154 | CLKMUX_AHB0(SCLK_A) | CLKMUX_AHB2(SCLK_A)); | ||
155 | |||
156 | if(bootopt == SPL_BOOTOPT_ROCKBOX) { | ||
157 | /* We don't use MPLL in Rockbox, so switch DDR memory to APLL */ | ||
158 | clk_set_ddr(X1000_CLK_SCLK_A, 5); | ||
159 | |||
160 | /* Turn off MPLL */ | ||
161 | jz_writef(CPM_MPCR, ENABLE(0)); | ||
162 | } else { | ||
163 | /* TODO: Original firmware needs a lot of other clocks turned on */ | ||
164 | } | ||
165 | } | ||