diff options
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c')
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c | 28 |
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 | |||
37 | void power_off(void) | 33 | void 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 | ||