public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Fabio Estevam <festevam@gmail.com>
To: sbabic@denx.de
Cc: eduard@lionizers.com, u-boot@lists.denx.de,
	Fabio Estevam <festevam@denx.de>
Subject: [PATCH v5 07/14] smegw01: Enable EMMC boot from multiple partitions
Date: Wed, 26 Apr 2023 13:04:54 -0300	[thread overview]
Message-ID: <20230426160501.1199085-7-festevam@gmail.com> (raw)
In-Reply-To: <20230426160501.1199085-1-festevam@gmail.com>

From: Eduard Strehlau <eduard@lionizers.com>

GPT Partition labels are used for determining the right
root filesystem to boot from.

The U-Boot environment is configured to reside in the eMMC hardware
boot partition we are currently booted from.

This should enable a dual copy approach for upgrading the bootloader.
One can overwrite the inactive hardware partition with new bootloader
and environment and afterwards switch the eMMC boot partition for an
atomic bootloader switch.

Signed-off-by: Eduard Strehlau <eduard@lionizers.com>
Signed-off-by: Fabio Estevam <festevam@denx.de>
---
Changes since v4:
- None

 board/storopack/smegw01/smegw01.c | 10 ++++++++++
 configs/smegw01_defconfig         |  2 ++
 include/configs/smegw01.h         | 12 ++++++++----
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/board/storopack/smegw01/smegw01.c b/board/storopack/smegw01/smegw01.c
index e6bff80e5565..7d4de9326d6f 100644
--- a/board/storopack/smegw01/smegw01.c
+++ b/board/storopack/smegw01/smegw01.c
@@ -17,6 +17,7 @@
 #include <asm/arch/crm_regs.h>
 #include <asm/setup.h>
 #include <asm/bootm.h>
+#include <mmc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -93,3 +94,12 @@ int board_late_init(void)
 
 	return 0;
 }
+
+uint board_mmc_get_env_part(struct mmc *mmc)
+{
+	uint part = EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config);
+
+	if (part == 7)
+		part = 0;
+	return part;
+}
diff --git a/configs/smegw01_defconfig b/configs/smegw01_defconfig
index b3580d5d6e54..54cf1cfc1f1b 100644
--- a/configs/smegw01_defconfig
+++ b/configs/smegw01_defconfig
@@ -30,6 +30,7 @@ CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_UNZIP=y
 CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_GPT=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_PART=y
 CONFIG_CMD_DHCP=y
@@ -44,6 +45,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_ENV_OVERWRITE=y
 CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_SYS_MMC_ENV_DEV=1
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_BOUNCE_BUFFER=y
 CONFIG_BOOTCOUNT_LIMIT=y
diff --git a/include/configs/smegw01.h b/include/configs/smegw01.h
index 277c828d0e07..71f2d9c8e85c 100644
--- a/include/configs/smegw01.h
+++ b/include/configs/smegw01.h
@@ -32,17 +32,21 @@
 	"mmcpart=1\0" \
 	"mmcpart_committed=1\0" \
 	"mmcargs=setenv bootargs console=${console},${baudrate} " \
-		"root=/dev/mmcblk0p${mmcpart_committed} rootwait rw " \
-		__stringify(EXTRA_BOOTPARAMS) "\0" \
+		"root=/dev/mmcblk${mmcdev}p${gpt_partition_entry} rootwait rw " \
+		__stringify(EXTRA_BOOTPARAMS) " SM_ROOT_DEV=${mmcdev} SM_ROOT_PART=${gpt_partition_entry} SM_BOOT_PART=${boot_part}\0" \
 	"commit_mmc=if test \"${ustate}\" = 1 -a \"${mmcpart}\" != \"${mmcpart_committed}\"; then " \
 	              "setenv mmcpart_committed ${mmcpart};" \
 								"saveenv;" \
 						  "fi;\0" \
 	"bootlimit=3\0" \
-	"loadimage=load mmc ${mmcdev}:${mmcpart_committed} ${loadaddr} boot/${image}\0" \
-	"loadfdt=load mmc ${mmcdev}:${mmcpart_committed} ${fdt_addr} boot/${fdtfile}\0" \
+	"loadimage=load mmc ${mmcdev}#rootfs-${mmcpart_committed} ${loadaddr} boot/${image}\0" \
+	"loadfdt=load mmc ${mmcdev}#rootfs-${mmcpart_committed} ${fdt_addr} boot/${fdtfile}\0" \
+	"loadpart=gpt setenv mmc ${mmcdev} rootfs-${mmcpart_committed}\0" \
+	"loadbootpart=mmc partconf 1 boot_part\0" \
 	"mmcboot=echo Booting from mmc ...; " \
 	  "run commit_mmc; " \
+		"run loadpart; " \
+		"run loadbootpart; " \
 		"run mmcargs; " \
 		"if run loadfdt; then " \
 			"if bootz ${loadaddr} - ${fdt_addr}; then " \
-- 
2.34.1


  parent reply	other threads:[~2023-04-26 16:06 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-26 16:04 [PATCH v5 01/14] smegw01: Enable setting additional boot params Fabio Estevam
2023-04-26 16:04 ` [PATCH v5 02/14] smegw01: Select CONFIG_CMD_SQUASHFS Fabio Estevam
2023-05-02 12:46   ` sbabic
2023-04-26 16:04 ` [PATCH v5 03/14] smegw01: Select bootcount support Fabio Estevam
2023-05-02 12:46   ` sbabic
2023-04-26 16:04 ` [PATCH v5 04/14] smegw01: Add altbootcmd Fabio Estevam
2023-05-02 12:47   ` sbabic
2023-04-26 16:04 ` [PATCH v5 05/14] smegw01: Run altbootcmd in the case of failure Fabio Estevam
2023-05-02 12:47   ` sbabic
2023-04-26 16:04 ` [PATCH v5 06/14] smegw01: Only commit to new partition if update was successful Fabio Estevam
2023-05-02 12:47   ` sbabic
2023-04-26 16:04 ` Fabio Estevam [this message]
2023-05-02 12:47   ` [PATCH v5 07/14] smegw01: Enable EMMC boot from multiple partitions sbabic
2023-04-26 16:04 ` [PATCH v5 08/14] smegw01: Change default boot device to eMMC Fabio Estevam
2023-05-02 12:46   ` sbabic
2023-04-26 16:04 ` [PATCH v5 09/14] smegw01: Switch to fitImage Fabio Estevam
2023-05-02 12:47   ` sbabic
2023-04-26 16:04 ` [PATCH v5 10/14] smegw01: Add lockdown U-Boot env support Fabio Estevam
2023-05-02 12:47   ` sbabic
2023-04-26 16:04 ` [PATCH v5 11/14] smegw01: Read the second MAC address Fabio Estevam
2023-05-02 12:46   ` sbabic
2023-04-26 16:04 ` [PATCH v5 12/14] smegw01: Disable additional boot menu options Fabio Estevam
2023-05-02 12:47   ` sbabic
2023-04-26 16:05 ` [PATCH v5 13/14] smegw01: Fix fallback to altbootcmd Fabio Estevam
2023-05-02 12:46   ` sbabic
2023-04-26 16:05 ` [PATCH v5 14/14] smegw01: Convert CFG_EXTRA_ENV_SETTINGS to an env file Fabio Estevam
2023-04-26 17:31   ` Tom Rini
2023-05-02 12:47   ` sbabic
2023-05-02 12:47 ` [PATCH v5 01/14] smegw01: Enable setting additional boot params sbabic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230426160501.1199085-7-festevam@gmail.com \
    --to=festevam@gmail.com \
    --cc=eduard@lionizers.com \
    --cc=festevam@denx.de \
    --cc=sbabic@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox