summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2009-10-04 16:08:33 +0000
committerDave Chapman <dave@dchapman.com>2009-10-04 16:08:33 +0000
commitad0a0569ead50f8981bf8c8de6a938fd4559afbc (patch)
treee7d8d32f2d885ea7004c9d815a3c10370ac1530b
parentfbf034fcff15bb972c94188d6f58b83fff4529d5 (diff)
downloadrockbox-ad0a0569ead50f8981bf8c8de6a938fd4559afbc.tar.gz
rockbox-ad0a0569ead50f8981bf8c8de6a938fd4559afbc.zip
Another patch from FS#10633 by Michael Sparmann (with a couple of minor cosmetic tweaks by me) - cleanly unmount the flash when powering off or rebooting.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22920 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c9
-rw-r--r--firmware/target/arm/s5l8700/system-s5l8700.c21
2 files changed, 29 insertions, 1 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
index aa3367b941..fbd5157fb0 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
@@ -23,6 +23,10 @@
23#include "inttypes.h" 23#include "inttypes.h"
24#include "s5l8700.h" 24#include "s5l8700.h"
25#include "power.h" 25#include "power.h"
26#include "ftl-target.h"
27#include <string.h>
28#include "panic.h"
29
26 30
27/* Power handling for S5L8700 based Meizu players 31/* Power handling for S5L8700 based Meizu players
28 32
@@ -32,7 +36,10 @@
32 36
33void power_off(void) 37void power_off(void)
34{ 38{
35 /* TODO */ 39 if (ftl_sync() != 0) panicf("Failed to unmount flash!");
40
41 /* TODO: Really power-off */
42 panicf("Poweroff not implemented yet.");
36 while(1); 43 while(1);
37} 44}
38 45
diff --git a/firmware/target/arm/s5l8700/system-s5l8700.c b/firmware/target/arm/s5l8700/system-s5l8700.c
index f04f2f92f2..070d3b9462 100644
--- a/firmware/target/arm/s5l8700/system-s5l8700.c
+++ b/firmware/target/arm/s5l8700/system-s5l8700.c
@@ -22,6 +22,9 @@
22#include "kernel.h" 22#include "kernel.h"
23#include "system.h" 23#include "system.h"
24#include "panic.h" 24#include "panic.h"
25#ifdef IPOD_NANO2G
26#include "ftl-target.h"
27#endif
25 28
26#define default_interrupt(name) \ 29#define default_interrupt(name) \
27 extern __attribute__((weak,alias("UIRQ"))) void name (void) 30 extern __attribute__((weak,alias("UIRQ"))) void name (void)
@@ -151,6 +154,24 @@ void system_init(void)
151 154
152void system_reboot(void) 155void system_reboot(void)
153{ 156{
157#ifdef IPODNANO2G
158 if (ftl_sync() != 0) panicf("Failed to unmount flash!");
159
160 /* Reset the SoC */
161 asm volatile(" \
162 msr CPSR_c, #0xd3 \
163 mov r5, #0x110000 \
164 add r5, r5, #0xff \
165 add r6, r5, #0xa00 \
166 mov r10, #0x3c800000 \
167 str r6, [r10] \
168 mov r6, #0xff0 \
169 str r6, [r10,#4] \
170 str r5, [r10]")
171
172 /* Wait for reboot to kick in */
173 while(1);
174#endif
154} 175}
155 176
156void system_exception_wait(void) 177void system_exception_wait(void)