From patchwork Mon Apr 8 10:33:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Wunderlich X-Patchwork-Id: 1080865 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=public-files.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="ZcjDjeTU"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 44d6HK699xz9sQx for ; Mon, 8 Apr 2019 20:34:37 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 96F83C21E13; Mon, 8 Apr 2019 10:34:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 494D2C21DFD; Mon, 8 Apr 2019 10:34:00 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1CAF1C21E2B; Mon, 8 Apr 2019 10:33:56 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id CF042C21DD9 for ; Mon, 8 Apr 2019 10:33:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1554719633; bh=KzC1XIoZodmey2Tyvz1xJL/9hremkqOBLdHyGurEtWw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=ZcjDjeTUyjs3rNCk7T8rPN0xNgb44MztDgbRPYf52Cik/T3xOmigdJnUbJ1vs6rUd Y8CErlbsDTSs5pNs0FWI0oZDFPSjIwIrhy8J2rbqwwH+C34F+Aky1JPoTz92IEDGNj aw9+j0bPFBL6wtiGA7wzRvEm6U/RG7clnBrl+76A= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([185.76.96.78]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M1FAK-1gtrNh1YcK-00tBdG; Mon, 08 Apr 2019 12:33:53 +0200 From: Frank Wunderlich To: u-boot@lists.denx.de Date: Mon, 8 Apr 2019 12:33:44 +0200 Message-Id: <20190408103345.5884-2-frank-w@public-files.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408103345.5884-1-frank-w@public-files.de> References: <20190408103345.5884-1-frank-w@public-files.de> X-Provags-ID: V03:K1:ME8HH6P3ksyJYo+X7Bl8FyriRD2ntIbIg0pctkNJiw/obWNZcFM ROhvavGHh0ikdCLDg1hp6nFQ8nHMPt9RZvFHDZJ6CzNqkLJkn0bVufM5z3OqyRRcn4chkvf 75gvu63idU55wbo1XSkU4E4JfZzZFLuBrqpQMpRYgeSq9ofBjP+jT0bGyS3s5ImIobkiHEa KrMWHzelNGNITYnmkph5A== X-UI-Out-Filterresults: notjunk:1; V03:K0:h+DMfbIzGCQ=:0tzHwndyL9GE/qfj+SV+2c btkW7wsWOS7kEXQ7NpwuhXYgTKIHJbt3EMp/0jYQR+uGHSurW4ySofmPTXdB5kS9prQmkwfVd cHtZOLTB7UHtGEbGZXaBknw+gZqCtsGu+9kKRUCGYJ7q2fWY93MupfFrc1KSzmdAkilzKBktB dn8kUInL607eSbXvXwrZJECUC4HYOcS8vSWyCHqLzXipAz2MkZsuY0AAv5duDgtwiGpFEACcd gnxvp3HrnYSkstPxbLauG9CU7el+hkUrHAJZ5ZPbgqomHNed8bR4SjOINc5rYD8jJJhCNUu7a Yl+vNbL3ScO8dKPDXA9mXe6oSV+NRbRTvAPp+IRCkg5FY93F1333PIcCM6Ibwk5AHnH8xE6Ra 69fMivA9U8cJGgeJ4rCfNT3tiEwLQ8RsGQnX+H/E54VcMEDglqXCPqB/bRxT9kGBWWT3AsJEQ R5HvJWlhTPTWiksnuXU53I/nNPcfTb6i38iKIfZuKmGzKebUOAvJkuQGcph99UToUJO/NAwH8 iIAiwJqymCM7zc+4wvipSHI4kKRCpLQMgr2ryp6dxto+nGrZUJcf6J5O4j/RrzfrnLid4Tkyr B5JhUGsGYWQIBpLDLzyX3FDmo8Xktv+uwxSBTSVZXmja06ZkkfY/CofbpGZ7zS0UKKMnHuR/H yJI860OfHyWKVtV7s0xRFO9245hNgwqZPlNRkF1GYm0eNVrWbEhAJmapK/6ST0mV7ngETUz36 20VQ2WMcbyi0JSnA6i1Tm+mJ4mmvXxU6S5pk1WSutcPAO8XDGhE1n8ZCX5abRKE5jncXt8mVz 9XfZs5AuZ5rVNSWbUavQ3UzC8rERKTrLcf+6E1MQJN/+3BFLlIj+qLFuUYdOPbt3eFmFm7ZwO NPXHF49OTLloZtQftkATNV0eekpk2pw1D3y6hto+GSBRUP8b7qbUBGKa/tBLKm Subject: [U-Boot] [PATCH v2 1/2] env: register erase command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Frank Wunderlich --- cmd/nvedit.c | 13 +++++++++++++ env/env.c | 30 ++++++++++++++++++++++++++++++ env/mmc.c | 7 +++++++ include/environment.h | 17 +++++++++++++++++ 4 files changed, 67 insertions(+) -- 2.17.1 diff --git a/cmd/nvedit.c b/cmd/nvedit.c index 24a6cf7824..3b5c62d629 100644 --- a/cmd/nvedit.c +++ b/cmd/nvedit.c @@ -756,11 +756,22 @@ static int do_env_save(cmd_tbl_t *cmdtp, int flag, int argc, return env_save() ? 1 : 0; } +static int do_env_erase(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + return env_erase() ? 1 : 0; +} + U_BOOT_CMD( saveenv, 1, 0, do_env_save, "save environment variables to persistent storage", "" ); +U_BOOT_CMD( + eraseenv, 1, 0, do_env_erase, + "erase environment variables from persistent storage", + "" +); #endif #endif /* CONFIG_SPL_BUILD */ @@ -1207,6 +1218,7 @@ static cmd_tbl_t cmd_env_sub[] = { #endif #if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE) U_BOOT_CMD_MKENT(save, 1, 0, do_env_save, "", ""), + U_BOOT_CMD_MKENT(erase, 1, 0, do_env_erase, "", ""), #endif U_BOOT_CMD_MKENT(set, CONFIG_SYS_MAXARGS, 0, do_env_set, "", ""), #if defined(CONFIG_CMD_ENV_EXISTS) @@ -1282,6 +1294,7 @@ static char env_help_text[] = #endif #if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE) "env save - save environment\n" + "env erase - erase environment\n" #endif #if defined(CONFIG_CMD_NVEDIT_EFI) "env set -e name [arg ...] - set UEFI variable; unset if 'arg' not specified\n" diff --git a/env/env.c b/env/env.c index 4b417b90a2..25441370e6 100644 --- a/env/env.c +++ b/env/env.c @@ -24,6 +24,8 @@ void env_fix_drivers(void) entry->load += gd->reloc_off; if (entry->save) entry->save += gd->reloc_off; + if (entry->erase) + entry->erase += gd->reloc_off; if (entry->init) entry->init += gd->reloc_off; } @@ -254,6 +256,34 @@ int env_save(void) return -ENODEV; } +int env_erase(void) +{ + struct env_driver *drv; + + drv = env_driver_lookup(ENVOP_ERASE, gd->env_load_prio); + if (drv) { + int ret; + + if (!drv->erase) + return -ENODEV; + + if (!env_has_inited(drv->location)) + return -ENODEV; + + printf("Erase Environment on %s... ", drv->name); + ret = drv->erase(); + if (ret) + printf("Failed (%d)\n", ret); + else + printf("OK\n"); + + if (!ret) + return 0; + } + + return -ENODEV; +} + int env_init(void) { struct env_driver *drv; diff --git a/env/mmc.c b/env/mmc.c index c3cf35d01b..c5b6356363 100644 --- a/env/mmc.c +++ b/env/mmc.c @@ -242,6 +242,12 @@ fini: fini_mmc_for_env(mmc); return ret; } + +static int env_mmc_erase(void) +{ + return 0;//1 on error +} + #endif /* CONFIG_CMD_SAVEENV && !CONFIG_SPL_BUILD */ static inline int read_env(struct mmc *mmc, unsigned long size, @@ -351,5 +357,6 @@ U_BOOT_ENV_LOCATION(mmc) = { .load = env_mmc_load, #ifndef CONFIG_SPL_BUILD .save = env_save_ptr(env_mmc_save), + .erase = env_mmc_erase, #endif }; diff --git a/include/environment.h b/include/environment.h index cd96676141..5024cbea7e 100644 --- a/include/environment.h +++ b/include/environment.h @@ -200,6 +200,7 @@ enum env_operation { ENVOP_INIT, /* we want to call the init function */ ENVOP_LOAD, /* we want to call the load function */ ENVOP_SAVE, /* we want to call the save function */ + ENVOP_ERASE, /* we want to call the erase function */ }; struct env_driver { @@ -225,6 +226,15 @@ struct env_driver { */ int (*save)(void); + /** + * erase() - Erase the environment on storage + * + * This method is required for 'eraseenv' to work. + * + * @return 0 if OK, -ve on error + */ + int (*erase)(void); + /** * init() - Set up the initial pre-relocation environment * @@ -303,6 +313,13 @@ int env_load(void); */ int env_save(void); +/** + * env_erase() - Erase the environment on storage + * + * @return 0 if OK, -ve on error + */ +int env_erase(void); + /** * env_fix_drivers() - Updates envdriver as per relocation */ From patchwork Mon Apr 8 10:33:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Wunderlich X-Patchwork-Id: 1080866 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=public-files.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="jk7mMkZp"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 44d6HY0cp9z9sR1 for ; Mon, 8 Apr 2019 20:34:49 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id B35E7C21E0B; Mon, 8 Apr 2019 10:34:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id CA666C21E29; Mon, 8 Apr 2019 10:34:01 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 115E4C21E07; Mon, 8 Apr 2019 10:33:58 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id DD0DAC21DFD for ; Mon, 8 Apr 2019 10:33:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1554719634; bh=9vUjk9IwNP1sFjW9dpUwfd/UyoiqIy8ICXEQ7jM0G10=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=jk7mMkZpSAIQGZYiLMoygJSFeZ9QYGC04WRoxDkwKJCSrRur3PXayh/GiXbkeu9k6 eMFvBV9tPI2+eh0aKZnoOtXvfouUQQEp0JvJm2czI3lIxw0fpy41ThP+NeaU4Rto2K eduP6TEeOnLuiD8AZoElQV44oaK7gIgRq/XanGv4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([185.76.96.78]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MNIO5-1hFOTD2Avp-006ycp; Mon, 08 Apr 2019 12:33:54 +0200 From: Frank Wunderlich To: u-boot@lists.denx.de Date: Mon, 8 Apr 2019 12:33:45 +0200 Message-Id: <20190408103345.5884-3-frank-w@public-files.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408103345.5884-1-frank-w@public-files.de> References: <20190408103345.5884-1-frank-w@public-files.de> X-Provags-ID: V03:K1:535jegrKD02Ab4Ch9+A0nLigns9t5a8wC9gAaod6nbdnIRPqSBA WFWVP822knEedxMi3oGo0A+8IMSeiWrkU8oQBtxCngEA70XUec16AlWGyCxPZX3SNJfZLDV wuLSgwfTxM/fq728Fy7Bjm5sQ/USSxbYEp/5jkAXYbVrdFAhpL0z6tP0KC0zw5V+iznl5pU 8n2w3TXxOOml0TfE1Qazw== X-UI-Out-Filterresults: notjunk:1; V03:K0:PFNUIusDRmc=:pDq1LIMy/jrjs3F7jeO4Lf aFX3FaceOyw8ZhVXnLYxnCI5krGuU3WfoKhluY24GbdfvHllCx6HxwoFCRf0Syw+Uj7X1OGPp psesxKOpA/uv5llP2helalY7q6I6bzQuYHMqvST39eCmjPY1GGqiaTnThnQi3dX0o6kOPHlEk 4syaAkn0sYK2EZ57AP6CAq/V1mI9LJ07ikVKBXiWMfqAx3rd+bUSCQkxpuszaGYcANpAcXRHl C0mbXDZ7tDnmlK4cvcgd4/NR4bo1lyDWNlsewAc8NNdjfAu9umQqx8dZVWZ3/Qko8Zx0NXBeV L1iHHdQHao1Zn5O77Z54nX9Vt7BKt4c5aXY5VgAYreuz5BTbiDDg9gIH3+StkBvQo5O2+L9H4 d97qWFvI68I77Tawt0Eh29KEwK7xoEYjipmvxTHbvxV0kjV1OhyMSQo8zljajRHefLLV9MBqM zwpXwD3spRRxMj7d1hTU+AAXe1WM0LvlUNu7DaQDIRcSjjX06wc/dYXYC7toqHqcfMKeALXQb 6Mc6I3AI375a/rgNUTOJI63VxkylBMH1L/T1ehbLLDpmSSvzDKBilzfXOjJ17y5g2Y2C6xtIi WxoL1Ucs13l+o1b1x6OqWk1JYQe9XnBV6l3Q0CpvXaNvuukpX719VrFDfreJ34fRcuE7U6QWQ 8KtVxq+uczC3UgyCKyErgL2Z5vfbgs8EapZx3sIpekx2QOiQXNF5MKqtrNFKD4if67k4/5Krq 58poVOQfi4ebk4cSsAKVHG0uViIgsmyDlX28CiyWRNX5/GyTKzy1NnHBvon+h9yu/C48KyJ/t PjHveLznpSPDYntoybggmBY0kck0B16bJkbkf718VI9wGKYwzP9RAJA4mwTrrjRGaihwvMeOO utRmfVoa9qOKjAQtGA0xhdWsMKG96pYc9QFt/U16LLrEwZz9YrZDkkBQXv2Grv Subject: [U-Boot] [PATCH v2 2/2] env: mmc: add erase-function X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Frank Wunderlich --- env/mmc.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) -- 2.17.1 diff --git a/env/mmc.c b/env/mmc.c index c5b6356363..f387a53970 100644 --- a/env/mmc.c +++ b/env/mmc.c @@ -245,7 +245,28 @@ fini: static int env_mmc_erase(void) { - return 0;//1 on error + int dev = mmc_get_env_dev(); + struct mmc *mmc = find_mmc_device(dev); + int n, blk, cnt; + + if (!mmc) + return CMD_RET_FAILURE; + + blk = CONFIG_ENV_OFFSET / mmc->read_bl_len; + cnt = CONFIG_ENV_SIZE / mmc->read_bl_len; + + printf("\nMMC erase env: dev # %d, block # %d (0x%x), count %d (0x%x)\n", + dev, blk, blk * mmc->read_bl_len, + cnt, cnt * mmc->read_bl_len); + + if (mmc_getwp(mmc) == 1) { + printf("Error: card is write protected!\n"); + return CMD_RET_FAILURE; + } + n = blk_derase(mmc_get_blk_desc(mmc), blk, cnt); + printf("%d blocks erased: %s\n", n, (n == cnt) ? "OK" : "ERROR"); + + return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE; } #endif /* CONFIG_CMD_SAVEENV && !CONFIG_SPL_BUILD */