aboutsummaryrefslogtreecommitdiffstats
path: root/packages/u-boot/u-boot-mkimage-openmoko-native/early-powerdown.patch
blob: 7326c2daa67b81c56e97b2a3b94ed35c5d1e239e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Index: u-boot/board/neo1973/neo1973.c
===================================================================
--- u-boot.orig/board/neo1973/gta01/gta01.c
+++ u-boot/board/neo1973/gta01/gta01.c
@@ -68,8 +68,12 @@ DECLARE_GLOBAL_DATA_PTR;
 #define U_M_PDIV	0x2
 #define U_M_SDIV	0x3
 
+#define VALID_WAKEUP_REASONS (PCF50606_INT1_ONKEYF | PCF50606_INT1_ALARM)
+
 unsigned int neo1973_wakeup_cause;
 extern int nobootdelay;
+static unsigned char int1;
+
 
 static inline void delay (unsigned long loops)
 {
@@ -179,6 +183,13 @@ int board_init (void)
 #error Please define GTA01 version
 #endif
 
+	i2c_init(CFG_I2C_SPEED, CFG_I2C_SLAVE);
+	int1 = pcf50606_reg_read(PCF50606_REG_INT1);
+	if (!(int1 & VALID_WAKEUP_REASONS) && !neo1973_aux_key_pressed()) {
+		pcf50606_reg_write(PCF50606_REG_OOCC1, PCF50606_OOCC1_GOSTDBY);
+		while (1);
+	}
+
 	/* arch number of SMDK2410-Board */
 	gd->bd->bi_arch_number = MACH_TYPE_NEO1973_GTA01;
 
@@ -200,7 +211,7 @@ int board_late_init(void)
 	pcf50606_init();
 
 	/* obtain wake-up reason, save INT1 in environment */
-	tmp = pcf50606_reg_read(PCF50606_REG_INT1);
+	tmp = int1; //pcf50606_reg_read(PCF50606_REG_INT1);
 	sprintf(buf, "0x%02x", tmp);
 	setenv("pcf50606_int1", buf);