vexpress64: store env in flash
authorRyan Harkin <ryan.harkin@linaro.org>
Wed, 18 Nov 2015 10:39:09 +0000 (10:39 +0000)
committerTom Rini <trini@konsulko.com>
Sun, 22 Nov 2015 02:50:29 +0000 (21:50 -0500)
Add support for storing the environment in CFI NOR flash on Juno and FVP
models.

I also removed some config values that are not used by CFI flash parts.

Juno has 1 flash part with 259 sectors.  The first 255 sectors are
0x40000 (256kb) and are followed by 4 sectors of 0x10000 (64KB).

FVP models simulate a 64MB NOR flash part at base address 0x0FFC0000.
This part has 256 x 256kb sectors.  We use the last sector to store the
environment.

To save the NOR flash to a file, the following parameters should be
passed to the model:

    -C bp.flashloader1.fname=${FILENAME}
    -C bp.flashloader1.fnameWrite=${FILENAME}

Foundation models don't simulate the NOR flash, but having NOR support
in the u-boot binary does not harm:  attempting to write to the NOR will
fail gracefully.

Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
configs/vexpress_aemv8a_dram_defconfig
configs/vexpress_aemv8a_semi_defconfig
include/configs/vexpress_aemv8a.h

index 72d405f74c9c1ab4ee3e65ea497e6fff2eb11965..cad446682cbaabff02af71d25d53b742727b28f0 100644 (file)
@@ -10,7 +10,6 @@ CONFIG_SYS_PROMPT="VExpress64# "
 # CONFIG_CMD_EDITENV is not set
 # CONFIG_CMD_ENV_EXISTS is not set
 # CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_ITEST is not set
 # CONFIG_CMD_SETEXPR is not set
index a082d2778cf27bc7abece035a1ec2915348e73a1..e899b9068702450b9fae645128609709a13578cd 100644 (file)
@@ -10,7 +10,6 @@ CONFIG_SYS_PROMPT="VExpress64# "
 # CONFIG_CMD_EDITENV is not set
 # CONFIG_CMD_ENV_EXISTS is not set
 # CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_ITEST is not set
 # CONFIG_CMD_SETEXPR is not set
index 6734d7e1faa468d7d4b4f907fe4e8ff3b148e719..c767f90e885e70f4faf710541ef6c03ab4237dd7 100644 (file)
 
 #endif
 
-/* Do not preserve environment */
-#define CONFIG_ENV_IS_NOWHERE          1
-#define CONFIG_ENV_SIZE                        0x1000
-
 /* Monitor Command Prompt */
 #define CONFIG_SYS_CBSIZE              512     /* Console I/O Buffer Size */
 #define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_SYS_MAXARGS             64      /* max command args */
 
-/* Flash memory is available on the Juno board only */
-#ifndef CONFIG_TARGET_VEXPRESS64_JUNO
-#define CONFIG_SYS_NO_FLASH
+#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
+#define CONFIG_SYS_FLASH_BASE          0x08000000
+/* 255 x 256KiB sectors + 4 x 64KiB sectors at the end = 259 */
+#define CONFIG_SYS_MAX_FLASH_SECT      259
+/* Store environment at top of flash in the same location as blank.img */
+/* in the Juno firmware. */
+#define CONFIG_ENV_ADDR                        0x0BFC0000
+#define CONFIG_ENV_SECT_SIZE           0x00010000
 #else
+#define CONFIG_SYS_FLASH_BASE          0x0C000000
+/* 256 x 256KiB sectors */
+#define CONFIG_SYS_MAX_FLASH_SECT      256
+/* Store environment at top of flash */
+#define CONFIG_ENV_ADDR                        0x0FFC0000
+#define CONFIG_ENV_SECT_SIZE           0x00040000
+#endif
+
 #define CONFIG_CMD_ARMFLASH
 #define CONFIG_SYS_FLASH_CFI           1
 #define CONFIG_FLASH_CFI_DRIVER                1
 #define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_32BIT
-#define CONFIG_SYS_FLASH_BASE          0x08000000
-#define CONFIG_SYS_FLASH_SIZE          0x04000000 /* 64 MiB */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2
+#define CONFIG_SYS_MAX_FLASH_BANKS     1
 
-/* Timeout values in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Erase Timeout */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Write Timeout */
-
-/* 255 0x40000 sectors + first or last sector may have 4 erase regions = 259 */
-#define CONFIG_SYS_MAX_FLASH_SECT      259             /* Max sectors */
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* use buffered writes */
 #define CONFIG_SYS_FLASH_PROTECTION    /* The devices have real protection */
 #define CONFIG_SYS_FLASH_EMPTY_INFO    /* flinfo indicates empty blocks */
+#define FLASH_MAX_SECTOR_SIZE          0x00040000
+#define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
+#define CONFIG_ENV_IS_IN_FLASH         1
 
-#endif
 
 #endif /* __VEXPRESS_AEMV8A_H */