summaryrefslogtreecommitdiff
path: root/packages/u-boot/u-boot-1.3.2/boc01/014-081211-BOOT_RESCUE.patch
blob: e18055e64c14547137bb05b84122d950f547ed76 (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-1.3.2/common/main.c
===================================================================
--- u-boot-1.3.2.orig/common/main.c
+++ u-boot-1.3.2/common/main.c
@@ -377,6 +377,15 @@ void main_loop (void)
 	}
 	else
 #endif /* CONFIG_BOOTCOUNT_LIMIT */
+#ifdef CONFIG_ENV_BOOTRESCUE
+	if ( gpio_get(GPIO_RED_BUTTON) ) {
+		printf ("Red button pressed: booting in rescue mode.\n");
+		s = getenv (CONFIG_ENV_BOOTRESCUE);
+		if ( !s )
+			printf ("Warning: environment variable '" CONFIG_ENV_BOOTRESCUE "' not set. Giving up rescue boot.\n");
+	}
+	else
+#endif
 		s = getenv ("bootcmd");
 
 	debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>");
Index: u-boot-1.3.2/include/configs/MPC8313ERDB.h
===================================================================
--- u-boot-1.3.2.orig/include/configs/MPC8313ERDB.h
+++ u-boot-1.3.2/include/configs/MPC8313ERDB.h
@@ -405,6 +405,7 @@
 #define PRE_INIT_GPIO	0x28
 #define INIT_GPIO	0x08
 #define	MAX_GPIO_OUT 	7
+#define GPIO_RED_BUTTON 7
 
 /* Digital Thermometer and Thermostat */
 #define CONFIG_DTT_LM73		1
@@ -558,6 +559,7 @@
  * Environment Configuration
  */
 #define CONFIG_ENV_OVERWRITE
+#define CONFIG_ENV_BOOTRESCUE   "bootrescue"
 
 #define CONFIG_ETHADDR		00:E0:0C:00:95:01
 #define CONFIG_HAS_ETH1