diff options
| -rw-r--r-- | board/ait/cam_enc_4xx/cam_enc_4xx.c | 55 | ||||
| -rw-r--r-- | board/ait/cam_enc_4xx/config.mk | 7 | ||||
| -rw-r--r-- | board/ait/cam_enc_4xx/u-boot-spl.lds | 2 | ||||
| -rw-r--r-- | include/configs/cam_enc_4xx.h | 13 | 
4 files changed, 54 insertions, 23 deletions
| diff --git a/board/ait/cam_enc_4xx/cam_enc_4xx.c b/board/ait/cam_enc_4xx/cam_enc_4xx.c index bb29cf3f5..32b28f927 100644 --- a/board/ait/cam_enc_4xx/cam_enc_4xx.c +++ b/board/ait/cam_enc_4xx/cam_enc_4xx.c @@ -21,6 +21,7 @@  #include <common.h>  #include <errno.h> +#include <hush.h>  #include <linux/mtd/nand.h>  #include <nand.h>  #include <miiphy.h> @@ -554,7 +555,7 @@ static char *menu_handle(struct menu_display *display)  {  	struct menu *m;  	int i; -	char *choice = NULL; +	void *choice = NULL;  	char key[2];  	int ret;  	char *s; @@ -606,7 +607,7 @@ static char *menu_handle(struct menu_display *display)  	sprintf(key, "%d", 1);  	menu_default_set(m, key); -	if (menu_get_choice(m, (void **)&choice) != 1) +	if (menu_get_choice(m, &choice) != 1)  		debug("Problem picking a choice!\n");  	menu_destroy(m); @@ -653,7 +654,7 @@ static int ait_writeublheader(void)  		sprintf(s, "%lx", i);  		ret = setenv("header_addr", s);  		if (ret == 0) -			ret = run_command2("run img_writeheader", 0); +			ret = run_command("run img_writeheader", 0);  		if (ret != 0)  			break;  	} @@ -697,7 +698,7 @@ static int ait_menu_install_images(void)  		setenv("filesize", s);  		switch (imgs[count].subtype) {  		case FIT_SUBTYPE_DF_ENV_IMAGE: -			ret = run_command2("run img_writedfenv", 0); +			ret = run_command("run img_writedfenv", 0);  			break;  		case FIT_SUBTYPE_RAMDISK_IMAGE:  			t = getenv("img_volume"); @@ -713,16 +714,16 @@ static int ait_menu_install_images(void)  			if (ret != 0)  				break; -			ret = run_command2("run img_writeramdisk", 0); +			ret = run_command("run img_writeramdisk", 0);  			break;  		case FIT_SUBTYPE_SPL_IMAGE: -			ret = run_command2("run img_writespl", 0); +			ret = run_command("run img_writespl", 0);  			break;  		case FIT_SUBTYPE_UBL_HEADER:  			ret = ait_writeublheader();  			break;  		case FIT_SUBTYPE_UBOOT_IMAGE: -			ret = run_command2("run img_writeuboot", 0); +			ret = run_command("run img_writeuboot", 0);  			break;  		default:  			/* not supported type */ @@ -731,8 +732,19 @@ static int ait_menu_install_images(void)  		count++;  	}  	/* now save dvn_* and img_volume env vars to new values */ -	if (ret == 0) -		ret = run_command2("run savenewvers", 0); +	if (ret == 0) { +		t = getenv("x_dvn_boot_vers"); +		if (t) +			setenv("dvn_boot_vers", t); + +		t = getenv("x_dvn_app_vers"); +		if (t) +			setenv("dvn_boot_vers", t); + +		setenv("x_dvn_boot_vers", NULL); +		setenv("x_dvn_app_vers", NULL); +		ret = run_command("run savenewvers", 0); +	}  	return ret;  } @@ -749,6 +761,8 @@ static int ait_menu_evaluate_load(char *choice)  		break;  	case '2':  		/* cancel, back to main */ +		setenv("x_dvn_boot_vers", NULL); +		setenv("x_dvn_app_vers", NULL);  		break;  	} @@ -961,7 +975,7 @@ static int ait_menu_check_image(void)  		if (s) {  			ret = strcmp(s, imgs[found_uboot].desc);  			if (ret != 0) { -				setenv("dvn_boot_vers", +				setenv("x_dvn_boot_vers",  					imgs[found_uboot].desc);  			} else {  				found_uboot = -1; @@ -976,7 +990,7 @@ static int ait_menu_check_image(void)  		if (s) {  			ret = strcmp(s, imgs[found_ramdisk].desc);  			if (ret != 0) { -				setenv("dvn_app_vers", +				setenv("x_dvn_app_vers",  					imgs[found_ramdisk].desc);  			} else {  				found_ramdisk = -1; @@ -1005,7 +1019,7 @@ static int ait_menu_evaluate_update(char *choice)  		break;  	case '2':  		/* load image */ -		ret = run_command2("run load_img", 0); +		ret = run_command("run load_img", 0);  		printf("ret: %d\n", ret);  		if (ret)  			return MENU_UPDATE; @@ -1073,9 +1087,9 @@ int menu_show(int bootdelay)  {  	int ret; -	run_command2("run saveparms", 0); +	run_command("run saveparms", 0);  	ret = ait_menu_show(&ait_main, bootdelay); -	run_command2("run restoreparms", 0); +	run_command("run restoreparms", 0);  	if (ret == MENU_EXIT_BOOTCMD)  		return 0; @@ -1085,8 +1099,17 @@ int menu_show(int bootdelay)  void menu_display_statusline(struct menu *m)  { -	printf("State: dvn_boot_vers: %s dvn_app_vers: %s\n", -		getenv("dvn_boot_vers"), getenv("dvn_app_vers")); +	char *s1, *s2; + +	s1 = getenv("x_dvn_boot_vers"); +	if (!s1) +		s1 = getenv("dvn_boot_vers"); + +	s2 = getenv("x_dvn_app_vers"); +	if (!s2) +		s2 = getenv("dvn_app_vers"); + +	printf("State: dvn_boot_vers: %s dvn_app_vers: %s\n", s1, s2);  	return;  }  #endif diff --git a/board/ait/cam_enc_4xx/config.mk b/board/ait/cam_enc_4xx/config.mk index b1f9b6c22..744b927f1 100644 --- a/board/ait/cam_enc_4xx/config.mk +++ b/board/ait/cam_enc_4xx/config.mk @@ -12,4 +12,11 @@ PAD_TO	:= 12320  UBL_CONFIG = $(SRCTREE)/board/$(BOARDDIR)/ublimage.cfg  ifndef CONFIG_SPL_BUILD  ALL-y += $(obj)u-boot.ubl +else +# as SPL_TEXT_BASE is not page-aligned, we need for some +# linkers the -n flag (Do not page align data), to prevent +# the following error message: +# arm-linux-ld: u-boot-spl: Not enough room for program headers, try linking +# with -N +LDFLAGS_u-boot-spl += -n  endif diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds index 6f6e065a9..52c986e8a 100644 --- a/board/ait/cam_enc_4xx/u-boot-spl.lds +++ b/board/ait/cam_enc_4xx/u-boot-spl.lds @@ -32,7 +32,7 @@ OUTPUT_ARCH(arm)  ENTRY(_start)  SECTIONS  { -	. = 0x00000000; +	. = CONFIG_SPL_TEXT_BASE;  	. = ALIGN(4);  	.text      : diff --git a/include/configs/cam_enc_4xx.h b/include/configs/cam_enc_4xx.h index 0fee53f75..99856ebfd 100644 --- a/include/configs/cam_enc_4xx.h +++ b/include/configs/cam_enc_4xx.h @@ -161,15 +161,14 @@  #define CONFIG_MENU  #define CONFIG_MENU_SHOW  #define CONFIG_FIT -#define CONFIG_CMD_PXE  #define CONFIG_BOARD_IMG_ADDR_R 0x80000000  #ifdef CONFIG_NAND_DAVINCI  #define CONFIG_ENV_SIZE			(16 << 10)  #define CONFIG_ENV_IS_IN_NAND  #define CONFIG_ENV_OFFSET		0x180000 +#define CONFIG_ENV_RANGE		0x040000  #define CONFIG_ENV_OFFSET_REDUND	0x1c0000 -#define CONFIG_ENV_RANGE		0x020000  #undef CONFIG_ENV_IS_IN_FLASH  #endif @@ -220,6 +219,7 @@  /* Defines for SPL */  #define CONFIG_SPL +#define CONFIG_SPL_LIBGENERIC_SUPPORT  #define CONFIG_SPL_NAND_SUPPORT  #define CONFIG_SPL_NAND_SIMPLE  #define CONFIG_SPL_NAND_LOAD @@ -229,7 +229,7 @@  #define CONFIG_SPL_LDSCRIPT		"$(BOARDDIR)/u-boot-spl.lds"  #define CONFIG_SPL_STACK		(0x00010000 + 0x7f00) -#define CONFIG_SPL_TEXT_BASE		0x0000020 /*CONFIG_SYS_SRAM_START*/ +#define CONFIG_SPL_TEXT_BASE		0x00000020 /*CONFIG_SYS_SRAM_START*/  #define CONFIG_SPL_MAX_SIZE		12320  #ifndef CONFIG_SPL_BUILD @@ -274,6 +274,7 @@  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000  #define CONFIG_SYS_NAND_U_BOOT_SIZE	0xa0000 +#define CONFIG_SYS_NAND_U_BOOT_ERA_SIZE	0x100000  /* for UBL header */  #define CONFIG_SYS_UBL_BLOCK		(CONFIG_SYS_NAND_PAGE_SIZE) @@ -429,7 +430,7 @@  		" 0 3000;nandrbl uboot\0"				\  	"writeuboot=nandrbl uboot;"					\  		"nand erase " xstr(CONFIG_SYS_NAND_U_BOOT_OFFS) " "	\ -		 xstr(CONFIG_SYS_NAND_U_BOOT_SIZE)			\ +		 xstr(CONFIG_SYS_NAND_U_BOOT_ERA_SIZE)			\  		";nand write " xstr(DVN4XX_UBOOT_ADDR_R_UBOOT)		\  		" " xstr(CONFIG_SYS_NAND_U_BOOT_OFFS) " "		\  		xstr(CONFIG_SYS_NAND_U_BOOT_SIZE) "\0"			\ @@ -466,14 +467,14 @@  		"nand write ${img_addr_r} 0 3000;nandrbl uboot\0"	\  	"img_writeuboot=nandrbl uboot;"					\  		"nand erase " xstr(CONFIG_SYS_NAND_U_BOOT_OFFS) " "	\ -		 xstr(CONFIG_SYS_NAND_U_BOOT_SIZE)			\ +		 xstr(CONFIG_SYS_NAND_U_BOOT_ERA_SIZE)			\  		";nand write ${img_addr_r} "				\  		xstr(CONFIG_SYS_NAND_U_BOOT_OFFS) " "			\  		xstr(CONFIG_SYS_NAND_U_BOOT_SIZE) "\0"			\  	"img_writedfenv=ubi part ubi 2048;"				\  		"ubi write ${img_addr_r} default ${filesize}\0"		\  	"img_volume=rootfs1\0"						\ -	"img_writeramdisk=ubi part ubi 2048;ubifsmount ${img_volume};"	\ +	"img_writeramdisk=ubi part ubi 2048;"				\  		"ubi write ${img_addr_r} ${img_volume} ${filesize}\0"	\  	"load_img=tftp ${fit_addr_r} ${img_file}\0"			\  	"net_nfs=run load_kernel; "					\ |