[PATCH] update u-boot to version 2009.11

Xiangfu Liu xiangfu at sharism.cc
Mon Jan 18 03:05:43 EST 2010


---
 target/linux/xburst/image/u-boot/Makefile          |    2 +-
 .../patches/0001-add-xburst-platform-files.patch   |   20 +-
 .../u-boot/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 dfb20ef..3b5cca6 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 b6c9fca..d4a16be 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 <xiangfu at qi-hardware.com>
-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 b8aeed2..515258a 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 <xiangfu at qi-hardware.com>
-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 <xiangfu at sharism.cc>
+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 <asm/mipsregs.h>
+ #include <asm/jz4740.h>
+ 
++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 <asm/io.h>
+ #include <asm/jz4740.h>
+ 
+-#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 081554b..0000000
--- 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 <asm/mipsregs.h>
- #include <asm/jz4740.h>
- 
-+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 <asm/io.h>
- #include <asm/jz4740.h>
- 
--#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





More information about the discussion mailing list


interactive