diff options
author | Dave Chapman <dave@dchapman.com> | 2009-10-04 16:08:33 +0000 |
---|---|---|
committer | Dave Chapman <dave@dchapman.com> | 2009-10-04 16:08:33 +0000 |
commit | ad0a0569ead50f8981bf8c8de6a938fd4559afbc (patch) | |
tree | e7d8d32f2d885ea7004c9d815a3c10370ac1530b | |
parent | fbf034fcff15bb972c94188d6f58b83fff4529d5 (diff) | |
download | rockbox-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.c | 9 | ||||
-rw-r--r-- | firmware/target/arm/s5l8700/system-s5l8700.c | 21 |
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 | ||
33 | void power_off(void) | 37 | void 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 | ||
152 | void system_reboot(void) | 155 | void 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 | ||
156 | void system_exception_wait(void) | 177 | void system_exception_wait(void) |