Root/package/uboot-xburst/patches/0003-add-more-boot-options-F1-F2-F3-F4-M-S.patch

1From 4662aa16d93f7ffd933125db6231868be544ebd5 Mon Sep 17 00:00:00 2001
2From: Xiangfu <xiangfu@openmobilefree.net>
3Date: Wed, 10 Oct 2012 18:39:55 +0800
4Subject: [PATCH 3/5] add more boot options(F1/F2/F3/F4/M/S)
5
6---
7 arch/mips/include/asm/global_data.h | 3 +++
8 arch/mips/lib/bootm.c | 17 ++++++++++++++++-
9 board/qi/qi_lb60/qi_lb60.c | 26 +++++++++++++++++++++++---
10 common/main.c | 21 +++++++++++++++++++--
11 include/configs/qi_lb60.h | 32 ++++++++++++++++++++++++++++++++
12 5 files changed, 93 insertions(+), 6 deletions(-)
13
14diff --git a/arch/mips/include/asm/global_data.h b/arch/mips/include/asm/global_data.h
15index 6e2cdc7..cd03d7e 100644
16--- a/arch/mips/include/asm/global_data.h
17+++ b/arch/mips/include/asm/global_data.h
18@@ -59,6 +59,9 @@ typedef struct global_data {
19     unsigned long env_valid; /* Checksum of Environment valid? */
20     void **jt; /* jump table */
21     char env_buf[32]; /* buffer for getenv() before reloc. */
22+#if defined(CONFIG_NANONOTE)
23+ unsigned long boot_option;
24+#endif
25 } gd_t;
26 
27 #include <asm-generic/global_data_flags.h>
28diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
29index 608c1a7..e00416b 100644
30--- a/arch/mips/lib/bootm.c
31+++ b/arch/mips/lib/bootm.c
32@@ -47,10 +47,25 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
33             bootm_headers_t *images)
34 {
35     void (*theKernel) (int, char **, char **, int *);
36- char *commandline = getenv("bootargs");
37+ char *commandline;
38     char env_buf[12];
39     char *cp;
40 
41+#if defined(CONFIG_NANONOTE)
42+ if (gd->boot_option & BOOT_FROM_MEMCARD)
43+ commandline = getenv ("bootargsfromsd");
44+ else if (gd->boot_option & BOOT_WITH_F1)
45+ commandline = getenv ("bootargsf1");
46+ else if (gd->boot_option & BOOT_WITH_F2)
47+ commandline = getenv ("bootargsf2");
48+ else if (gd->boot_option & BOOT_WITH_F3)
49+ commandline = getenv ("bootargsf3");
50+ else if (gd->boot_option & BOOT_WITH_F4)
51+ commandline = getenv ("bootargsf4");
52+ else
53+#endif
54+ commandline = getenv ("bootargs");
55+
56     if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
57         return 1;
58 
59diff --git a/board/qi/qi_lb60/qi_lb60.c b/board/qi/qi_lb60/qi_lb60.c
60index 68da069..14a928e 100644
61--- a/board/qi/qi_lb60/qi_lb60.c
62+++ b/board/qi/qi_lb60/qi_lb60.c
63@@ -15,7 +15,7 @@ DECLARE_GLOBAL_DATA_PTR;
64 
65 static void gpio_init(void)
66 {
67- unsigned int i;
68+ unsigned int i, j;
69 
70     /* Initialize NAND Flash Pins */
71     __gpio_as_nand();
72@@ -42,14 +42,34 @@ static void gpio_init(void)
73 
74     if (__gpio_get_pin(GPIO_KEYIN_BASE + 2) == 0){
75         printf("[S] pressed, enable UART0\n");
76+ gd->boot_option |= BOOT_WITH_ENABLE_UART;
77         __gpio_as_uart0();
78     } else {
79         __gpio_as_input(GPIO_KEYIN_8);
80         __gpio_enable_pull(GPIO_KEYIN_8);
81     }
82 
83- /* enable the TP4, TP5 as UART0 */
84- __gpio_jtag_to_uart0();
85+ if (__gpio_get_pin(GPIO_KEYIN_BASE + 3) == 0) {
86+ printf("[M] pressed, boot from memory card\n");
87+ gd->boot_option |= BOOT_FROM_MEMCARD;
88+ __gpio_jtag_to_uart0();
89+ }
90+
91+ for (j = 0; j < 4; j++) {
92+ for (i = 0; i < 4; i++)
93+ __gpio_set_pin(GPIO_KEYOUT_BASE + i);
94+
95+ __gpio_clear_pin(GPIO_KEYOUT_BASE + j);
96+
97+ if (__gpio_get_pin(GPIO_KEYIN_BASE) == 0) {
98+ printf("[F%d] pressed", (j + 1));
99+ gd->boot_option |= (1 << (j + 2));
100+ /* BOOT_WITH_F1 (1 << 2) */
101+ /* BOOT_WITH_F2 (1 << 3) */
102+ /* BOOT_WITH_F3 (1 << 4) */
103+ /* BOOT_WITH_F4 (1 << 5) */
104+ }
105+ }
106 
107     __gpio_as_output(GPIO_AUDIO_POP);
108     __gpio_set_pin(GPIO_AUDIO_POP);
109diff --git a/common/main.c b/common/main.c
110index 9507cec..dbfb7ca 100644
111--- a/common/main.c
112+++ b/common/main.c
113@@ -355,7 +355,11 @@ void main_loop (void)
114 #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
115     s = getenv ("bootdelay");
116     bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;
117-
118+#if defined(CONFIG_NANONOTE)
119+ DECLARE_GLOBAL_DATA_PTR;
120+ if (gd->boot_option & BOOT_WITH_ENABLE_UART)
121+ bootdelay = 3;
122+# endif
123     debug ("### main_loop entered: bootdelay=%d\n\n", bootdelay);
124 
125 #if defined(CONFIG_MENU_SHOW)
126@@ -379,7 +383,20 @@ void main_loop (void)
127     }
128     else
129 #endif /* CONFIG_BOOTCOUNT_LIMIT */
130- s = getenv ("bootcmd");
131+#if defined(CONFIG_NANONOTE)
132+ if (gd->boot_option & BOOT_FROM_MEMCARD)
133+ s = getenv ("bootcmdfromsd");
134+ else if (gd->boot_option & BOOT_WITH_F1)
135+ s = getenv ("bootcmdf1");
136+ else if (gd->boot_option & BOOT_WITH_F2)
137+ s = getenv ("bootcmdf2");
138+ else if (gd->boot_option & BOOT_WITH_F3)
139+ s = getenv ("bootcmdf3");
140+ else if (gd->boot_option & BOOT_WITH_F4)
141+ s = getenv ("bootcmdf4");
142+ else
143+#endif
144+ s = getenv ("bootcmd");
145 
146     debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>");
147 
148diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h
149index 2690e17..e824d48 100644
150--- a/include/configs/qi_lb60.h
151+++ b/include/configs/qi_lb60.h
152@@ -31,6 +31,7 @@
153 /*
154  * Miscellaneous configurable options
155  */
156+#define CONFIG_NANONOTE
157 #define CONFIG_JZ4740_MMC
158 #define CONFIG_MMC 1
159 #define CONFIG_FAT 1
160@@ -39,6 +40,37 @@
161 #define CONFIG_CMD_FAT
162 #define CONFIG_CMD_EXT2
163 
164+#define CONFIG_CMD_UBIFS
165+#define CONFIG_CMD_UBI
166+#define CONFIG_MTD_PARTITIONS
167+#define CONFIG_MTD_DEVICE
168+#define CONFIG_CMD_MTDPARTS
169+#define CONFIG_CMD_UBI
170+#define CONFIG_CMD_UBIFS
171+#define CONFIG_LZO
172+#define CONFIG_RBTREE
173+
174+#define MTDIDS_DEFAULT "nand0=jz4740-nand"
175+#define MTDPARTS_DEFAULT "mtdparts=jz4740-nand:4M@0(uboot)ro,4M@4M(kernel)ro,512M@8M(rootfs)ro,-(data)ro"
176+
177+#define BOOT_FROM_MEMCARD 1
178+#define BOOT_WITH_ENABLE_UART (1 << 1) /* Vaule for global_data.h gd->boot_option */
179+#define BOOT_WITH_F1 (1 << 2)
180+#define BOOT_WITH_F2 (1 << 3)
181+#define BOOT_WITH_F3 (1 << 4)
182+#define BOOT_WITH_F4 (1 << 5)
183+
184+#define CONFIG_EXTRA_ENV_SETTINGS \
185+ "bootcmdfromsd=mmc init; ext2load mmc 0 0x80600000 /boot/uImage; bootm;\0" \
186+ "bootargsfromsd=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p1 rw rootwait\0" \
187+ "bootcmdf1=mmc init; ext2load mmc 0:1 0x80600000 /boot/uImage; bootm;\0" \
188+ "bootargsf1=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p1 rw rootwait\0" \
189+ "bootcmdf2=mmc init; ext2load mmc 0:2 0x80600000 /boot/uImage; bootm;\0" \
190+ "bootargsf2=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p2 rw rootwait\0" \
191+ "bootcmdf3=mmc init; ext2load mmc 0:3 0x80600000 /boot/uImage; bootm;\0" \
192+ "bootargsf3=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p3 rw rootwait\0" \
193+ "bootcmdf4=mtdparts default;ubi part rootfs;ubifsmount rootfs;ubifsload 0x80600000 /boot/uImage; bootm;\0" \
194+ "bootargsf4=mem=32M console=tty0 console=ttyS0,57600n8 ubi.mtd=2 rootfstype=ubifs root=ubi0:rootfs rw rootwait"
195 
196 #define CONFIG_SYS_SDRAM_BASE 0x80000000 /* Cached addr */
197 #define CONFIG_SYS_INIT_SP_OFFSET 0x400000
198--
1991.7.9.5
200
201

Archive Download this file



interactive