* [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings
@ 2017-04-08 9:59 Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 1/4] env_sf: factor out prepare_flash_device Andreas Fenkart
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Andreas Fenkart @ 2017-04-08 9:59 UTC (permalink / raw)
To: u-boot
rebased patches on master
fixed compiled error in 1st patch (missing variable declaration)
compile tested all patches with travis
Andreas Fenkart (4):
env_sf: factor out prepare_flash_device
enf_sf: reuse setup_flash_device instead of open coding it
env_sf: re-order error handling in single-buffer env_relocate_spec
env_sf: use DIV_ROUND_UP to calculate number of sectors to erase
common/env_sf.c | 92 ++++++++++++++++++++++-----------------------------------
1 file changed, 36 insertions(+), 56 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 1/4] env_sf: factor out prepare_flash_device
2017-04-08 9:59 [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Andreas Fenkart
@ 2017-04-08 9:59 ` Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 2/4] enf_sf: reuse setup_flash_device instead of open coding it Andreas Fenkart
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Andreas Fenkart @ 2017-04-08 9:59 UTC (permalink / raw)
To: u-boot
copy&paste code found in single/double buffered code path
Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
common/env_sf.c | 48 +++++++++++++++++++-----------------------------
1 file changed, 19 insertions(+), 29 deletions(-)
diff --git a/common/env_sf.c b/common/env_sf.c
index 27b4d1226a..8af590a3d9 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -45,15 +45,11 @@ char *env_name_spec = "SPI Flash";
static struct spi_flash *env_flash;
-#if defined(CONFIG_ENV_OFFSET_REDUND)
-int saveenv(void)
+static int setup_flash_device(void)
{
- env_t env_new;
- char *saved_buffer = NULL, flag = OBSOLETE_FLAG;
- u32 saved_size, saved_offset, sector = 1;
- int ret;
#ifdef CONFIG_DM_SPI_FLASH
struct udevice *new;
+ int ret;
/* speed and mode will be read from DT */
ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
@@ -76,6 +72,20 @@ int saveenv(void)
}
}
#endif
+ return 0;
+}
+
+#if defined(CONFIG_ENV_OFFSET_REDUND)
+int saveenv(void)
+{
+ env_t env_new;
+ char *saved_buffer = NULL, flag = OBSOLETE_FLAG;
+ u32 saved_size, saved_offset, sector = 1;
+ int ret;
+
+ ret = setup_flash_device();
+ if (ret)
+ return ret;
ret = env_export(&env_new);
if (ret)
@@ -242,30 +252,10 @@ int saveenv(void)
char *saved_buffer = NULL;
int ret = 1;
env_t env_new;
-#ifdef CONFIG_DM_SPI_FLASH
- struct udevice *new;
- /* speed and mode will be read from DT */
- ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
- 0, 0, &new);
- if (ret) {
- set_default_env("!spi_flash_probe_bus_cs() failed");
- return 1;
- }
-
- env_flash = dev_get_uclass_priv(new);
-#else
-
- if (!env_flash) {
- env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS,
- CONFIG_ENV_SPI_CS,
- CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
- if (!env_flash) {
- set_default_env("!spi_flash_probe() failed");
- return 1;
- }
- }
-#endif
+ 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) {
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 2/4] enf_sf: reuse setup_flash_device instead of open coding it
2017-04-08 9:59 [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 1/4] env_sf: factor out prepare_flash_device Andreas Fenkart
@ 2017-04-08 9:59 ` Andreas Fenkart
2017-04-09 19:28 ` Simon Glass
2017-04-08 9:59 ` [U-Boot] [PATCH v2 3/4] env_sf: re-order error handling in single-buffer env_relocate_spec Andreas Fenkart
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Andreas Fenkart @ 2017-04-08 9:59 UTC (permalink / raw)
To: u-boot
setup_flash_device selects one of two code paths depending on the driver
model being used (=CONFIG_DM_SPI_FLASH). env_relocate_spec only used
the non driver-model code path. I'm unsure why, either none of the
platforms that need relocation use the driver model, or - worse - the
driver model is not yet usable when relocating.
Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
---
common/env_sf.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/common/env_sf.c b/common/env_sf.c
index 8af590a3d9..a52fb734c8 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -176,12 +176,9 @@ void env_relocate_spec(void)
goto out;
}
- env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
- CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
- if (!env_flash) {
- set_default_env("!spi_flash_probe() failed");
+ ret = setup_flash_device();
+ if (ret)
goto out;
- }
ret = spi_flash_read(env_flash, CONFIG_ENV_OFFSET,
CONFIG_ENV_SIZE, tmp_env1);
@@ -316,10 +313,9 @@ void env_relocate_spec(void)
char *buf = NULL;
buf = (char *)memalign(ARCH_DMA_MINALIGN, CONFIG_ENV_SIZE);
- env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
- CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
- if (!env_flash) {
- set_default_env("!spi_flash_probe() failed");
+
+ ret = setup_flash_device();
+ if (ret) {
if (buf)
free(buf);
return;
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 3/4] env_sf: re-order error handling in single-buffer env_relocate_spec
2017-04-08 9:59 [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 1/4] env_sf: factor out prepare_flash_device Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 2/4] enf_sf: reuse setup_flash_device instead of open coding it Andreas Fenkart
@ 2017-04-08 9:59 ` Andreas Fenkart
2017-04-09 19:28 ` Simon Glass
2017-04-08 9:59 ` [U-Boot] [PATCH v2 4/4] env_sf: use DIV_ROUND_UP to calculate number of sectors to erase Andreas Fenkart
2017-05-03 5:55 ` [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Jagan Teki
4 siblings, 1 reply; 9+ messages in thread
From: Andreas Fenkart @ 2017-04-08 9:59 UTC (permalink / raw)
To: u-boot
this makes it easier comparable to the double-buffered version
Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
common/env_sf.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/common/env_sf.c b/common/env_sf.c
index a52fb734c8..6a1583ebec 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -313,29 +313,31 @@ void env_relocate_spec(void)
char *buf = NULL;
buf = (char *)memalign(ARCH_DMA_MINALIGN, CONFIG_ENV_SIZE);
-
- ret = setup_flash_device();
- if (ret) {
- if (buf)
- free(buf);
+ if (!buf) {
+ set_default_env("!malloc() failed");
return;
}
+ ret = setup_flash_device();
+ if (ret)
+ goto out;
+
ret = spi_flash_read(env_flash,
CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE, buf);
if (ret) {
set_default_env("!spi_flash_read() failed");
- goto out;
+ goto err_read;
}
ret = env_import(buf, 1);
if (ret)
gd->env_valid = 1;
-out:
+
+err_read:
spi_flash_free(env_flash);
- if (buf)
- free(buf);
env_flash = NULL;
+out:
+ free(buf);
}
#endif
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 4/4] env_sf: use DIV_ROUND_UP to calculate number of sectors to erase
2017-04-08 9:59 [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Andreas Fenkart
` (2 preceding siblings ...)
2017-04-08 9:59 ` [U-Boot] [PATCH v2 3/4] env_sf: re-order error handling in single-buffer env_relocate_spec Andreas Fenkart
@ 2017-04-08 9:59 ` Andreas Fenkart
2017-04-09 19:28 ` Simon Glass
2017-05-03 5:55 ` [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Jagan Teki
4 siblings, 1 reply; 9+ messages in thread
From: Andreas Fenkart @ 2017-04-08 9:59 UTC (permalink / raw)
To: u-boot
simpler to read
Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
---
common/env_sf.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/common/env_sf.c b/common/env_sf.c
index 6a1583ebec..9944602367 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -80,7 +80,7 @@ int saveenv(void)
{
env_t env_new;
char *saved_buffer = NULL, flag = OBSOLETE_FLAG;
- u32 saved_size, saved_offset, sector = 1;
+ u32 saved_size, saved_offset, sector;
int ret;
ret = setup_flash_device();
@@ -115,11 +115,7 @@ int saveenv(void)
goto done;
}
- if (CONFIG_ENV_SIZE > CONFIG_ENV_SECT_SIZE) {
- sector = CONFIG_ENV_SIZE / CONFIG_ENV_SECT_SIZE;
- if (CONFIG_ENV_SIZE % CONFIG_ENV_SECT_SIZE)
- sector++;
- }
+ sector = DIV_ROUND_UP(CONFIG_ENV_SIZE, CONFIG_ENV_SECT_SIZE);
puts("Erasing SPI flash...");
ret = spi_flash_erase(env_flash, env_new_offset,
@@ -245,7 +241,7 @@ out:
#else
int saveenv(void)
{
- u32 saved_size, saved_offset, sector = 1;
+ u32 saved_size, saved_offset, sector;
char *saved_buffer = NULL;
int ret = 1;
env_t env_new;
@@ -268,16 +264,12 @@ int saveenv(void)
goto done;
}
- if (CONFIG_ENV_SIZE > CONFIG_ENV_SECT_SIZE) {
- sector = CONFIG_ENV_SIZE / CONFIG_ENV_SECT_SIZE;
- if (CONFIG_ENV_SIZE % CONFIG_ENV_SECT_SIZE)
- sector++;
- }
-
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);
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 2/4] enf_sf: reuse setup_flash_device instead of open coding it
2017-04-08 9:59 ` [U-Boot] [PATCH v2 2/4] enf_sf: reuse setup_flash_device instead of open coding it Andreas Fenkart
@ 2017-04-09 19:28 ` Simon Glass
0 siblings, 0 replies; 9+ messages in thread
From: Simon Glass @ 2017-04-09 19:28 UTC (permalink / raw)
To: u-boot
On 8 April 2017 at 03:59, Andreas Fenkart <afenkart@gmail.com> wrote:
> setup_flash_device selects one of two code paths depending on the driver
> model being used (=CONFIG_DM_SPI_FLASH). env_relocate_spec only used
> the non driver-model code path. I'm unsure why, either none of the
> platforms that need relocation use the driver model, or - worse - the
> driver model is not yet usable when relocating.
>
> Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
> ---
> common/env_sf.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 3/4] env_sf: re-order error handling in single-buffer env_relocate_spec
2017-04-08 9:59 ` [U-Boot] [PATCH v2 3/4] env_sf: re-order error handling in single-buffer env_relocate_spec Andreas Fenkart
@ 2017-04-09 19:28 ` Simon Glass
0 siblings, 0 replies; 9+ messages in thread
From: Simon Glass @ 2017-04-09 19:28 UTC (permalink / raw)
To: u-boot
On 8 April 2017 at 03:59, Andreas Fenkart <afenkart@gmail.com> wrote:
> this makes it easier comparable to the double-buffered version
>
> Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> ---
> common/env_sf.c | 20 +++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 4/4] env_sf: use DIV_ROUND_UP to calculate number of sectors to erase
2017-04-08 9:59 ` [U-Boot] [PATCH v2 4/4] env_sf: use DIV_ROUND_UP to calculate number of sectors to erase Andreas Fenkart
@ 2017-04-09 19:28 ` Simon Glass
0 siblings, 0 replies; 9+ messages in thread
From: Simon Glass @ 2017-04-09 19:28 UTC (permalink / raw)
To: u-boot
On 8 April 2017 at 03:59, Andreas Fenkart <afenkart@gmail.com> wrote:
> simpler to read
>
> Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
> ---
> common/env_sf.c | 18 +++++-------------
> 1 file changed, 5 insertions(+), 13 deletions(-)
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings
2017-04-08 9:59 [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Andreas Fenkart
` (3 preceding siblings ...)
2017-04-08 9:59 ` [U-Boot] [PATCH v2 4/4] env_sf: use DIV_ROUND_UP to calculate number of sectors to erase Andreas Fenkart
@ 2017-05-03 5:55 ` Jagan Teki
4 siblings, 0 replies; 9+ messages in thread
From: Jagan Teki @ 2017-05-03 5:55 UTC (permalink / raw)
To: u-boot
On Sat, Apr 8, 2017 at 3:29 PM, Andreas Fenkart <afenkart@gmail.com> wrote:
> rebased patches on master
> fixed compiled error in 1st patch (missing variable declaration)
> compile tested all patches with travis
>
> Andreas Fenkart (4):
> env_sf: factor out prepare_flash_device
> enf_sf: reuse setup_flash_device instead of open coding it
> env_sf: re-order error handling in single-buffer env_relocate_spec
> env_sf: use DIV_ROUND_UP to calculate number of sectors to erase
Reviewed-by: Jagan Teki <jagan@openedev.com>
Tested-by: Jagan Teki <jagan@openedev.com>
Applied to u-boot-spi/next
thanks!
--
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-05-03 5:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-08 9:59 [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 1/4] env_sf: factor out prepare_flash_device Andreas Fenkart
2017-04-08 9:59 ` [U-Boot] [PATCH v2 2/4] enf_sf: reuse setup_flash_device instead of open coding it Andreas Fenkart
2017-04-09 19:28 ` Simon Glass
2017-04-08 9:59 ` [U-Boot] [PATCH v2 3/4] env_sf: re-order error handling in single-buffer env_relocate_spec Andreas Fenkart
2017-04-09 19:28 ` Simon Glass
2017-04-08 9:59 ` [U-Boot] [PATCH v2 4/4] env_sf: use DIV_ROUND_UP to calculate number of sectors to erase Andreas Fenkart
2017-04-09 19:28 ` Simon Glass
2017-05-03 5:55 ` [U-Boot] [PATCH v2 0/4] env_sf: minor refactorings Jagan Teki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.