From patchwork Wed Jun 26 10:29:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Wunderlich X-Patchwork-Id: 1122662 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="Yr7o4Lvr"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45YfQp3NpFz9s3C for ; Wed, 26 Jun 2019 20:29:22 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 0F0D5C21C6A; Wed, 26 Jun 2019 10:29:17 +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 EEAC1C21C3F; Wed, 26 Jun 2019 10:29:15 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 10536C21C3F; Wed, 26 Jun 2019 10:29:14 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by lists.denx.de (Postfix) with ESMTPS id AA684C21C29 for ; Wed, 26 Jun 2019 10:29:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1561544950; bh=vifwBPNSZVDUrQW2Nh6IefzPDfsbwCXLgCiizSAHGf8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Yr7o4LvrkBfDOemcM7LmUQt87h5LQ0shiHPRtd8ytOlDG/kl72GSV3hSDubN8H08t abMMBd5v9bJ8k+3a1MxCneU2IFxIFcXOgJU9jCrrk7sVd/K0c20rOH+PwiaqOcdTl6 mxZkffcLHxHGSVClvRMLrZXZ9D+NWzy4eATRjSpU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([217.61.152.53]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M72sP-1heApO3uxD-008Y8c; Wed, 26 Jun 2019 12:29:09 +0200 From: Frank Wunderlich To: u-boot@lists.denx.de, simon.k.r.goldschmidt@gmail.com Date: Wed, 26 Jun 2019 12:29:02 +0200 Message-Id: <20190626102902.8075-3-frank-w@public-files.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190626102902.8075-1-frank-w@public-files.de> References: <20190626102902.8075-1-frank-w@public-files.de> X-Provags-ID: V03:K1:mNPaQutAclWC4xhtAF/MDiQAaB2AgxtO4tbnkVb8if1CnPPHShA MVRe6l8W5Uvw8xSWeID+woWZ96a3mHxg9XnWkbc16xLutFtRWlf+vC+8f/FPEPlJ3RKp420 c9nEZpUml+IzL56+B9hfEIrfQ8KUjlYArQwVjFAZuOONFv1ROS4d65akmkuSHmh89KsU7am 7dyANM/mTfhi5KU2oQqcw== X-UI-Out-Filterresults: notjunk:1; V03:K0:1yQdmmuY3vI=:s+iSdCWfYE6k8q0Pm/Rioo NAsQk8Il9HgRXlAoOj64E5B8kbyXMKHZZcI9T1WcPM78N6wMQcE2WpXzA79L3FZs0F4GsqoPl CdC6M94lNvV6by9ASxub7Uzl/UhMakke9+aUapoC+Tpw+nlgPLsw1iUWDJnJv6avEGczCgH+m +x77KmhdPrAe7LDwDpueqyGwcJ4qmAkHFvKpiJw2fNG4GRaRpFLSMdomhXP6ASN9J8vnuVNTd NF5MQhjyOiyEzPcHwvGI0/xA5SMff7m7RU8U3QLKg3DKXXLt1SciMGq+O1ehOnXqm3qcmsoBO ojq7LthsEYzienUfermU3O/6f3sTPEeZeXOsKvEXy0haAzcTmAu2zdcVIVMr9K9kn8l9OTt6V pSLUdUciWyyxBOwVyyccsxalz/zte2WK+ZBPbih6jVGBLfESg77NbKhj+/MS8Rb7NISK//4se RWTBAKClfWlh06sJMcddMq9LZjqXQihQT0YAAoEOkm1iafCzL5Vx6kze9BuwIbm1tlVxi2ITK H0K2rT9gcQtNW6PLy9nS0EjclXYJRHYLG0kzZwAt7X4z0jMWSmyZli0tIvLUsTAQSKPRZOaoX NnhRjS65mrLNXBIVAK9s1aOSl3SPsI6xTwHNvCOSgbncOpeVWgTgkubB2pv6vg3BOaQ99e73b ACGbGc1UXBKYAzb9BHWDqVCQYnihc5WB5fzvOx8uxoeK6GG5sLYzr/pv/025KEPXItpm4sBfj 0C5UJezhObaYpCxBX+fZa0sMgYi5poYc4SYKIVS0B62QeyBKW5jKWr/W+tPrzuzyltdHSc8Vw yC/K55oYV3ewOigX1Tl+D3x0ZnKnj2rZpDXUlO7dYIH3B2dWZfGubiv7DP2kIqyKMI6kbORiB 6JqgOfW8y6XzBFqJn3Hqi3Vvei8K0LGyx6amtUO9r0of0r/EkWGKFffSsSkopguYgP75TmHWl 8yxKKNdNAa2GBnqUDmN2wCRZnH51wQmE= Subject: [U-Boot] [PATCH v5 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" this adds erase environment for mmc storage squashed fixes: - add CONFIG_CMD_ERASEENV - env: erase redundant offset if defined Suggested-by: Simon Goldschmidt Signed-off-by: Frank Wunderlich --- env/mmc.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) -- 2.17.1 diff --git a/env/mmc.c b/env/mmc.c index c3cf35d01b..da5cf21637 100644 --- a/env/mmc.c +++ b/env/mmc.c @@ -242,6 +242,55 @@ fini: fini_mmc_for_env(mmc); return ret; } + +#if defined(CONFIG_CMD_ERASEENV) +static inline int erase_env(struct mmc *mmc, unsigned long size, + unsigned long offset) +{ + uint blk_start, blk_cnt, n; + struct blk_desc *desc = mmc_get_blk_desc(mmc); + + blk_start = ALIGN(offset, mmc->write_bl_len) / mmc->write_bl_len; + blk_cnt = ALIGN(size, mmc->write_bl_len) / mmc->write_bl_len; + + n = blk_derase(desc, blk_start, blk_cnt); + printf("%d blocks erased: %s\n", n, (n == blk_cnt) ? "OK" : "ERROR"); + + return (n == blk_cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE; +} + +static int env_mmc_erase(void) +{ + int dev = mmc_get_env_dev(); + struct mmc *mmc = find_mmc_device(dev); + int ret, copy = 0; + u32 offset; + + if (!mmc) + return CMD_RET_FAILURE; + + if (mmc_getwp(mmc) == 1) { + printf("Error: card is write protected!\n"); + return CMD_RET_FAILURE; + } + + if (mmc_get_env_addr(mmc, copy, &offset)) + return CMD_RET_FAILURE; + + ret = erase_env(mmc, CONFIG_ENV_SIZE, offset); + +#ifdef CONFIG_ENV_OFFSET_REDUND + copy = 1; + + if (mmc_get_env_addr(mmc, copy, &offset)) + return CMD_RET_FAILURE; + + ret |= erase_env(mmc, CONFIG_ENV_SIZE, offset); +#endif + + return ret; +} +#endif /* CONFIG_CMD_ERASEENV */ #endif /* CONFIG_CMD_SAVEENV && !CONFIG_SPL_BUILD */ static inline int read_env(struct mmc *mmc, unsigned long size, @@ -351,5 +400,8 @@ U_BOOT_ENV_LOCATION(mmc) = { .load = env_mmc_load, #ifndef CONFIG_SPL_BUILD .save = env_save_ptr(env_mmc_save), +#if defined(CONFIG_CMD_ERASEENV) + .erase = env_mmc_erase, +#endif #endif };