env_sf: factor out prepare_flash_device
authorAndreas Fenkart <afenkart@gmail.com>
Sat, 8 Apr 2017 09:59:31 +0000 (11:59 +0200)
committerJagan Teki <jagan@openedev.com>
Wed, 3 May 2017 05:47:10 +0000 (11:17 +0530)
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>
Reviewed-by: Jagan Teki <jagan@openedev.com>
Tested-by: Jagan Teki <jagan@openedev.com>
common/env_sf.c

index 27b4d1226a6349c6b95001f4e924aed9db144f61..8af590a3d9a37549d64c8080491f1539098f85fd 100644 (file)
@@ -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) {