From patchwork Thu Jan 28 07:21:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harry Waschkeit X-Patchwork-Id: 1432573 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=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=men.de header.i=@men.de header.a=rsa-sha256 header.s=secure header.b=lQ55Uy1C; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DRBjg0BQWz9sSC for ; Thu, 28 Jan 2021 18:21:32 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 285E8825F1; Thu, 28 Jan 2021 08:21:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=men.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=men.de header.i=@men.de header.b="lQ55Uy1C"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 7C138825F4; Thu, 28 Jan 2021 08:21:17 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail1.bemta26.messagelabs.com (mail1.bemta26.messagelabs.com [85.158.142.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id BF418825C4 for ; Thu, 28 Jan 2021 08:21:13 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=men.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=Harry.Waschkeit@duagon.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=men.de; s=secure; t=1611818473; i=@men.de; bh=aCNutSO6gCtSjEDEI9XWvpRq1R9o7ShC+OR605f/CLs=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:Content-Type; b=lQ55Uy1CNRLXfW4SCa8o6xlUFVhCzdFaPH9dP4/KafovO0mvT60mHpAgb0C2IUxqU ouPwzdFbEAPdwH/xn6I6tg0vDP+jVSeayX5vbQxR4uEGw39jM2W7I7aDJAClFiPe86 Nxu96CAYhQYOissyRbVHJKzxUkh5Nlnkis2o2SQk= Received: from [100.113.4.45] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-1.bemta.az-b.eu-central-1.aws.symcld.net id D6/99-38008-8E562106; Thu, 28 Jan 2021 07:21:12 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNIsWRWlGSWpSXmKPExsUS8J9tou6LVKE Eg6k3VS223pvAZPF2bye7A5PHzll32T3O3tnBGMAUxZqZl5RfkcCa8XjvMaaCFoOKW6dXsTcw /lDvYuTiEBJoYJTYcug8SxcjJ4eEgJ/E20WPmCASmxkldm5YxQLhvGWUuPf4ByOEs5dR4uHlf WxdjBwcbAJ6Et9W6YJ0iwhISbzs3MgMYjMLOEqc6J3HCGILC5hLnOrtBLNZBFQlLvzYzA5i8w pYS9zbeJcdYrO8xJ/7PcwQcUGJkzOfsEDMkZdo3jobLC4koCyx/OQTqPkSEgdfvGCG6OWUeP/ hAxPIORJAMyduTpzAKDQLyaRZSCbNQtK9gJF5FaNlUlFmekZJbmJmjq6hgYGuoaGxrpmukYmB XmKVbpJeaqlucmpeSVEiUFYvsbxYr7gyNzknRS8vtWQTIzAOUgrZPuxgnPLmg94hRkkOJiVR3 hg3oQQhvqT8lMqMxOKM+KLSnNTiQ4wyHBxKErw7koBygkWp6akVaZk5wJiESUtw8CiJ8J5JAE rzFhck5hZnpkOkTjEqSonzrk0BSgiAJDJK8+DaYGngEqOslDAvIwMDgxBPQWpRbmYJqvwrRnE ORiVh3k/JQFN4MvNK4Ka/AlrMBLT4yRk+kMUliQgpqQYmiT63Pbe6p11sTNdt/lJ2j/9aQplL +r4Lq77NszOcZaWcPX/ptJOrZlnJamTafXws2ZJh+e1XxeOJj4ouNxT3JqYE5eRyPGFaut/vb FSHm+jZxzvO5x17NOmJaZTGm9klCx71SWSckDJ5r/3TOfzPjjV3/kXZ/BCZmThHzDw0Q1PXuf xs5LX4RdJ3ylmMYnY1bXRgv6nTx7272Z71g+Lpow/9Lx7+Ush+9/T0u2ftpFn1Pj2MrDCYvpg vI/Skq0fT7+9L4nXWNczVbP91UPyB9S2RWf3MkUtmmU//FDhbwXj7ggmpJRofnA/3vY9zOfN3 3tJf8YfPT1I/e1Not5TsNwFVjdMqGtenTqhXnHJASomlOCPRUIu5qDgRAB+ftPB+AwAA X-Env-Sender: Harry.Waschkeit@duagon.com X-Msg-Ref: server-24.tower-246.messagelabs.com!1611818471!1785721!1 X-Originating-IP: [80.255.6.145] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.60.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 3025 invoked from network); 28 Jan 2021 07:21:12 -0000 Received: from unknown (HELO keys.men.de) (80.255.6.145) by server-24.tower-246.messagelabs.com with DHE-RSA-AES256-SHA encrypted SMTP; 28 Jan 2021 07:21:12 -0000 Received: from MEN-EX01.intra.men.de ([192.168.1.1]) by keys.men.de (PGP Universal service); Thu, 28 Jan 2021 08:21:12 +0100 X-PGP-Universal: processed; by keys.men.de on Thu, 28 Jan 2021 08:21:12 +0100 Received: from WSRV-EXHybrid.intra.men.de (192.168.1.226) by MEN-EX01.intra.men.de (192.168.1.1) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 28 Jan 2021 08:21:11 +0100 Received: from MEN-EX01.intra.men.de (192.168.1.1) by WSRV-EXHybrid.intra.men.de (192.168.1.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2106.2; Thu, 28 Jan 2021 08:21:11 +0100 Received: from mars.dev.men.de (10.64.33.33) by MEN-EX01.intra.men.de (192.168.1.1) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Thu, 28 Jan 2021 08:21:11 +0100 From: Harry Waschkeit To: CC: , Harry Waschkeit Subject: [PATCH] env: sf: single function env_sf_save() Date: Thu, 28 Jan 2021 08:21:08 +0100 Message-ID: <20210128072108.32657-1-Harry.Waschkeit@men.de> X-Mailer: git-send-email 2.29.0 MIME-Version: 1.0 X-Loop: 2 X-EXCLAIMER-MD-CONFIG: e4841e51-7998-49c0-ba41-8b8a0e2d8962 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean Instead of implementing redundant environments in two very similar functions env_sf_save(), handle redundancy in one function, placing the few differences in appropriate pre-compiler sections depending on config option CONFIG_ENV_OFFSET_REDUND. Additionally, several checkpatch complaints were addressed. This patch is in preparation for adding support for env erase. Signed-off-by: Harry Waschkeit Reviewed-by: Stefan Roese --- env/sf.c | 132 ++++++++++++++++++------------------------------------- 1 file changed, 43 insertions(+), 89 deletions(-) diff --git a/env/sf.c b/env/sf.c index 937778aa37..c60bd1deed 100644 --- a/env/sf.c +++ b/env/sf.c @@ -66,13 +66,16 @@ static int setup_flash_device(void) return 0; } -#if defined(CONFIG_ENV_OFFSET_REDUND) static int env_sf_save(void) { env_t env_new; - char *saved_buffer = NULL, flag = ENV_REDUND_OBSOLETE; + char *saved_buffer = NULL; u32 saved_size, saved_offset, sector; + ulong offset; int ret; +#if CONFIG_IS_ENABLED(SYS_REDUNDAND_ENVIRONMENT) + char flag = ENV_REDUND_OBSOLETE; +#endif ret = setup_flash_device(); if (ret) @@ -81,27 +84,33 @@ static int env_sf_save(void) ret = env_export(&env_new); if (ret) return -EIO; - env_new.flags = ENV_REDUND_ACTIVE; - if (gd->env_valid == ENV_VALID) { - env_new_offset = CONFIG_ENV_OFFSET_REDUND; - env_offset = CONFIG_ENV_OFFSET; - } else { - env_new_offset = CONFIG_ENV_OFFSET; - env_offset = CONFIG_ENV_OFFSET_REDUND; - } +#if CONFIG_IS_ENABLED(SYS_REDUNDAND_ENVIRONMENT) + env_new.flags = ENV_REDUND_ACTIVE; + + if (gd->env_valid == ENV_VALID) { + env_new_offset = CONFIG_ENV_OFFSET_REDUND; + env_offset = CONFIG_ENV_OFFSET; + } else { + env_new_offset = CONFIG_ENV_OFFSET; + env_offset = CONFIG_ENV_OFFSET_REDUND; + } + offset = env_new_offset; +#else + offset = CONFIG_ENV_OFFSET; +#endif /* Is the sector larger than the env (i.e. embedded) */ if (CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE) { saved_size = CONFIG_ENV_SECT_SIZE - CONFIG_ENV_SIZE; - saved_offset = env_new_offset + CONFIG_ENV_SIZE; + saved_offset = offset + CONFIG_ENV_SIZE; saved_buffer = memalign(ARCH_DMA_MINALIGN, saved_size); if (!saved_buffer) { ret = -ENOMEM; goto done; } - ret = spi_flash_read(env_flash, saved_offset, - saved_size, saved_buffer); + ret = spi_flash_read(env_flash, saved_offset, saved_size, + saved_buffer); if (ret) goto done; } @@ -109,35 +118,39 @@ static int env_sf_save(void) sector = DIV_ROUND_UP(CONFIG_ENV_SIZE, CONFIG_ENV_SECT_SIZE); puts("Erasing SPI flash..."); - ret = spi_flash_erase(env_flash, env_new_offset, - sector * CONFIG_ENV_SECT_SIZE); + ret = spi_flash_erase(env_flash, offset, + sector * CONFIG_ENV_SECT_SIZE); if (ret) goto done; puts("Writing to SPI flash..."); - ret = spi_flash_write(env_flash, env_new_offset, - CONFIG_ENV_SIZE, &env_new); + ret = spi_flash_write(env_flash, offset, + CONFIG_ENV_SIZE, &env_new); if (ret) goto done; if (CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE) { - ret = spi_flash_write(env_flash, saved_offset, - saved_size, saved_buffer); + ret = spi_flash_write(env_flash, saved_offset, saved_size, + saved_buffer); if (ret) goto done; } - ret = spi_flash_write(env_flash, env_offset + offsetof(env_t, flags), - sizeof(env_new.flags), &flag); - if (ret) - goto done; +#if CONFIG_IS_ENABLED(SYS_REDUNDAND_ENVIRONMENT) + ret = spi_flash_write(env_flash, env_offset + offsetof(env_t, flags), + sizeof(env_new.flags), &flag); + if (ret) + goto done; - puts("done\n"); + puts("done\n"); - gd->env_valid = gd->env_valid == ENV_REDUND ? ENV_VALID : ENV_REDUND; + gd->env_valid = gd->env_valid == ENV_REDUND ? ENV_VALID : ENV_REDUND; - printf("Valid environment: %d\n", (int)gd->env_valid); + printf("Valid environment: %d\n", (int)gd->env_valid); +#else + puts("done\n"); +#endif done: if (saved_buffer) @@ -146,6 +159,7 @@ static int env_sf_save(void) return ret; } +#if CONFIG_IS_ENABLED(SYS_REDUNDAND_ENVIRONMENT) static int env_sf_load(void) { int ret; @@ -183,66 +197,6 @@ out: return ret; } #else -static int env_sf_save(void) -{ - u32 saved_size, saved_offset, sector; - char *saved_buffer = NULL; - int ret = 1; - env_t env_new; - - ret = setup_flash_device(); - if (ret) - return ret; - - /* Is the sector larger than the env (i.e. embedded) */ - if (CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE) { - saved_size = CONFIG_ENV_SECT_SIZE - CONFIG_ENV_SIZE; - saved_offset = CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE; - saved_buffer = malloc(saved_size); - if (!saved_buffer) - goto done; - - ret = spi_flash_read(env_flash, saved_offset, - saved_size, saved_buffer); - if (ret) - goto done; - } - - ret = env_export(&env_new); - if (ret) - goto done; - - sector = DIV_ROUND_UP(CONFIG_ENV_SIZE, CONFIG_ENV_SECT_SIZE); - - puts("Erasing SPI flash..."); - ret = spi_flash_erase(env_flash, CONFIG_ENV_OFFSET, - sector * CONFIG_ENV_SECT_SIZE); - if (ret) - goto done; - - puts("Writing to SPI flash..."); - ret = spi_flash_write(env_flash, CONFIG_ENV_OFFSET, - CONFIG_ENV_SIZE, &env_new); - if (ret) - goto done; - - if (CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE) { - ret = spi_flash_write(env_flash, saved_offset, - saved_size, saved_buffer); - if (ret) - goto done; - } - - ret = 0; - puts("done\n"); - - done: - if (saved_buffer) - free(saved_buffer); - - return ret; -} - static int env_sf_load(void) { int ret; @@ -258,8 +212,8 @@ static int env_sf_load(void) if (ret) goto out; - ret = spi_flash_read(env_flash, - CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE, buf); + ret = spi_flash_read(env_flash, CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE, + buf); if (ret) { env_set_default("spi_flash_read() failed", 0); goto err_read; @@ -292,7 +246,7 @@ static int env_sf_init(void) env_t *env_ptr = (env_t *)env_sf_get_env_addr(); if (crc32(0, env_ptr->data, ENV_SIZE) == env_ptr->crc) { - gd->env_addr = (ulong)&(env_ptr->data); + gd->env_addr = (ulong)&env_ptr->data; gd->env_valid = 1; } else { gd->env_addr = (ulong)&default_environment[0];