diff options
| -rw-r--r-- | package/uboot-lantiq/Makefile | 18 | ||||
| -rw-r--r-- | package/uboot-lantiq/files/board/infineon/easy50712/danube.c | 102 | ||||
| -rw-r--r-- | package/uboot-lantiq/files/include/configs/easy50712.h | 2 | 
3 files changed, 120 insertions, 2 deletions
diff --git a/package/uboot-lantiq/Makefile b/package/uboot-lantiq/Makefile index 3ffe8846e..48f468316 100644 --- a/package/uboot-lantiq/Makefile +++ b/package/uboot-lantiq/Makefile @@ -35,12 +35,20 @@ define Build/Prepare  	find $(PKG_BUILD_DIR) -name .svn | $(XARGS) rm -rf  endef -UBOOT_CONFIG:=easy50712_DDR166M +UBOOT_CONFIG:=$(call qstrip,$(CONFIG_UBOOT_CONFIG)) +UBOOT_DDR_CONFIG:=$(call qstrip,$(CONFIG_UBOOT_DDR_CONFIG)) +  UBOOT_MAKE_OPTS:= \  	CROSS_COMPILE=$(TARGET_CROSS) \  	ENDIANNESS= \  	V=1 +define Package/uboot-lantiq/config +	menu "configuration" +		source "$(SOURCE)/Config.in" +	endmenu +endef +  define Build/Configure/Target  	$(MAKE) -s -C $(PKG_BUILD_DIR) \  		$(UBOOT_MAKE_OPTS) \ @@ -50,7 +58,9 @@ endef  define Build/Configure  	$(call Build/Configure/Target,$(UBOOT_CONFIG)) +ifeq ($(CONFIG_UBOOT_RAMBOOT),y)  	$(call Build/Configure/Target,$(UBOOT_CONFIG)_ramboot) +endif  endef  define Build/Compile/Target @@ -62,7 +72,9 @@ endef  define Build/Compile  	$(call Build/Compile/Target,$(UBOOT_CONFIG)) +ifeq ($(CONFIG_UBOOT_RAMBOOT),y)  	$(call Build/Compile/Target,$(UBOOT_CONFIG)_ramboot) +endif  endef  define Package/uboot-lantiq/install @@ -71,12 +83,14 @@ define Package/uboot-lantiq/install  		if=$(PKG_BUILD_DIR)/$(UBOOT_CONFIG)/u-boot.bin \  		of=$(1)/$(UBOOT_CONFIG)/u-boot.bin \  		bs=64k conv=sync +ifeq ($(CONFIG_UBOOT_RAMBOOT),y)  	if [ -e $(UBOOT_CONFIG).conf ]; then \  		perl ./gct \ -			$(UBOOT_CONFIG).conf \ +			$(UBOOT_DDR_CONFIG) \  			$(PKG_BUILD_DIR)/$(UBOOT_CONFIG)_ramboot/u-boot.srec \  			$(1)/$(UBOOT_CONFIG)/u-boot.asc; \  	fi +endif  endef  $(eval $(call BuildPackage,uboot-lantiq)) diff --git a/package/uboot-lantiq/files/board/infineon/easy50712/danube.c b/package/uboot-lantiq/files/board/infineon/easy50712/danube.c index 473436692..f9b2b7626 100644 --- a/package/uboot-lantiq/files/board/infineon/easy50712/danube.c +++ b/package/uboot-lantiq/files/board/infineon/easy50712/danube.c @@ -32,6 +32,9 @@  #include <asm/danube.h>  #include <asm/reboot.h>  #include <asm/io.h> +#if defined(CONFIG_CMD_HTTPD) +#include <httpd.h> +#endif  extern ulong ifx_get_ddr_hz(void);  extern ulong ifx_get_cpuclk(void); @@ -336,3 +339,102 @@ int board_eth_init(bd_t *bis)  	return 0;  } +#if defined(CONFIG_CMD_HTTPD) +static int image_info (ulong addr) +{ +   void *hdr = (void *)addr; + +   printf ("\n## Checking Image at %08lx ...\n", addr); + +   switch (genimg_get_format (hdr)) { +   case IMAGE_FORMAT_LEGACY: +      puts ("   Legacy image found\n"); +      if (!image_check_magic (hdr)) { +         puts ("   Bad Magic Number\n"); +         return 1; +      } + +      if (!image_check_hcrc (hdr)) { +         puts ("   Bad Header Checksum\n"); +         return 1; +      } + +      image_print_contents (hdr); + +      puts ("   Verifying Checksum ... "); +      if (!image_check_dcrc (hdr)) { +         puts ("   Bad Data CRC\n"); +         return 1; +      } +      puts ("OK\n"); +      return 0; +#if defined(CONFIG_FIT) +   case IMAGE_FORMAT_FIT: +      puts ("   FIT image found\n"); + +      if (!fit_check_format (hdr)) { +         puts ("Bad FIT image format!\n"); +         return 1; +      } + +      fit_print_contents (hdr); + +      if (!fit_all_image_check_hashes (hdr)) { +         puts ("Bad hash in FIT image!\n"); +         return 1; +      } + +      return 0; +#endif +   default: +      puts ("Unknown image format!\n"); +      break; +   } + +   return 1; +} + +int do_http_upgrade(const unsigned char *data, const ulong size) +{ +	/* check the image */ +	if(image_info(data)) { +		return -1; +	} +	/* write the image to the flash */ +	puts("http ugrade ...\n"); +	return 0; +} + +int do_http_progress(const int state) +{ +	/* toggle LED's here */ +	switch(state) { +		case HTTP_PROGRESS_START: +		puts("http start\n"); +		break; +		case HTTP_PROGRESS_TIMEOUT: +		break; +		case HTTP_PROGRESS_UPLOAD_READY: +		puts("http upload ready\n"); +		break; +		case HTTP_PROGRESS_UGRADE_READY: +		puts("http ugrade ready\n"); +		break; +		case HTTP_PROGRESS_UGRADE_FAILED: +		puts("http ugrade failed\n"); +		break; +	} +	return 0; +} + +unsigned long do_http_tmp_address(void) +{ +	char *s = getenv ("ram_addr"); +	if (s) { +		ulong tmp = simple_strtoul (s, NULL, 16); +		return tmp; +	} +	return 0 /*0x80a00000*/; +} + +#endif diff --git a/package/uboot-lantiq/files/include/configs/easy50712.h b/package/uboot-lantiq/files/include/configs/easy50712.h index e061b831d..8eeb6c06a 100644 --- a/package/uboot-lantiq/files/include/configs/easy50712.h +++ b/package/uboot-lantiq/files/include/configs/easy50712.h @@ -112,4 +112,6 @@  #	define CONFIG_EBU_BUSCON0		0x0001D7FF  #endif +#define CONFIG_CMD_HTTPD		/* enable upgrade via HTTPD */ +  #endif	/* __CONFIG_H */  | 
