summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/plugin.lds5
-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
-rw-r--r--lib/rbcodec/codecs/libcook/cook.h7
-rw-r--r--lib/rbcodec/codecs/libfaad/common.h4
-rw-r--r--lib/rbcodec/codecs/libffmpegFLAC/bitstream.h5
-rw-r--r--lib/rbcodec/codecs/libmusepack/mpcdec.h4
-rw-r--r--lib/rbcodec/codecs/libspc/spc_codec.h4
-rw-r--r--lib/rbcodec/codecs/libwma/wmadec.h5
-rw-r--r--lib/rbcodec/codecs/libwmapro/wmaprodec.h4
11 files changed, 25 insertions, 20 deletions
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index aea44e7d40..7037496be4 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -159,9 +159,10 @@ OUTPUT_FORMAT(elf32-littlemips)
159 159
160#elif CONFIG_CPU==S5L8702 160#elif CONFIG_CPU==S5L8702
161/* S5L8702 have 256KB of IRAM */ 161/* S5L8702 have 256KB of IRAM */
162/* IRAM1 (2nd 128KB block) is not used because it is slower than DRAM */
162#define DRAMORIG 0x08000000 163#define DRAMORIG 0x08000000
163#define IRAMORIG (0x00000000 + (56*1024)) 164#define IRAMORIG (0x00000000 + (48*1024))
164#define IRAMSIZE (200*1024) 165#define IRAMSIZE (80*1024)
165 166
166#elif CONFIG_CPU == JZ4732 || CONFIG_CPU == JZ4760B 167#elif CONFIG_CPU == JZ4732 || CONFIG_CPU == JZ4760B
167#undef STUBOFFSET 168#undef STUBOFFSET
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();
diff --git a/lib/rbcodec/codecs/libcook/cook.h b/lib/rbcodec/codecs/libcook/cook.h
index fcb437a0e1..c2a5357c98 100644
--- a/lib/rbcodec/codecs/libcook/cook.h
+++ b/lib/rbcodec/codecs/libcook/cook.h
@@ -29,15 +29,16 @@
29 29
30#include "codeclib.h" 30#include "codeclib.h"
31 31
32#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250) 32#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || \
33/* PP5022/24, MCF5250 have large IRAM */ 33 (CONFIG_CPU == MCF5250) || (CONFIG_CPU == S5L8702)
34/* PP5022/24, S5L8702, MCF5250 have large IRAM */
34#define IBSS_ATTR_COOK_LARGE_IRAM IBSS_ATTR 35#define IBSS_ATTR_COOK_LARGE_IRAM IBSS_ATTR
35#define ICODE_ATTR_COOK_LARGE_IRAM ICODE_ATTR 36#define ICODE_ATTR_COOK_LARGE_IRAM ICODE_ATTR
36#define ICONST_ATTR_COOK_LARGE_IRAM ICONST_ATTR 37#define ICONST_ATTR_COOK_LARGE_IRAM ICONST_ATTR
37#define IBSS_ATTR_COOK_VLCBUF 38#define IBSS_ATTR_COOK_VLCBUF
38#define ICODE_ATTR_COOK_DECODE 39#define ICODE_ATTR_COOK_DECODE
39 40
40#elif defined(CPU_S5L870X) 41#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
41/* S5L870X have even larger IRAM and it is faster to use ICODE_ATTR. */ 42/* S5L870X have even larger IRAM and it is faster to use ICODE_ATTR. */
42#define IBSS_ATTR_COOK_LARGE_IRAM IBSS_ATTR 43#define IBSS_ATTR_COOK_LARGE_IRAM IBSS_ATTR
43#define ICODE_ATTR_COOK_LARGE_IRAM ICODE_ATTR 44#define ICODE_ATTR_COOK_LARGE_IRAM ICODE_ATTR
diff --git a/lib/rbcodec/codecs/libfaad/common.h b/lib/rbcodec/codecs/libfaad/common.h
index 720042b4aa..c5eaa0aa51 100644
--- a/lib/rbcodec/codecs/libfaad/common.h
+++ b/lib/rbcodec/codecs/libfaad/common.h
@@ -58,14 +58,14 @@ extern struct codec_api* ci;
58#define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR 58#define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR
59#define IBSS_ATTR_FAAD_XLR 59#define IBSS_ATTR_FAAD_XLR
60 60
61#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) 61#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
62/* Enough IRAM to move additional data and code to it. */ 62/* Enough IRAM to move additional data and code to it. */
63#define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR 63#define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR
64#define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR 64#define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR
65#define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR 65#define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR
66#define IBSS_ATTR_FAAD_XLR 66#define IBSS_ATTR_FAAD_XLR
67 67
68#elif defined(CPU_S5L870X) 68#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
69/* Very large IRAM. Move even more data to it. */ 69/* Very large IRAM. Move even more data to it. */
70#define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR 70#define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR
71#define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR 71#define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR
diff --git a/lib/rbcodec/codecs/libffmpegFLAC/bitstream.h b/lib/rbcodec/codecs/libffmpegFLAC/bitstream.h
index 2ec54c42fa..cd9589de40 100644
--- a/lib/rbcodec/codecs/libffmpegFLAC/bitstream.h
+++ b/lib/rbcodec/codecs/libffmpegFLAC/bitstream.h
@@ -18,14 +18,15 @@
18 #define ICODE_ATTR 18 #define ICODE_ATTR
19#endif 19#endif
20 20
21#if (CONFIG_CPU == MCF5250) || (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) 21#if (CONFIG_CPU == MCF5250) || (CONFIG_CPU == PP5022) || \
22 (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
22#define ICODE_ATTR_FLAC ICODE_ATTR 23#define ICODE_ATTR_FLAC ICODE_ATTR
23#define IBSS_ATTR_FLAC IBSS_ATTR 24#define IBSS_ATTR_FLAC IBSS_ATTR
24/* Enough IRAM to move additional data to it. */ 25/* Enough IRAM to move additional data to it. */
25#define IBSS_ATTR_FLAC_LARGE_IRAM IBSS_ATTR 26#define IBSS_ATTR_FLAC_LARGE_IRAM IBSS_ATTR
26#define IBSS_ATTR_FLAC_XLARGE_IRAM 27#define IBSS_ATTR_FLAC_XLARGE_IRAM
27 28
28#elif defined(CPU_S5L870X) 29#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
29#define ICODE_ATTR_FLAC ICODE_ATTR 30#define ICODE_ATTR_FLAC ICODE_ATTR
30#define IBSS_ATTR_FLAC IBSS_ATTR 31#define IBSS_ATTR_FLAC IBSS_ATTR
31/* Enough IRAM to move even more additional data to it. */ 32/* Enough IRAM to move even more additional data to it. */
diff --git a/lib/rbcodec/codecs/libmusepack/mpcdec.h b/lib/rbcodec/codecs/libmusepack/mpcdec.h
index 02003cb01b..24c06bc4a0 100644
--- a/lib/rbcodec/codecs/libmusepack/mpcdec.h
+++ b/lib/rbcodec/codecs/libmusepack/mpcdec.h
@@ -58,7 +58,7 @@ extern "C" {
58/* Keep the data arrays of bitsreadr.c in IRAM. */ 58/* Keep the data arrays of bitsreadr.c in IRAM. */
59#define ICONST_ATTR_MPC_BITSREADER ICONST_ATTR 59#define ICONST_ATTR_MPC_BITSREADER ICONST_ATTR
60 60
61#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) 61#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
62/* Enough IRAM to move additional data and code to it. */ 62/* Enough IRAM to move additional data and code to it. */
63#define IBSS_ATTR_MPC_LARGE_IRAM IBSS_ATTR 63#define IBSS_ATTR_MPC_LARGE_IRAM IBSS_ATTR
64#define ICODE_ATTR_MPC_LARGE_IRAM ICODE_ATTR 64#define ICODE_ATTR_MPC_LARGE_IRAM ICODE_ATTR
@@ -70,7 +70,7 @@ extern "C" {
70 * sv7/sv8 bitstream demuxing into IRAM. This config is faster. */ 70 * sv7/sv8 bitstream demuxing into IRAM. This config is faster. */
71#define ICONST_ATTR_MPC_BITSREADER 71#define ICONST_ATTR_MPC_BITSREADER
72 72
73#elif defined(CPU_S5L870X) 73#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
74/* Enough IRAM to move additional data and code to it. */ 74/* Enough IRAM to move additional data and code to it. */
75#define IBSS_ATTR_MPC_LARGE_IRAM IBSS_ATTR 75#define IBSS_ATTR_MPC_LARGE_IRAM IBSS_ATTR
76#define ICODE_ATTR_MPC_LARGE_IRAM ICODE_ATTR 76#define ICODE_ATTR_MPC_LARGE_IRAM ICODE_ATTR
diff --git a/lib/rbcodec/codecs/libspc/spc_codec.h b/lib/rbcodec/codecs/libspc/spc_codec.h
index 446690f726..75c344474e 100644
--- a/lib/rbcodec/codecs/libspc/spc_codec.h
+++ b/lib/rbcodec/codecs/libspc/spc_codec.h
@@ -95,7 +95,7 @@
95/* Not enough IRAM available to move further data to it. */ 95/* Not enough IRAM available to move further data to it. */
96#define IBSS_ATTR_SPC_LARGE_IRAM 96#define IBSS_ATTR_SPC_LARGE_IRAM
97 97
98#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) 98#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
99#define IBSS_ATTR_SPC IBSS_ATTR 99#define IBSS_ATTR_SPC IBSS_ATTR
100#define ICODE_ATTR_SPC ICODE_ATTR 100#define ICODE_ATTR_SPC ICODE_ATTR
101#define ICONST_ATTR_SPC ICONST_ATTR 101#define ICONST_ATTR_SPC ICONST_ATTR
@@ -103,7 +103,7 @@
103/* Not enough IRAM available to move further data to it. */ 103/* Not enough IRAM available to move further data to it. */
104#define IBSS_ATTR_SPC_LARGE_IRAM 104#define IBSS_ATTR_SPC_LARGE_IRAM
105 105
106#elif defined(CPU_S5L870X) 106#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
107#define IBSS_ATTR_SPC IBSS_ATTR 107#define IBSS_ATTR_SPC IBSS_ATTR
108#define ICODE_ATTR_SPC ICODE_ATTR 108#define ICODE_ATTR_SPC ICODE_ATTR
109#define ICONST_ATTR_SPC ICONST_ATTR 109#define ICONST_ATTR_SPC ICONST_ATTR
diff --git a/lib/rbcodec/codecs/libwma/wmadec.h b/lib/rbcodec/codecs/libwma/wmadec.h
index 76429dede1..b3bca4f452 100644
--- a/lib/rbcodec/codecs/libwma/wmadec.h
+++ b/lib/rbcodec/codecs/libwma/wmadec.h
@@ -52,13 +52,14 @@
52#define LSP_POW_BITS 7 52#define LSP_POW_BITS 7
53 53
54 54
55#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250) 55#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || \
56 (CONFIG_CPU == MCF5250) || (CONFIG_CPU == S5L8702)
56/* PP5022/24 and MCF5250 have 128KB of IRAM. 80KB are allocated for codecs */ 57/* PP5022/24 and MCF5250 have 128KB of IRAM. 80KB are allocated for codecs */
57#define IBSS_ATTR_WMA_LARGE_IRAM IBSS_ATTR 58#define IBSS_ATTR_WMA_LARGE_IRAM IBSS_ATTR
58#define IBSS_ATTR_WMA_XL_IRAM 59#define IBSS_ATTR_WMA_XL_IRAM
59#define ICONST_ATTR_WMA_XL_IRAM 60#define ICONST_ATTR_WMA_XL_IRAM
60 61
61#elif defined(CPU_S5L870X) 62#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
62/* S5L870x has even more IRAM. Use it. */ 63/* S5L870x has even more IRAM. Use it. */
63#define IBSS_ATTR_WMA_LARGE_IRAM IBSS_ATTR 64#define IBSS_ATTR_WMA_LARGE_IRAM IBSS_ATTR
64#define IBSS_ATTR_WMA_XL_IRAM IBSS_ATTR 65#define IBSS_ATTR_WMA_XL_IRAM IBSS_ATTR
diff --git a/lib/rbcodec/codecs/libwmapro/wmaprodec.h b/lib/rbcodec/codecs/libwmapro/wmaprodec.h
index d8398fc9f1..46b4770f46 100644
--- a/lib/rbcodec/codecs/libwmapro/wmaprodec.h
+++ b/lib/rbcodec/codecs/libwmapro/wmaprodec.h
@@ -10,7 +10,7 @@
10#define IBSS_ATTR_WMAPRO_VLC_TABLES 10#define IBSS_ATTR_WMAPRO_VLC_TABLES
11#define ICONST_ATTR_WMAPRO_WIN_VS_TMP 11#define ICONST_ATTR_WMAPRO_WIN_VS_TMP
12 12
13#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) 13#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
14/* Enough IRAM to move additional data and code to it. */ 14/* Enough IRAM to move additional data and code to it. */
15#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR 15#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
16#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR 16#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR
@@ -18,7 +18,7 @@
18#define IBSS_ATTR_WMAPRO_VLC_TABLES 18#define IBSS_ATTR_WMAPRO_VLC_TABLES
19#define ICONST_ATTR_WMAPRO_WIN_VS_TMP 19#define ICONST_ATTR_WMAPRO_WIN_VS_TMP
20 20
21#elif defined(CPU_S5L870X) 21#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
22/* Enough IRAM to move additional data and code to it. */ 22/* Enough IRAM to move additional data and code to it. */
23#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR 23#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
24#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR 24#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR