From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 21524C77B75 for ; Fri, 21 Apr 2023 10:58:34 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C7E6986334; Fri, 21 Apr 2023 12:57:28 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eegAiY+8"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 90188862EE; Fri, 21 Apr 2023 12:57:19 +0200 (CEST) Received: from mail-ot1-x329.google.com (mail-ot1-x329.google.com [IPv6:2607:f8b0:4864:20::329]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 568728629E for ; Fri, 21 Apr 2023 12:57:16 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=festevam@gmail.com Received: by mail-ot1-x329.google.com with SMTP id 46e09a7af769-6a603577a89so294274a34.0 for ; Fri, 21 Apr 2023 03:57:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682074636; x=1684666636; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CM9f6W/CbTmJ6tKJsaRoxugyl/wOrDcdET62aFuyxOE=; b=eegAiY+8mu82hlf7ntrAh2/Ta+t0LGcyVu2YPjJlDnrj53Tw+PT9A7jsmC3oSrnm9e lxC9+ai5hQc1QAOkhddMF1IEWTzBqfialmwA4FWhSQAXsjgtxfboOCYlMaQ7gbGRFG8n uqTICaLkpToVdNrXDmeiaS0vXNFl3emWAlANpXWbA67pbuG6SG+vxJEhi1+RYuDbs70v Fq3rx4bYjOmclT+BIYTxuAxhA3+yyWjATfnYVIyQuFK1tNp6V7YKO3boF95dpkxAFpUv 3IZoYhQbMUXvItRZPebF2QzkSNgC7TH96yyFQb4UEJKgg0UnvKRWBM8Nq+/uopu0Iptg 371Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682074636; x=1684666636; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CM9f6W/CbTmJ6tKJsaRoxugyl/wOrDcdET62aFuyxOE=; b=ji5T+bO+izBGIsDR+Ay74h3kIMaU1ySZQaieXSB4wewHQcjIPpghmZEpCGreCOPdIj kzFJ0Irw48mo2aVwMhb+sKrVXcXEJGvZ7P+hm/v5ZG8CsYvYtRfFRsoFNJAWyioMx1TY SX0u1eonslFxXm//1T/U20GfRN5lWJoGEhwWUauOtoUiUIxnemQ4/tK0ieKd3PUTR7j0 WB35n5hZf1ZSC9rmnGqUXiMa7eYMNJ0VLd2jPP0e93aIkNZE8A3qsl93aRK53UtdDaJk jd8ZMXhdakDFpRwL8zUIUiJJLKDbLJKrT6s2jblF6QTYtwAwQRzpZtxBM3m5AGZWLnke ZryA== X-Gm-Message-State: AAQBX9eAkFpJ11yNoVKiIFt10UNEKLKDYuYSw1Og5cm1uIBh33vsVldP f4E9wxB3lyUHOtEA3fCf08PQ8pqwU+oHig== X-Google-Smtp-Source: AKy350ZBDY2bdELMJelg12xQUy3e3qPessnoilxANn7VIFcI1Y8IJTYI6a7JK0iHOXgicFxqguTbPw== X-Received: by 2002:aca:e08a:0:b0:386:9c02:89eb with SMTP id x132-20020acae08a000000b003869c0289ebmr2603207oig.3.1682074635742; Fri, 21 Apr 2023 03:57:15 -0700 (PDT) Received: from fabio-Precision-3551.. ([2804:14c:485:4b69:ada1:37ca:9336:4705]) by smtp.gmail.com with ESMTPSA id ay13-20020a056808300d00b0038e086c764dsm1508354oib.43.2023.04.21.03.57.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 03:57:15 -0700 (PDT) From: Fabio Estevam To: sbabic@denx.de Cc: eduard@lionizers.com, u-boot@lists.denx.de, Fabio Estevam , =?UTF-8?q?Pali=20Roh=C3=A1r?= Subject: [PATCH v2 7/7] smegw01: Enable EMMC boot from multiple partitions Date: Fri, 21 Apr 2023 07:56:50 -0300 Message-Id: <20230421105656.1062558-7-festevam@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230421105656.1062558-1-festevam@gmail.com> References: <20230421105656.1062558-1-festevam@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean From: Eduard Strehlau 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 Signed-off-by: Fabio Estevam --- Changes since v1: - Remove custom mmc macro (Pali) - Handle all the possible partition cases (Pali). Cc: Pali Rohár board/storopack/smegw01/smegw01.c | 32 +++++++++++++++++++++++++++++++ configs/smegw01_defconfig | 2 ++ include/configs/smegw01.h | 12 ++++++++---- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/board/storopack/smegw01/smegw01.c b/board/storopack/smegw01/smegw01.c index e6bff80e5565..db6069a02722 100644 --- a/board/storopack/smegw01/smegw01.c +++ b/board/storopack/smegw01/smegw01.c @@ -17,6 +17,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -93,3 +94,34 @@ int board_late_init(void) return 0; } + +uint mmc_get_env_part(struct mmc *mmc) +{ + uint part; + + if (mmc->part_config == MMCPART_NOAVAILABLE) { + part = 0; + } else { + switch (EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config)) { + case 0: /* Booting from this eMMC device is disabled */ + printf("Error - Booting from this eMMC device is disabled\n"); + printf("Hint: Use 'mmc partconf' command to choose boot partition\n"); + return -ENODEV; + case 1: /* Boot partition 1 is used for booting */ + part = 1; + break; + case 2: /* Boot partition 2 is used for booting */ + part = 2; + break; + case 7: /* User area is used for booting */ + part = 0; + break; + default: /* Other values are reserved / unsupported */ + printf("Error - This eMMC device has configured Reserved boot option\n"); + printf("Hint: Use 'mmc partconf' command to choose boot partition\n"); + return -ENODEV; + } + } + + 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