summaryrefslogtreecommitdiff
path: root/lib_arm
diff options
context:
space:
mode:
Diffstat (limited to 'lib_arm')
-rw-r--r--lib_arm/armlinux.c15
-rw-r--r--lib_arm/board.c10
2 files changed, 25 insertions, 0 deletions
diff --git a/lib_arm/armlinux.c b/lib_arm/armlinux.c
index 2fb8db8..0305803 100644
--- a/lib_arm/armlinux.c
+++ b/lib_arm/armlinux.c
@@ -27,6 +27,9 @@
#include <image.h>
#include <zlib.h>
#include <asm/byteorder.h>
+#ifdef CONFIG_HAS_DATAFLASH
+#include <dataflash.h>
+#endif
#include <asm/setup.h>
#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
@@ -94,6 +97,11 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
printf ("## Loading Ramdisk Image at %08lx ...\n", addr);
/* Copy header so we can blank CRC field for re-calculation */
+#ifdef CONFIG_HAS_DATAFLASH
+ if (addr_dataflash(addr)){
+ read_dataflash(addr, sizeof(image_header_t), (char *)&header);
+ } else
+#endif
memcpy (&header, (char *)addr, sizeof(image_header_t));
if (ntohl(hdr->ih_magic) != IH_MAGIC) {
@@ -121,6 +129,13 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
data = addr + sizeof(image_header_t);
len = ntohl(hdr->ih_size);
+#ifdef CONFIG_HAS_DATAFLASH
+ if (addr_dataflash(addr)){
+ read_dataflash(data, len, (char *)CFG_LOAD_ADDR);
+ data = CFG_LOAD_ADDR;
+ }
+#endif
+
if (verify) {
ulong csum = 0;
diff --git a/lib_arm/board.c b/lib_arm/board.c
index af6af14..37d4d9f 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -37,6 +37,11 @@ void nand_init (void);
ulong monitor_flash_len;
+#ifdef CONFIG_HAS_DATAFLASH
+extern int AT91F_DataflashInit(void);
+extern void dataflash_print_info(void);
+#endif
+
const char version_string[] =
U_BOOT_VERSION" (" __DATE__ " - " __TIME__ ")";
@@ -242,6 +247,11 @@ void start_armboot (void)
nand_init(); /* go init the NAND */
#endif
+#ifdef CONFIG_HAS_DATAFLASH
+ AT91F_DataflashInit();
+ dataflash_print_info();
+#endif
+
/* initialize environment */
env_relocate ();