Define and use CONFIG_ENV_ADDR_FLEX and CONFIG_ENV_SIZE_FLEX
for storing environment variables.

Signed-off-by: Rohit Hagargundgi <h.ro...@samsung.com>
Signed-off-by: Amul Kumar Saha <amul.s...@samsung.com>
---
 common/env_onenand.c      |   10 ++++++++++
 include/configs/apollon.h |    2 ++
 2 files changed, 12 insertions(+)

diff --git a/common/env_onenand.c b/common/env_onenand.c
index dcf09de..23d2caa 100644
--- a/common/env_onenand.c
+++ b/common/env_onenand.c
@@ -60,11 +60,14 @@ uchar env_get_char_spec(int index)
 void env_relocate_spec(void)
 {
        struct mtd_info *mtd = &onenand_mtd;
+       struct onenand_chip *this = &onenand_chip;
        loff_t env_addr;
        int use_default = 0;
        size_t retlen;

        env_addr = CONFIG_ENV_ADDR;
+       if (FLEXONENAND(this))
+               env_addr = CONFIG_ENV_ADDR_FLEX;

        /* Check OneNAND exist */
        if (mtd->writesize)
@@ -91,6 +94,7 @@ void env_relocate_spec(void)
 int saveenv(void)
 {
        struct mtd_info *mtd = &onenand_mtd;
+       struct onenand_chip *this = &onenand_chip;
        loff_t env_addr = CONFIG_ENV_ADDR;
        struct erase_info instr = {
                .callback       = NULL,
@@ -98,6 +102,12 @@ int saveenv(void)
        size_t retlen;

        instr.len = CONFIG_ENV_SIZE;
+       if (FLEXONENAND(this)) {
+               env_addr = CONFIG_ENV_ADDR_FLEX;
+               instr.len = CONFIG_ENV_SIZE_FLEX;
+               instr.len <<= onenand_mtd.eraseregions[0].numblocks == 1 ?
+                               1 : 0;
+       }
        instr.addr = env_addr;
        instr.mtd = mtd;
        if (mtd->erase(mtd, &instr)) {
diff --git a/include/configs/apollon.h b/include/configs/apollon.h
index 575f60e..ddac5fb 100644
--- a/include/configs/apollon.h
+++ b/include/configs/apollon.h
@@ -76,6 +76,7 @@
  * Size of malloc() pool
  */
 #define        CONFIG_ENV_SIZE SZ_128K /* Total Size of Environment Sector */
+#define CONFIG_ENV_SIZE_FLEX SZ_256K
 #define        CONFIG_SYS_MALLOC_LEN   (CONFIG_ENV_SIZE + SZ_1M)
 /* bytes reserved for initial data */
 #define        CONFIG_SYS_GBL_DATA_SIZE        128
@@ -255,6 +256,7 @@
 #define CONFIG_SYS_MONITOR_LEN         SZ_256K /* U-Boot image size */
 #define        CONFIG_ENV_IS_IN_ONENAND        1
 #define CONFIG_ENV_ADDR                0x00020000
+#define CONFIG_ENV_ADDR_FLEX   0x00040000

 #define CONFIG_SYS_64BIT_VSPRINTF              /* needed for nand_util.c */



_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to