summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorCástor Muñoz <cmvidal@gmail.com>2017-01-13 20:51:07 +0100
committerFranklin Wei <git@fwei.tk>2018-07-30 18:50:27 -0400
commit744274220833e017f3cc3f1b61abd0fc7c3885ec (patch)
tree7b6fcdd7bc9e53bee6f62ed683ddf1db4c0c13ad /firmware
parent8f38f85fbde2ae78ba50cf9b9f54fbf9d25b4a45 (diff)
downloadrockbox-744274220833e017f3cc3f1b61abd0fc7c3885ec.tar.gz
rockbox-744274220833e017f3cc3f1b61abd0fc7c3885ec.zip
iPod Classic: disable IRAM1
On Classic, IRAM1 (second 128Kb of a total of 256KB available IRAM) is slower than DRAM. Codecs that actually are using regions of IRAM1 runs faster when DRAM is used, so IRAM1 is disabled and only IRAM0 remains enabled: 48KB for core and 80KB for codecs/plugins. The next test_codec results shows how decode time is decreased: file boosted unboosted *.ra ~1.5% ~0.5% *.mpc ~21% ~4.5% *.ogg ~0.5% ~0% nero_he*.m4a ~8% ~1% nero*.m4a ~25% ~7% wmapro*.wma ~4.5% ~0% wma*.wma ~25% ~7% In addition there is a small power save when IRAM1 HW is disabled. Change-Id: I102adee11458e82037f23076d5d5956e23235de8
Diffstat (limited to 'firmware')
-rw-r--r--firmware/target/arm/s5l8702/app.lds2
-rw-r--r--firmware/target/arm/s5l8702/pcm-s5l8702.c2
-rw-r--r--firmware/target/arm/s5l8702/system-s5l8702.c3
3 files changed, 4 insertions, 3 deletions
diff --git a/firmware/target/arm/s5l8702/app.lds b/firmware/target/arm/s5l8702/app.lds
index 60ecdc6738..fceb732e4f 100644
--- a/firmware/target/arm/s5l8702/app.lds
+++ b/firmware/target/arm/s5l8702/app.lds
@@ -19,7 +19,7 @@ STARTUP(target/arm/s5l8702/crt0.o)
19 19
20#define DRAMSIZE (DRAM_SIZE - PLUGINSIZE - CODECSIZE - TTB_SIZE) 20#define DRAMSIZE (DRAM_SIZE - PLUGINSIZE - CODECSIZE - TTB_SIZE)
21#define CODECORIG (ENDAUDIOADDR) 21#define CODECORIG (ENDAUDIOADDR)
22#define IRAMSIZE (56*1024) /* 256KB total - 56KB for core, 200KB for codecs */ 22#define IRAMSIZE (48*1024) /* 256KB total - 48KB for core, 200KB for codecs */
23 23
24/* Where the codec buffer ends, and the plugin buffer starts */ 24/* Where the codec buffer ends, and the plugin buffer starts */
25#define ENDADDR (ENDAUDIOADDR + CODECSIZE) 25#define ENDADDR (ENDAUDIOADDR + CODECSIZE)
diff --git a/firmware/target/arm/s5l8702/pcm-s5l8702.c b/firmware/target/arm/s5l8702/pcm-s5l8702.c
index e053b309b7..86a0edd54a 100644
--- a/firmware/target/arm/s5l8702/pcm-s5l8702.c
+++ b/firmware/target/arm/s5l8702/pcm-s5l8702.c
@@ -207,7 +207,6 @@ void pcm_dma_apply_settings(void)
207 207
208void pcm_play_dma_init(void) 208void pcm_play_dma_init(void)
209{ 209{
210 PWRCON(0) &= ~(1 << 4);
211 PWRCON(1) &= ~(1 << 7); 210 PWRCON(1) &= ~(1 << 7);
212 211
213 dmac_ch_init(&dma_play_ch, &dma_play_ch_cfg); 212 dmac_ch_init(&dma_play_ch, &dma_play_ch_cfg);
@@ -406,7 +405,6 @@ void pcm_rec_dma_init(void)
406 if (pcm_rec_initialized) 405 if (pcm_rec_initialized)
407 return; 406 return;
408 407
409 PWRCON(0) &= ~(1 << 4);
410 PWRCON(1) &= ~(1 << 7); 408 PWRCON(1) &= ~(1 << 7);
411 409
412 dmac_ch_init(&dma_rec_ch, &dma_rec_ch_cfg); 410 dmac_ch_init(&dma_rec_ch, &dma_rec_ch_cfg);
diff --git a/firmware/target/arm/s5l8702/system-s5l8702.c b/firmware/target/arm/s5l8702/system-s5l8702.c
index 459f4c36c6..9257aff85a 100644
--- a/firmware/target/arm/s5l8702/system-s5l8702.c
+++ b/firmware/target/arm/s5l8702/system-s5l8702.c
@@ -199,6 +199,9 @@ enum {
199 199
200void system_init(void) 200void system_init(void)
201{ 201{
202 /* disable IRAM1 (not used because it is slower than DRAM) */
203 clockgate_enable(CLOCKGATE_SM1, false);
204
202 clocking_init(clk_modes, 0); 205 clocking_init(clk_modes, 0);
203#ifndef BOOTLOADER 206#ifndef BOOTLOADER
204 gpio_preinit(); 207 gpio_preinit();