From 5623065e48fd11e79610fb3bf876d771cca365ac Mon Sep 17 00:00:00 2001 From: Xiangfu Liu Date: Fri, 18 Dec 2009 12:21:50 +0800 Subject: [PATCH] [power] + [s] : enable serial console and bootdelay 5 secs --- .../patches/0003-other-function-for-ben.patch | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/target/linux/xburst/image/u-boot/patches/0003-other-function-for-ben.patch b/target/linux/xburst/image/u-boot/patches/0003-other-function-for-ben.patch index a4711b512..081554b06 100644 --- a/target/linux/xburst/image/u-boot/patches/0003-other-function-for-ben.patch +++ b/target/linux/xburst/image/u-boot/patches/0003-other-function-for-ben.patch @@ -1,5 +1,5 @@ diff --git a/board/qi_lb60/qi_lb60.c b/board/qi_lb60/qi_lb60.c -index d13f2ab..d20d853 100644 +index d13f2ab..93c2571 100644 --- a/board/qi_lb60/qi_lb60.c +++ b/board/qi_lb60/qi_lb60.c @@ -12,6 +12,8 @@ @@ -23,7 +23,7 @@ index d13f2ab..d20d853 100644 * Initialize LCD pins */ __gpio_as_lcd_18bit(); -@@ -43,17 +40,30 @@ static void gpio_init(void) +@@ -43,17 +40,31 @@ static void gpio_init(void) * Initialize Other pins */ unsigned int i; @@ -49,6 +49,7 @@ index d13f2ab..d20d853 100644 + if (__gpio_get_pin(GPIO_KEYIN_BASE + 2) == 0){ + /* if pressed [S] */ + printf("[S] pressed, enable UART0\n"); ++ gd->boot_option = 5; + __gpio_as_uart0(); + } else { + printf("[S] not pressed, disable UART0\n"); @@ -60,19 +61,19 @@ index d13f2ab..d20d853 100644 __gpio_as_output(GPIO_AUDIO_POP); __gpio_set_pin(GPIO_AUDIO_POP); -@@ -73,6 +83,11 @@ static void gpio_init(void) +@@ -73,6 +84,11 @@ static void gpio_init(void) __gpio_as_input(GPIO_USB_DETECT); __gpio_enable_pull(GPIO_USB_DETECT); + + if (__gpio_get_pin(GPIO_KEYIN_BASE + 3) == 0) { + printf("[M] pressed, boot from sd card\n"); -+ gd->boot_from_sd = 1; ++ gd->boot_option = 1; + } } static void cpm_init(void) -@@ -96,7 +111,6 @@ void board_early_init(void) +@@ -96,7 +112,6 @@ void board_early_init(void) int checkboard (void) { @@ -93,15 +94,31 @@ index be64d13..54bf0ea 100644 #endif "\0" }; +diff --git a/common/main.c b/common/main.c +index 026edd1..1703d4f 100644 +--- a/common/main.c ++++ b/common/main.c +@@ -372,7 +372,9 @@ void main_loop (void) + #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0) + s = getenv ("bootdelay"); + bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY; +- ++ DECLARE_GLOBAL_DATA_PTR; ++ if (gd->boot_option == 5) ++ bootdelay = gd->boot_option; + debug ("### main_loop entered: bootdelay=%d\n\n", bootdelay); + + # ifdef CONFIG_BOOT_RETRY_TIME diff --git a/include/asm-mips/global_data.h b/include/asm-mips/global_data.h -index db88704..9b4dd77 100644 +index db88704..23f597e 100644 --- a/include/asm-mips/global_data.h +++ b/include/asm-mips/global_data.h -@@ -47,6 +47,7 @@ typedef struct global_data { +@@ -47,6 +47,8 @@ typedef struct global_data { unsigned long mem_clk; /* Memory bus clock */ unsigned long dev_clk; /* Device clock */ unsigned long fb_base; /* base address of framebuffer */ -+ unsigned long boot_from_sd; ++ unsigned long boot_option; /* 1: boot from sd ++ * 5: boot delay for 5 secs*/ #endif unsigned long baudrate; unsigned long have_console; /* serial_init() was called */ @@ -119,7 +136,7 @@ index 02af607..c3bf9c7 100644 /* diff --git a/lib_mips/bootm.c b/lib_mips/bootm.c -index 54af24c..01cfd37 100644 +index 54af24c..34150e9 100644 --- a/lib_mips/bootm.c +++ b/lib_mips/bootm.c @@ -46,7 +46,9 @@ static void linux_env_set (char * env_name, char * env_val); @@ -127,7 +144,7 @@ index 54af24c..01cfd37 100644 { void (*theKernel) (int, char **, char **, int *); - char *commandline = getenv ("bootargs"); -+ char *commandline = gd->boot_from_sd == 1 ? ++ char *commandline = gd->boot_option == 1 ? + getenv ("bootargsfromsd") : + getenv ("bootargs"); char env_buf[12];