summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
diff options
context:
space:
mode:
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