summaryrefslogtreecommitdiffstats
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)
#elif CONFIG_CPU==S5L8702
/* S5L8702 have 256KB of IRAM */
+/* IRAM1 (2nd 128KB block) is not used because it is slower than DRAM */
#define DRAMORIG 0x08000000
-#define IRAMORIG (0x00000000 + (56*1024))
-#define IRAMSIZE (200*1024)
+#define IRAMORIG (0x00000000 + (48*1024))
+#define IRAMSIZE (80*1024)
#elif CONFIG_CPU == JZ4732 || CONFIG_CPU == JZ4760B
#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)
#define DRAMSIZE (DRAM_SIZE - PLUGINSIZE - CODECSIZE - TTB_SIZE)
#define CODECORIG (ENDAUDIOADDR)
-#define IRAMSIZE (56*1024) /* 256KB total - 56KB for core, 200KB for codecs */
+#define IRAMSIZE (48*1024) /* 256KB total - 48KB for core, 200KB for codecs */
/* Where the codec buffer ends, and the plugin buffer starts */
#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)
void pcm_play_dma_init(void)
{
- PWRCON(0) &= ~(1 << 4);
PWRCON(1) &= ~(1 << 7);
dmac_ch_init(&dma_play_ch, &dma_play_ch_cfg);
@@ -406,7 +405,6 @@ void pcm_rec_dma_init(void)
if (pcm_rec_initialized)
return;
- PWRCON(0) &= ~(1 << 4);
PWRCON(1) &= ~(1 << 7);
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 {
void system_init(void)
{
+ /* disable IRAM1 (not used because it is slower than DRAM) */
+ clockgate_enable(CLOCKGATE_SM1, false);
+
clocking_init(clk_modes, 0);
#ifndef BOOTLOADER
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 @@
#include "codeclib.h"
-#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250)
-/* PP5022/24, MCF5250 have large IRAM */
+#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || \
+ (CONFIG_CPU == MCF5250) || (CONFIG_CPU == S5L8702)
+/* PP5022/24, S5L8702, MCF5250 have large IRAM */
#define IBSS_ATTR_COOK_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_COOK_LARGE_IRAM ICODE_ATTR
#define ICONST_ATTR_COOK_LARGE_IRAM ICONST_ATTR
#define IBSS_ATTR_COOK_VLCBUF
#define ICODE_ATTR_COOK_DECODE
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
/* S5L870X have even larger IRAM and it is faster to use ICODE_ATTR. */
#define IBSS_ATTR_COOK_LARGE_IRAM IBSS_ATTR
#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;
#define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR
#define IBSS_ATTR_FAAD_XLR
-#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
+#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_FAAD_LARGE_IRAM ICODE_ATTR
#define ICONST_ATTR_FAAD_LARGE_IRAM ICONST_ATTR
#define IBSS_ATTR_FAAD_XLR
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
/* Very large IRAM. Move even more data to it. */
#define IBSS_ATTR_FAAD_LARGE_IRAM IBSS_ATTR
#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 @@
#define ICODE_ATTR
#endif
-#if (CONFIG_CPU == MCF5250) || (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
+#if (CONFIG_CPU == MCF5250) || (CONFIG_CPU == PP5022) || \
+ (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
#define ICODE_ATTR_FLAC ICODE_ATTR
#define IBSS_ATTR_FLAC IBSS_ATTR
/* Enough IRAM to move additional data to it. */
#define IBSS_ATTR_FLAC_LARGE_IRAM IBSS_ATTR
#define IBSS_ATTR_FLAC_XLARGE_IRAM
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
#define ICODE_ATTR_FLAC ICODE_ATTR
#define IBSS_ATTR_FLAC IBSS_ATTR
/* 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" {
/* Keep the data arrays of bitsreadr.c in IRAM. */
#define ICONST_ATTR_MPC_BITSREADER ICONST_ATTR
-#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
+#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_MPC_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_MPC_LARGE_IRAM ICODE_ATTR
@@ -70,7 +70,7 @@ extern "C" {
* sv7/sv8 bitstream demuxing into IRAM. This config is faster. */
#define ICONST_ATTR_MPC_BITSREADER
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_MPC_LARGE_IRAM IBSS_ATTR
#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 @@
/* Not enough IRAM available to move further data to it. */
#define IBSS_ATTR_SPC_LARGE_IRAM
-#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
+#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
#define IBSS_ATTR_SPC IBSS_ATTR
#define ICODE_ATTR_SPC ICODE_ATTR
#define ICONST_ATTR_SPC ICONST_ATTR
@@ -103,7 +103,7 @@
/* Not enough IRAM available to move further data to it. */
#define IBSS_ATTR_SPC_LARGE_IRAM
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
#define IBSS_ATTR_SPC IBSS_ATTR
#define ICODE_ATTR_SPC ICODE_ATTR
#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 @@
#define LSP_POW_BITS 7
-#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250)
+#if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || \
+ (CONFIG_CPU == MCF5250) || (CONFIG_CPU == S5L8702)
/* PP5022/24 and MCF5250 have 128KB of IRAM. 80KB are allocated for codecs */
#define IBSS_ATTR_WMA_LARGE_IRAM IBSS_ATTR
#define IBSS_ATTR_WMA_XL_IRAM
#define ICONST_ATTR_WMA_XL_IRAM
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
/* S5L870x has even more IRAM. Use it. */
#define IBSS_ATTR_WMA_LARGE_IRAM IBSS_ATTR
#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 @@
#define IBSS_ATTR_WMAPRO_VLC_TABLES
#define ICONST_ATTR_WMAPRO_WIN_VS_TMP
-#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
+#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == S5L8702)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR
@@ -18,7 +18,7 @@
#define IBSS_ATTR_WMAPRO_VLC_TABLES
#define ICONST_ATTR_WMAPRO_WIN_VS_TMP
-#elif defined(CPU_S5L870X)
+#elif (CONFIG_CPU == S5L8700) || (CONFIG_CPU == S5L8701)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR