summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
diff options
context:
space:
mode:
authorMichael Sparmann <theseven@rockbox.org>2009-10-08 20:56:51 +0000
committerMichael Sparmann <theseven@rockbox.org>2009-10-08 20:56:51 +0000
commit1fa5d49380a412aa909446d2afeb6c3894e392c6 (patch)
tree90e4eae3b09e33578e490ddb48a22e01a0832460 /firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
parent32b367b042f7e12d06be42e026bc679d48796ede (diff)
downloadrockbox-1fa5d49380a412aa909446d2afeb6c3894e392c6.tar.gz
rockbox-1fa5d49380a412aa909446d2afeb6c3894e392c6.zip
Implemented iPod Nano 2G power_off()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23014 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c')
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
index fbd5157fb0..31f23ff9ff 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
@@ -26,20 +26,32 @@
26#include "ftl-target.h" 26#include "ftl-target.h"
27#include <string.h> 27#include <string.h>
28#include "panic.h" 28#include "panic.h"
29#include "pmu-target.h"
30#include "lcd.h"
29 31
30 32
31/* Power handling for S5L8700 based Meizu players
32
33 The M3 and M6 players appear to use the same pins for power, USB detection
34 and charging status.
35*/
36
37void power_off(void) 33void power_off(void)
38{ 34{
39 if (ftl_sync() != 0) panicf("Failed to unmount flash!"); 35 if (ftl_sync() != 0) panicf("Failed to unmount flash!");
40 36
41 /* TODO: Really power-off */ 37 pmu_write(0x2b, 0); /* Kill the backlight, instantly. */
42 panicf("Poweroff not implemented yet."); 38 pmu_write(0x29, 0);
39
40 lcd_off();
41
42 pmu_switch_power(0, 0);
43 pmu_switch_power(2, 0);
44 pmu_switch_power(3, 0);
45 pmu_switch_power(4, 0);
46 pmu_switch_power(6, 0);
47 pmu_switch_power(7, 0);
48
49 pmu_write(0x36, pmu_read(0x36) & 0xF0);
50 pmu_write(0x34, pmu_read(0x34) & 0xF0);
51 pmu_write(0xD, pmu_read(0xD) | 0x40);
52 pmu_write(0xD, pmu_read(0xD) | 0x02);
53 pmu_write(0xC, 1);
54
43 while(1); 55 while(1);
44} 56}
45 57