[v3,14/15] sunxi: Transition from the MMC to a FAT-based environment

Message ID e0e4536536de19bd774dd08465c281eadfc8871b.1516723179.git-series.maxime.ripard@free-electrons.com
State Accepted
Commit b39117cad9d7a0c48fbcb5963f9bce36ba37cd39
Headers show
Series
  • env: Multiple env support and env transition for sunxi
Related show

Commit Message

Maxime Ripard Jan. 23, 2018, 8:17 p.m.
The current environment has been hardcoded to an offset that starts to be
an issue given the current size of our main U-Boot binary.

By implementing a custom environment location routine, we can always favor
the FAT-based environment, and fallback to the MMC if we don't find
something in the FAT partition. We also implement the same order when
saving the environment, so that hopefully we can slowly migrate the users
over to FAT-based environment and away from the raw MMC one.

Eventually, and hopefully before we reach that limit again, we will have
most of our users using that setup, and we'll be able to retire the raw
environment, and gain more room for the U-Boot binary.

Reviewed-by: Lukasz Majewski <lukma@denx.de>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 board/sunxi/board.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Tom Rini Jan. 27, 2018, 7:21 p.m. | #1
On Tue, Jan 23, 2018 at 09:17:03PM +0100, Maxime Ripard wrote:

> The current environment has been hardcoded to an offset that starts to be

> an issue given the current size of our main U-Boot binary.

> 

> By implementing a custom environment location routine, we can always favor

> the FAT-based environment, and fallback to the MMC if we don't find

> something in the FAT partition. We also implement the same order when

> saving the environment, so that hopefully we can slowly migrate the users

> over to FAT-based environment and away from the raw MMC one.

> 

> Eventually, and hopefully before we reach that limit again, we will have

> most of our users using that setup, and we'll be able to retire the raw

> environment, and gain more room for the U-Boot binary.

> 

> Reviewed-by: Lukasz Majewski <lukma@denx.de>

> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>


Applied to u-boot/master, thanks!

-- 
Tom

Patch

diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index dcacdf3e626d..8891961dcc6b 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -173,6 +173,22 @@  void i2c_init_board(void)
 #endif
 }
 
+#if defined(CONFIG_ENV_IS_IN_MMC) && defined(CONFIG_ENV_IS_IN_FAT)
+enum env_location env_get_location(enum env_operation op, int prio)
+{
+	switch (prio) {
+	case 0:
+		return ENVL_FAT;
+
+	case 1:
+		return ENVL_MMC;
+
+	default:
+		return ENVL_UNKNOWN;
+	}
+}
+#endif
+
 /* add board specific code here */
 int board_init(void)
 {