From 53e4635ac92969ab0deb123fdec4aa6e26fd7334 Mon Sep 17 00:00:00 2001 From: Xiangfu Liu Date: Mon, 18 Jan 2010 16:03:37 +0800 Subject: [PATCH] update u-boot to version 2009.11 --- target/linux/xburst/image/u-boot/Makefile | 2 +- .../0001-add-xburst-platform-files.patch | 20 +- .../patches/0002-add-xburst-support.patch | 301 +++++++++++++++--- .../patches/0003-other-function-for-ben.patch | 232 -------------- 4 files changed, 276 insertions(+), 279 deletions(-) delete mode 100644 target/linux/xburst/image/u-boot/patches/0003-other-function-for-ben.patch diff --git a/target/linux/xburst/image/u-boot/Makefile b/target/linux/xburst/image/u-boot/Makefile index dfb20eff9..3b5cca616 100644 --- a/target/linux/xburst/image/u-boot/Makefile +++ b/target/linux/xburst/image/u-boot/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=u-boot -PKG_VERSION:=2009.08 +PKG_VERSION:=2009.11 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 diff --git a/target/linux/xburst/image/u-boot/patches/0001-add-xburst-platform-files.patch b/target/linux/xburst/image/u-boot/patches/0001-add-xburst-platform-files.patch index b6c9fca70..d4a16bee3 100644 --- a/target/linux/xburst/image/u-boot/patches/0001-add-xburst-platform-files.patch +++ b/target/linux/xburst/image/u-boot/patches/0001-add-xburst-platform-files.patch @@ -1,18 +1,18 @@ -From 23f08521fd9f997876d5e90354b9ad957bb4e982 Mon Sep 17 00:00:00 2001 +From 07e50d40b5c79fbaa244ae7f8a60873d63bc4924 Mon Sep 17 00:00:00 2001 From: Xiangfu Liu -Date: Wed, 18 Nov 2009 23:23:56 +0800 -Subject: [PATCH 1/2] add new file +Date: Sat, 16 Jan 2010 12:56:31 +0800 +Subject: [PATCH 1/2] new files --- board/qi_lb60/Makefile | 38 + board/qi_lb60/config.mk | 31 + board/qi_lb60/flash.c | 50 + - board/qi_lb60/qi_lb60.c | 105 + + board/qi_lb60/qi_lb60.c | 107 + board/qi_lb60/u-boot-nand.lds | 63 + board/qi_lb60/u-boot.lds | 63 + cpu/mips/jz4740.c | 574 +++++ cpu/mips/jz4740_cpm_test.c | 98 + - cpu/mips/jz4740_nand.c | 198 ++ + cpu/mips/jz4740_nand.c | 199 ++ cpu/mips/jz_cs8900.c | 397 +++ cpu/mips/jz_cs8900.h | 258 ++ cpu/mips/jz_eth.c | 376 +++ @@ -26,14 +26,14 @@ Subject: [PATCH 1/2] add new file cpu/mips/mmc_protocol.h | 273 +++ cpu/mips/qi_lb60_gpm940b0.c | 420 ++++ cpu/mips/qi_lb60_gpm940b0.h | 212 ++ - cpu/mips/usb_boot.S | 821 +++++++ + cpu/mips/usb_boot.S | 880 +++++++ include/asm-mips/jz4740.h | 4880 +++++++++++++++++++++++++++++++++++++ include/configs/qi_lb60.h | 213 ++ nand_spl/board/qi_lb60/Makefile | 104 + nand_spl/board/qi_lb60/config.mk | 34 + nand_spl/board/qi_lb60/u-boot.lds | 63 + nand_spl/nand_boot_jz4740.c | 456 ++++ - 29 files changed, 13575 insertions(+), 0 deletions(-) + 29 files changed, 13637 insertions(+), 0 deletions(-) create mode 100644 board/qi_lb60/Makefile create mode 100644 board/qi_lb60/config.mk create mode 100644 board/qi_lb60/flash.c @@ -203,7 +203,7 @@ index 0000000..891c604 +} diff --git a/board/qi_lb60/qi_lb60.c b/board/qi_lb60/qi_lb60.c new file mode 100644 -index 0000000..d13f2ab +index 0000000..54625c3 --- /dev/null +++ b/board/qi_lb60/qi_lb60.c @@ -0,0 +1,107 @@ @@ -1138,7 +1138,7 @@ index 0000000..70ebbf0 +#endif /* CONFIG_JZ4740 */ diff --git a/cpu/mips/jz4740_nand.c b/cpu/mips/jz4740_nand.c new file mode 100644 -index 0000000..7b1cdf3 +index 0000000..c1d1511 --- /dev/null +++ b/cpu/mips/jz4740_nand.c @@ -0,0 +1,199 @@ @@ -7205,7 +7205,7 @@ index 0000000..a4f8b0b +#endif /* __QI_LB60_GPM940B0_H__ */ diff --git a/cpu/mips/usb_boot.S b/cpu/mips/usb_boot.S new file mode 100644 -index 0000000..6c3788f +index 0000000..f556e04 --- /dev/null +++ b/cpu/mips/usb_boot.S @@ -0,0 +1,880 @@ diff --git a/target/linux/xburst/image/u-boot/patches/0002-add-xburst-support.patch b/target/linux/xburst/image/u-boot/patches/0002-add-xburst-support.patch index b8aeed27d..515258a4f 100644 --- a/target/linux/xburst/image/u-boot/patches/0002-add-xburst-support.patch +++ b/target/linux/xburst/image/u-boot/patches/0002-add-xburst-support.patch @@ -1,30 +1,36 @@ -From 7f32a7a2ec1cf7472684869a5cec40013134c92b Mon Sep 17 00:00:00 2001 -From: Xiangfu Liu -Date: Wed, 18 Nov 2009 23:24:14 +0800 -Subject: [PATCH 2/2] add-xburst-support +From 64c6e9b3ad9241d88411867cc4d5478bb6c6f3dd Mon Sep 17 00:00:00 2001 +From: Xiangfu Liu +Date: Mon, 18 Jan 2010 15:52:15 +0800 +Subject: [PATCH 2/2] change file --- Makefile | 10 + + board/qi_lb60/qi_lb60.c | 39 +++- + common/env_common.c | 2 +- common/lcd.c | 45 ++++- + common/main.c | 4 +- cpu/mips/Makefile | 4 + cpu/mips/cache.S | 280 ++++++++++---------------- cpu/mips/config.mk | 6 +- cpu/mips/cpu.c | 75 +++++++ cpu/mips/start.S | 432 +++++++++++++++++++++++++++++++-------- - drivers/mtd/nand/nand_base.c | 87 ++++++++- + drivers/mtd/nand/nand_base.c | 88 ++++++++- examples/standalone/mips.lds | 2 +- include/asm-mips/addrspace.h | 2 +- - include/asm-mips/global_data.h | 9 + + include/asm-mips/global_data.h | 11 + + include/configs/qi_lb60.h | 2 + include/lcd.h | 56 +++++- lib_mips/board.c | 18 ++- + lib_mips/bootm.c | 4 +- lib_mips/time.c | 4 + - 14 files changed, 744 insertions(+), 286 deletions(-) + nand_spl/nand_boot_jz4740.c | 46 ++--- + 20 files changed, 797 insertions(+), 333 deletions(-) diff --git a/Makefile b/Makefile -index e4499d7..e492d6a 100644 +index f06a97c..a318eb4 100644 --- a/Makefile +++ b/Makefile -@@ -3381,6 +3381,16 @@ qemu_mips_config : unconfig +@@ -3439,6 +3439,16 @@ qemu_mips_config : unconfig @$(MKCONFIG) -a qemu-mips mips mips qemu-mips ######################################################################### @@ -41,8 +47,104 @@ index e4499d7..e492d6a 100644 ## MIPS64 5Kc ######################################################################### +diff --git a/board/qi_lb60/qi_lb60.c b/board/qi_lb60/qi_lb60.c +index 54625c3..aa7b85b 100644 +--- a/board/qi_lb60/qi_lb60.c ++++ b/board/qi_lb60/qi_lb60.c +@@ -12,6 +12,8 @@ + #include + #include + ++DECLARE_GLOBAL_DATA_PTR; ++ + static void gpio_init(void) + { + /* +@@ -25,11 +27,6 @@ static void gpio_init(void) + __gpio_as_sdram_32bit(); + + /* +- * Initialize UART0 pins +- */ +- __gpio_as_uart0(); +- +- /* + * Initialize LCD pins + */ + __gpio_as_lcd_18bit(); +@@ -43,17 +40,31 @@ static void gpio_init(void) + * Initialize Other pins + */ + unsigned int i; ++ for (i = 0; i < 7; i++){ ++ __gpio_as_input(GPIO_KEYIN_BASE + i); ++ __gpio_enable_pull(GPIO_KEYIN_BASE + i); ++ } ++ + for (i = 0; i < 8; i++) { + __gpio_as_output(GPIO_KEYOUT_BASE + i); +- __gpio_set_pin(GPIO_KEYOUT_BASE + i); ++ __gpio_clear_pin(GPIO_KEYOUT_BASE + i); + } + +- for (i = 0; i < 7; i++){ +- __gpio_as_input(GPIO_KEYIN_BASE + i); +- __gpio_enable_pull(GPIO_KEYIN_BASE + i); ++ /* ++ * Initialize UART0 pins, in Ben NanoNote uart0 and keyin8 use the ++ * same gpio, init the gpio as uart0 cause a keyboard bug. so for ++ * end user we disable the uart0 ++ */ ++ 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"); ++ __gpio_as_input(GPIO_KEYIN_8); ++ __gpio_enable_pull(GPIO_KEYIN_8); + } +- /* __gpio_as_input( GPIO_KEYIN_8 ); */ +- /* __gpio_enable_pull( GPIO_KEYIN_8 ); */ + + __gpio_as_output(GPIO_AUDIO_POP); + __gpio_set_pin(GPIO_AUDIO_POP); +@@ -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_option = 1; ++ } + } + + static void cpm_init(void) +@@ -98,7 +114,6 @@ void board_early_init(void) + + int checkboard (void) + { +- DECLARE_GLOBAL_DATA_PTR; + + printf("Board: Qi LB60 (Ingenic XBurst Jz4740 SoC, Speed %d MHz)\n", + gd->cpu_clk/1000000); +diff --git a/common/env_common.c b/common/env_common.c +index 439a4a9..6cfe30b 100644 +--- a/common/env_common.c ++++ b/common/env_common.c +@@ -134,7 +134,7 @@ uchar default_environment[] = { + "pcidelay=" MK_STR(CONFIG_PCI_BOOTDELAY) "\0" + #endif + #ifdef CONFIG_EXTRA_ENV_SETTINGS +- CONFIG_EXTRA_ENV_SETTINGS ++ "bootargsfromsd=" CONFIG_BOOTARGSFROMSD "\0" + #endif + "\0" + }; diff --git a/common/lcd.c b/common/lcd.c -index dc8fea6..b68b1ca 100644 +index 4e31618..ddd5aa8 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -64,7 +64,9 @@ @@ -56,7 +158,7 @@ index dc8fea6..b68b1ca 100644 # endif #endif -@@ -270,6 +272,14 @@ static void lcd_drawchars (ushort x, ushort y, uchar *str, int count) +@@ -249,6 +251,14 @@ static void lcd_drawchars (ushort x, ushort y, uchar *str, int count) lcd_color_fg : lcd_color_bg; bits <<= 1; } @@ -71,7 +173,7 @@ index dc8fea6..b68b1ca 100644 #endif } #if LCD_BPP == LCD_MONOCHROME -@@ -336,6 +346,9 @@ static void test_pattern (void) +@@ -315,6 +325,9 @@ static void test_pattern (void) } #endif /* LCD_TEST_PATTERN */ @@ -81,7 +183,7 @@ index dc8fea6..b68b1ca 100644 /************************************************************************/ /* ** GENERIC Initialization Routines */ -@@ -402,6 +415,7 @@ static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +@@ -381,6 +394,7 @@ static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) COLOR_MASK(lcd_getbgcolor()), lcd_line_length*panel_info.vl_row); #endif @@ -89,7 +191,7 @@ index dc8fea6..b68b1ca 100644 /* Paint the logo and retrieve LCD base address */ debug ("[LCD] Drawing the logo...\n"); lcd_console_address = lcd_logo (); -@@ -479,6 +493,8 @@ static void lcd_setfgcolor (int color) +@@ -458,6 +472,8 @@ static void lcd_setfgcolor (int color) { #ifdef CONFIG_ATMEL_LCD lcd_color_fg = color; @@ -98,7 +200,7 @@ index dc8fea6..b68b1ca 100644 #else lcd_color_fg = color & 0x0F; #endif -@@ -490,6 +506,8 @@ static void lcd_setbgcolor (int color) +@@ -469,6 +485,8 @@ static void lcd_setbgcolor (int color) { #ifdef CONFIG_ATMEL_LCD lcd_color_bg = color; @@ -107,7 +209,7 @@ index dc8fea6..b68b1ca 100644 #else lcd_color_bg = color & 0x0F; #endif -@@ -528,6 +546,7 @@ void bitmap_plot (int x, int y) +@@ -507,6 +525,7 @@ void bitmap_plot (int x, int y) uchar *bmap; uchar *fb; ushort *fb16; @@ -115,7 +217,7 @@ index dc8fea6..b68b1ca 100644 #if defined(CONFIG_PXA250) struct pxafb_info *fbi = &panel_info.pxa; #elif defined(CONFIG_MPC823) -@@ -588,13 +607,25 @@ void bitmap_plot (int x, int y) +@@ -567,13 +586,25 @@ void bitmap_plot (int x, int y) } } else { /* true color mode */ @@ -147,6 +249,21 @@ index dc8fea6..b68b1ca 100644 } } +diff --git a/common/main.c b/common/main.c +index 10d8904..ff11ad7 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/cpu/mips/Makefile b/cpu/mips/Makefile index 28a1cbb..5207bc5 100644 --- a/cpu/mips/Makefile @@ -1217,7 +1334,7 @@ index 57db589..fa6e352 100644 + +#endif /* CONFIG_JZ4730 */ diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c -index 360b070..88717e9 100644 +index 426bb95..6e5fbd3 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -109,6 +109,22 @@ static struct nand_ecclayout nand_oob_16 = { @@ -1251,7 +1368,7 @@ index 360b070..88717e9 100644 static struct nand_ecclayout nand_oob_128 = { .eccbytes = 48, -@@ -1068,6 +1085,60 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, +@@ -1116,6 +1133,60 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd, } /** @@ -1312,25 +1429,27 @@ index 360b070..88717e9 100644 * nand_read_page_syndrome - [REPLACABLE] hardware ecc syndrom based page read * @mtd: mtd info structure * @chip: nand chip info structure -@@ -1222,8 +1293,15 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from, - ret = chip->ecc.read_page_raw(mtd, chip, bufpoi); +@@ -1271,9 +1342,17 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from, + bufpoi, page); else if (!aligned && NAND_SUBPAGE_READ(chip) && !oob) ret = chip->ecc.read_subpage(mtd, chip, col, bytes, bufpoi); - else -+ else { ++ else { +#if defined(CONFIG_JZ4740) + bufpoi[0] = (uint8_t)page; + bufpoi[1] = (uint8_t)(page >> 8); + bufpoi[2] = (uint8_t)(page >> 16); + bufpoi[3] = (uint8_t)(page >> 24); +#endif - ret = chip->ecc.read_page(mtd, chip, bufpoi); ++ + ret = chip->ecc.read_page(mtd, chip, bufpoi, + page); + } if (ret < 0) break; -@@ -2730,8 +2808,13 @@ int nand_scan_tail(struct mtd_info *mtd) - switch (chip->ecc.mode) { +@@ -2791,8 +2870,13 @@ int nand_scan_tail(struct mtd_info *mtd) + case NAND_ECC_HW: /* Use standard hwecc read page function ? */ - if (!chip->ecc.read_page) @@ -1372,10 +1491,10 @@ index 3a1e6d6..2ee6920 100644 cannot access physical memory directly from core */ #define UNCACHED_SDRAM(a) (((unsigned long)(a)) | 0x20000000) diff --git a/include/asm-mips/global_data.h b/include/asm-mips/global_data.h -index b2c4891..db88704 100644 +index b2c4891..23f597e 100644 --- a/include/asm-mips/global_data.h +++ b/include/asm-mips/global_data.h -@@ -39,6 +39,15 @@ +@@ -39,6 +39,17 @@ typedef struct global_data { bd_t *bd; unsigned long flags; @@ -1387,10 +1506,25 @@ index b2c4891..db88704 100644 + unsigned long mem_clk; /* Memory bus clock */ + unsigned long dev_clk; /* Device clock */ + unsigned long fb_base; /* base address of framebuffer */ ++ 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 */ phys_size_t ram_size; /* RAM size */ +diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h +index 02af607..c3bf9c7 100644 +--- a/include/configs/qi_lb60.h ++++ b/include/configs/qi_lb60.h +@@ -45,6 +45,8 @@ + #define CONFIG_BOOTDELAY 0 + #define CONFIG_BOOTFILE "uImage" /* file to load */ + #define CONFIG_BOOTARGS "mem=32M console=ttyS0,57600n8 ubi.mtd=2 rootfstype=ubifs root=ubi0:rootfs rw rootwait" ++#define CONFIG_EXTRA_ENV_SETTINGS 1 ++#define CONFIG_BOOTARGSFROMSD "mem=32M console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p1 rw rootwait" + #define CONFIG_BOOTCOMMAND "nand read 0x80600000 0x400000 0x200000;bootm" + + /* diff --git a/include/lcd.h b/include/lcd.h index 1f85daa..997e246 100644 --- a/include/lcd.h @@ -1493,10 +1627,10 @@ index 1f85daa..997e246 100644 #else # error Unsupported LCD BPP. diff --git a/lib_mips/board.c b/lib_mips/board.c -index aa5b129..ea5166c 100644 +index b2d113e..87cb12d 100644 --- a/lib_mips/board.c +++ b/lib_mips/board.c -@@ -45,6 +45,10 @@ DECLARE_GLOBAL_DATA_PTR; +@@ -49,6 +49,10 @@ DECLARE_GLOBAL_DATA_PTR; #undef DEBUG @@ -1507,15 +1641,15 @@ index aa5b129..ea5166c 100644 extern int timer_init(void); extern int incaip_set_cpuclk(void); -@@ -109,7 +113,6 @@ void *sbrk (ptrdiff_t increment) - return ((void *) old); +@@ -78,7 +82,6 @@ int __board_early_init_f(void) } + int board_early_init_f(void) __attribute__((weak, alias("__board_early_init_f"))); - static int init_func_ram (void) { #ifdef CONFIG_BOARD_TYPES -@@ -129,7 +132,6 @@ static int init_func_ram (void) +@@ -98,7 +101,6 @@ static int init_func_ram (void) static int display_banner(void) { @@ -1523,7 +1657,7 @@ index aa5b129..ea5166c 100644 printf ("\n\n%s\n\n", version_string); return (0); } -@@ -178,6 +180,9 @@ static int init_baudrate (void) +@@ -147,6 +149,9 @@ static int init_baudrate (void) typedef int (init_fnc_t) (void); init_fnc_t *init_sequence[] = { @@ -1533,7 +1667,7 @@ index aa5b129..ea5166c 100644 board_early_init_f, timer_init, env_init, /* initialize environment */ -@@ -193,7 +198,6 @@ init_fnc_t *init_sequence[] = { +@@ -162,7 +167,6 @@ init_fnc_t *init_sequence[] = { NULL, }; @@ -1541,7 +1675,7 @@ index aa5b129..ea5166c 100644 void board_init_f(ulong bootflag) { gd_t gd_data, *id; -@@ -233,6 +237,12 @@ void board_init_f(ulong bootflag) +@@ -202,6 +206,12 @@ void board_init_f(ulong bootflag) addr &= ~(4096 - 1); debug ("Top of RAM usable for U-Boot at: %08lx\n", addr); @@ -1554,7 +1688,7 @@ index aa5b129..ea5166c 100644 /* Reserve memory for U-Boot code, data & bss * round down to next 16 kB limit */ -@@ -379,9 +389,9 @@ void board_init_r (gd_t *id, ulong dest_addr) +@@ -349,9 +359,9 @@ void board_init_r (gd_t *id, ulong dest_addr) size = flash_init(); display_flash_config (size); bd->bi_flashsize = size; @@ -1565,6 +1699,21 @@ index aa5b129..ea5166c 100644 #if CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE bd->bi_flashoffset = monitor_flash_len; /* reserved area for U-Boot */ #else +diff --git a/lib_mips/bootm.c b/lib_mips/bootm.c +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); + int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) + { + void (*theKernel) (int, char **, char **, int *); +- char *commandline = getenv ("bootargs"); ++ char *commandline = gd->boot_option == 1 ? ++ getenv ("bootargsfromsd") : ++ getenv ("bootargs"); + char env_buf[12]; + char *cp; + diff --git a/lib_mips/time.c b/lib_mips/time.c index 07e356d..4654bf4 100644 --- a/lib_mips/time.c @@ -1584,6 +1733,86 @@ index 07e356d..4654bf4 100644 } + +#endif /* !CONFIG_JzRISC */ +diff --git a/nand_spl/nand_boot_jz4740.c b/nand_spl/nand_boot_jz4740.c +index 924a47a..146de19 100644 +--- a/nand_spl/nand_boot_jz4740.c ++++ b/nand_spl/nand_boot_jz4740.c +@@ -24,10 +24,8 @@ + #include + #include + +-#define KEY_1_OUT (32 * 3 + 21) +-#define KEY_1_IN (32 * 3 + 19) +-#define KEY_2_OUT (32 * 3 + 25) +-#define KEY_2_IN (32 * 3 + 26) ++#define KEY_U_OUT (32 * 2 + 16) ++#define KEY_U_IN (32 * 3 + 19) + + /* + * NAND flash definitions +@@ -350,40 +348,25 @@ static void gpio_init(void) + + static int is_usb_boot() + { +- int key2,keyh; +- +- key2 = 0; +- keyh = 0; ++ int keyU = 0; + +- __gpio_as_output(KEY_1_OUT); +- __gpio_as_output(KEY_2_OUT); +- __gpio_as_input(KEY_1_IN); +- __gpio_as_input(KEY_2_IN); +- __gpio_disable_pull(KEY_1_IN); +- __gpio_disable_pull(KEY_2_IN); ++ __gpio_as_input(KEY_U_IN); ++ __gpio_enable_pull(KEY_U_IN); + +- __gpio_clear_pin(KEY_1_OUT); +- __gpio_clear_pin(KEY_2_OUT); +- +- key2 = __gpio_get_pin(KEY_2_IN); +- keyh = __gpio_get_pin(KEY_1_IN); ++ __gpio_as_output(KEY_U_OUT); ++ __gpio_clear_pin(KEY_U_OUT); + +- if(key2) +- serial_puts("key2"); +- else +- serial_puts("key2--"); ++ keyU = __gpio_get_pin(KEY_U_IN); + +- if(keyh) +- serial_puts("keyh"); ++ if (keyU) ++ serial_puts("[U] not pressed\n"); + else +- serial_puts("keyh--"); ++ serial_puts("[U] pressed\n"); + +- +- if( ( key2 == 0 ) && ( keyh == 0 ) ) ++ if (keyU == 0) + return 1; + else + return 0; +- + } + + void nand_boot(void) +@@ -402,9 +385,8 @@ void nand_boot(void) + pll_init(); + sdram_init(); + +- int ret = 0; +- ret = is_usb_boot(); +- if(ret) { ++ if(is_usb_boot()) { ++ serial_puts("enter USB BOOT mode\n"); + usb_boot(); + } + -- 1.6.3.3 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 deleted file mode 100644 index 081554b06..000000000 --- a/target/linux/xburst/image/u-boot/patches/0003-other-function-for-ben.patch +++ /dev/null @@ -1,232 +0,0 @@ -diff --git a/board/qi_lb60/qi_lb60.c b/board/qi_lb60/qi_lb60.c -index d13f2ab..93c2571 100644 ---- a/board/qi_lb60/qi_lb60.c -+++ b/board/qi_lb60/qi_lb60.c -@@ -12,6 +12,8 @@ - #include - #include - -+DECLARE_GLOBAL_DATA_PTR; -+ - static void gpio_init(void) - { - /* -@@ -25,11 +27,6 @@ static void gpio_init(void) - __gpio_as_sdram_32bit(); - - /* -- * Initialize UART0 pins -- */ -- __gpio_as_uart0(); -- -- /* - * Initialize LCD pins - */ - __gpio_as_lcd_18bit(); -@@ -43,17 +40,31 @@ static void gpio_init(void) - * Initialize Other pins - */ - unsigned int i; -+ for (i = 0; i < 7; i++){ -+ __gpio_as_input(GPIO_KEYIN_BASE + i); -+ __gpio_enable_pull(GPIO_KEYIN_BASE + i); -+ } -+ - for (i = 0; i < 8; i++) { - __gpio_as_output(GPIO_KEYOUT_BASE + i); -- __gpio_set_pin(GPIO_KEYOUT_BASE + i); -+ __gpio_clear_pin(GPIO_KEYOUT_BASE + i); - } - -- for (i = 0; i < 7; i++){ -- __gpio_as_input(GPIO_KEYIN_BASE + i); -- __gpio_enable_pull(GPIO_KEYIN_BASE + i); -+ /* -+ * Initialize UART0 pins, in Ben NanoNote uart0 and keyin8 use the -+ * same gpio, init the gpio as uart0 cause a keyboard bug. so for -+ * end user we disable the uart0 -+ */ -+ 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"); -+ __gpio_as_input(GPIO_KEYIN_8); -+ __gpio_enable_pull(GPIO_KEYIN_8); - } -- /* __gpio_as_input( GPIO_KEYIN_8 ); */ -- /* __gpio_enable_pull( GPIO_KEYIN_8 ); */ - - __gpio_as_output(GPIO_AUDIO_POP); - __gpio_set_pin(GPIO_AUDIO_POP); -@@ -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_option = 1; -+ } - } - - static void cpm_init(void) -@@ -96,7 +112,6 @@ void board_early_init(void) - - int checkboard (void) - { -- DECLARE_GLOBAL_DATA_PTR; - - printf("Board: Qi LB60 (Ingenic XBurst Jz4740 SoC, Speed %d MHz)\n", - gd->cpu_clk/1000000); -diff --git a/common/env_common.c b/common/env_common.c -index be64d13..54bf0ea 100644 ---- a/common/env_common.c -+++ b/common/env_common.c -@@ -134,7 +134,7 @@ uchar default_environment[] = { - "pcidelay=" MK_STR(CONFIG_PCI_BOOTDELAY) "\0" - #endif - #ifdef CONFIG_EXTRA_ENV_SETTINGS -- CONFIG_EXTRA_ENV_SETTINGS -+ "bootargsfromsd=" CONFIG_BOOTARGSFROMSD "\0" - #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..23f597e 100644 ---- a/include/asm-mips/global_data.h -+++ b/include/asm-mips/global_data.h -@@ -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_option; /* 1: boot from sd -+ * 5: boot delay for 5 secs*/ - #endif - unsigned long baudrate; - unsigned long have_console; /* serial_init() was called */ -diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h -index 02af607..c3bf9c7 100644 ---- a/include/configs/qi_lb60.h -+++ b/include/configs/qi_lb60.h -@@ -45,6 +45,8 @@ - #define CONFIG_BOOTDELAY 0 - #define CONFIG_BOOTFILE "uImage" /* file to load */ - #define CONFIG_BOOTARGS "mem=32M console=ttyS0,57600n8 ubi.mtd=2 rootfstype=ubifs root=ubi0:rootfs rw rootwait" -+#define CONFIG_EXTRA_ENV_SETTINGS 1 -+#define CONFIG_BOOTARGSFROMSD "mem=32M console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p1 rw rootwait" - #define CONFIG_BOOTCOMMAND "nand read 0x80600000 0x400000 0x200000;bootm" - - /* -diff --git a/lib_mips/bootm.c b/lib_mips/bootm.c -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); - int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) - { - void (*theKernel) (int, char **, char **, int *); -- char *commandline = getenv ("bootargs"); -+ char *commandline = gd->boot_option == 1 ? -+ getenv ("bootargsfromsd") : -+ getenv ("bootargs"); - char env_buf[12]; - char *cp; - -diff --git a/nand_spl/nand_boot_jz4740.c b/nand_spl/nand_boot_jz4740.c -index 924a47a..146de19 100644 ---- a/nand_spl/nand_boot_jz4740.c -+++ b/nand_spl/nand_boot_jz4740.c -@@ -24,10 +24,8 @@ - #include - #include - --#define KEY_1_OUT (32 * 3 + 21) --#define KEY_1_IN (32 * 3 + 19) --#define KEY_2_OUT (32 * 3 + 25) --#define KEY_2_IN (32 * 3 + 26) -+#define KEY_U_OUT (32 * 2 + 16) -+#define KEY_U_IN (32 * 3 + 19) - - /* - * NAND flash definitions -@@ -350,40 +348,25 @@ static void gpio_init(void) - - static int is_usb_boot() - { -- int key2,keyh; -- -- key2 = 0; -- keyh = 0; -+ int keyU = 0; - -- __gpio_as_output(KEY_1_OUT); -- __gpio_as_output(KEY_2_OUT); -- __gpio_as_input(KEY_1_IN); -- __gpio_as_input(KEY_2_IN); -- __gpio_disable_pull(KEY_1_IN); -- __gpio_disable_pull(KEY_2_IN); -+ __gpio_as_input(KEY_U_IN); -+ __gpio_enable_pull(KEY_U_IN); - -- __gpio_clear_pin(KEY_1_OUT); -- __gpio_clear_pin(KEY_2_OUT); -- -- key2 = __gpio_get_pin(KEY_2_IN); -- keyh = __gpio_get_pin(KEY_1_IN); -+ __gpio_as_output(KEY_U_OUT); -+ __gpio_clear_pin(KEY_U_OUT); - -- if(key2) -- serial_puts("key2"); -- else -- serial_puts("key2--"); -+ keyU = __gpio_get_pin(KEY_U_IN); - -- if(keyh) -- serial_puts("keyh"); -+ if (keyU) -+ serial_puts("[U] not pressed\n"); - else -- serial_puts("keyh--"); -+ serial_puts("[U] pressed\n"); - -- -- if( ( key2 == 0 ) && ( keyh == 0 ) ) -+ if (keyU == 0) - return 1; - else - return 0; -- - } - - void nand_boot(void) -@@ -402,9 +385,8 @@ void nand_boot(void) - pll_init(); - sdram_init(); - -- int ret = 0; -- ret = is_usb_boot(); -- if(ret) { -+ if(is_usb_boot()) { -+ serial_puts("enter USB BOOT mode\n"); - usb_boot(); - } -