summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/SOURCES15
-rw-r--r--firmware/target/arm/s5l8700/boot.lds2
-rw-r--r--firmware/target/arm/s5l8700/crt0.S48
3 files changed, 52 insertions, 13 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index e7de5b9..6a956fb 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -1277,6 +1277,11 @@ target/arm/tcc780x/cowond2/audio-cowond2.c
#ifdef CPU_S5L870X
target/arm/s5l8700/system-s5l8700.c
+#ifndef SIMULATOR
+#ifndef BOOTLOADER
+target/arm/s5l8700/timer-s5l8700.c
+#endif /* BOOTLOADER */
+#endif /* SIMULATOR */
#endif
#ifdef MEIZU_M6SL
@@ -1311,10 +1316,20 @@ target/arm/s5l8700/udacodec-meizu.c
#endif /* MEIZU_M3 */
#ifdef IPOD_NANO2G
+drivers/audio/wm8975.c
target/arm/ipod/button-clickwheel.c
target/arm/s5l8700/kernel-s5l8700.c
+target/arm/s5l8700/wmcodec-s5l8700.c
+target/arm/s5l8700/pcm-s5l8700.c
+target/arm/s5l8700/adc-s5l8700.c
+target/arm/s5l8700/debug-s5l8700.c
+target/arm/s5l8700/dma-s5l8700.c
+target/arm/s5l8700/usb-s5l8700.c
target/arm/s5l8700/ipodnano2g/backlight-nano2g.c
target/arm/s5l8700/ipodnano2g/lcd-nano2g.c
+target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
+target/arm/s5l8700/ipodnano2g/power-nano2g.c
+target/arm/s5l8700/ipodnano2g/audio-nano2g.c
#endif
#ifndef SIMULATOR
diff --git a/firmware/target/arm/s5l8700/boot.lds b/firmware/target/arm/s5l8700/boot.lds
index 12f03ef..2dea0ee 100644
--- a/firmware/target/arm/s5l8700/boot.lds
+++ b/firmware/target/arm/s5l8700/boot.lds
@@ -1,6 +1,6 @@
#include "config.h"
-ENTRY(_start)
+ENTRY(start)
#ifdef ROCKBOX_LITTLE_ENDIAN
OUTPUT_FORMAT(elf32-littlearm)
#else
diff --git a/firmware/target/arm/s5l8700/crt0.S b/firmware/target/arm/s5l8700/crt0.S
index bb374ae..12a042b 100644
--- a/firmware/target/arm/s5l8700/crt0.S
+++ b/firmware/target/arm/s5l8700/crt0.S
@@ -23,10 +23,10 @@
#include "cpu.h"
.section .intvect,"ax",%progbits
- .global _start
+ .global start
.global _newstart
/* Exception vectors */
-_start:
+start:
b _newstart
ldr pc, =undef_instr_handler
ldr pc, =software_int_handler
@@ -82,9 +82,14 @@ newstart2:
// orr r0, r0, r2
// str r0, [r1] // switch backlight on
-#ifndef IPOD_NANO2G
-/* Currently disabled for the Nano2G as it doesn't appear to be
- correct - e.g. audio doesn't work with this code enabled. */
+#if CONFIG_CPU==S5L8701
+ ldr r1, =0x38200000
+ ldr r2, [r1]
+ orr r2, r2, #1
+ bic r2, r2, #0x10000
+ str r2, [r1] // remap iram to address 0x0
+#endif
+
ldr r1, =0x3c500000 // CLKCON
ldr r0, =0x00800080
str r0, [r1]
@@ -126,7 +131,6 @@ newstart2:
nop
nop
nop
-#endif
// ldr r0, =0x10100000
// ldr r1, =0x38200034
@@ -231,9 +235,8 @@ newstart2:
mrc 15, 0, r0, c1, c0, 0
orr r0, r0, r1
mcr 15, 0, r0, c1, c0, 0 // enable protection unit
-
-#if CONFIG_CPU==S5L8700
+#if CONFIG_CPU==S5L8700 || !defined(BOOTLOADER)
/* Copy interrupt vectors to iram */
ldr r2, =_intvectstart
ldr r3, =_intvectend
@@ -254,7 +257,7 @@ newstart2:
strhi r4, [r2], #4
bhi 1b
-#if CONFIG_CPU==S5L8700
+#if CONFIG_CPU==S5L8700 && defined(BOOTLOADER)
/* Copy icode and data to ram */
ldr r2, =_datastart
ldr r3, =_dataend
@@ -265,10 +268,31 @@ newstart2:
strhi r1, [r2], #4
bhi 1b
#endif
-
+
+#ifndef BOOTLOADER
+ /* Copy icode and data to ram */
+ ldr r2, =_iramstart
+ ldr r3, =_iramend
+ ldr r4, =_iramcopy
+1:
+ cmp r3, r2
+ ldrhi r1, [r4], #4
+ strhi r1, [r2], #4
+ bhi 1b
+
+ /* Initialise ibss section to zero */
+ ldr r2, =_iedata
+ ldr r3, =_iend
+ mov r4, #0
+1:
+ cmp r3, r2
+ strhi r4, [r2], #4
+ bhi 1b
+#endif
+
/* Set up some stack and munge it with 0xdeadbeef */
- ldr sp, =_stackend
- ldr r2, =_stackbegin
+ ldr sp, =stackend
+ ldr r2, =stackbegin
ldr r3, =0xdeadbeef
1:
cmp sp, r2