board: stm32mp1: move board_get_mtdparts in st common directory
authorPatrick Delaunay <patrick.delaunay@st.com>
Wed, 18 Mar 2020 08:22:44 +0000 (09:22 +0100)
committerPatrick Delaunay <patrick.delaunay@st.com>
Thu, 14 May 2020 07:02:12 +0000 (09:02 +0200)
Move the stm32mp1 common code board_get_mtdparts() in common directory,
this patch reduce the maintenance effort on this generic part (not board
dependent).

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
board/dhelectronics/dh_stm32mp1/Makefile
board/dhelectronics/dh_stm32mp1/board.c
board/st/common/Makefile
board/st/common/stm32mp_mtdparts.c [new file with mode: 0644]
board/st/stm32mp1/stm32mp1.c

index b42c4e4c04854e54ae7a21b425f6e433c243059e..c77a1e3a84f42501d96221ceb9a67a3e7c3f2b7d 100644 (file)
@@ -8,3 +8,4 @@ obj-y += ../../st/stm32mp1/spl.o
 endif
 
 obj-y += ../../st/stm32mp1/board.o board.o
+obj-$(CONFIG_SYS_MTDPARTS_RUNTIME) += ../../st/common/stm32mp_mtdparts.o
index 9a2926bbe503da611065c36eae1e3b8f282f8e4c..5f3fe452ce29438cd8ce36f0414045c04d6a1fd2 100644 (file)
@@ -655,95 +655,6 @@ enum env_location env_get_location(enum env_operation op, int prio)
 #endif
 }
 
-#ifdef CONFIG_SYS_MTDPARTS_RUNTIME
-
-#define MTDPARTS_LEN           256
-#define MTDIDS_LEN             128
-
-/**
- * The mtdparts_nand0 and mtdparts_nor0 variable tends to be long.
- * If we need to access it before the env is relocated, then we need
- * to use our own stack buffer. gd->env_buf will be too small.
- *
- * @param buf temporary buffer pointer MTDPARTS_LEN long
- * @return mtdparts variable string, NULL if not found
- */
-static const char *env_get_mtdparts(const char *str, char *buf)
-{
-       if (gd->flags & GD_FLG_ENV_READY)
-               return env_get(str);
-       if (env_get_f(str, buf, MTDPARTS_LEN) != -1)
-               return buf;
-
-       return NULL;
-}
-
-/**
- * update the variables "mtdids" and "mtdparts" with content of mtdparts_<dev>
- */
-static void board_get_mtdparts(const char *dev,
-                              char *mtdids,
-                              char *mtdparts)
-{
-       char env_name[32] = "mtdparts_";
-       char tmp_mtdparts[MTDPARTS_LEN];
-       const char *tmp;
-
-       /* name of env variable to read = mtdparts_<dev> */
-       strcat(env_name, dev);
-       tmp = env_get_mtdparts(env_name, tmp_mtdparts);
-       if (tmp) {
-               /* mtdids: "<dev>=<dev>, ...." */
-               if (mtdids[0] != '\0')
-                       strcat(mtdids, ",");
-               strcat(mtdids, dev);
-               strcat(mtdids, "=");
-               strcat(mtdids, dev);
-
-               /* mtdparts: "mtdparts=<dev>:<mtdparts_<dev>>;..." */
-               if (mtdparts[0] != '\0')
-                       strncat(mtdparts, ";", MTDPARTS_LEN);
-               else
-                       strcat(mtdparts, "mtdparts=");
-               strncat(mtdparts, dev, MTDPARTS_LEN);
-               strncat(mtdparts, ":", MTDPARTS_LEN);
-               strncat(mtdparts, tmp, MTDPARTS_LEN);
-       }
-}
-
-void board_mtdparts_default(const char **mtdids, const char **mtdparts)
-{
-       struct udevice *dev;
-       static char parts[3 * MTDPARTS_LEN + 1];
-       static char ids[MTDIDS_LEN + 1];
-       static bool mtd_initialized;
-
-       if (mtd_initialized) {
-               *mtdids = ids;
-               *mtdparts = parts;
-               return;
-       }
-
-       memset(parts, 0, sizeof(parts));
-       memset(ids, 0, sizeof(ids));
-
-       /* probe all MTD devices */
-       for (uclass_first_device(UCLASS_MTD, &dev);
-            dev;
-            uclass_next_device(&dev)) {
-               pr_debug("mtd device = %s\n", dev->name);
-       }
-
-       if (!uclass_get_device(UCLASS_SPI_FLASH, 0, &dev))
-               board_get_mtdparts("nor0", ids, parts);
-
-       mtd_initialized = true;
-       *mtdids = ids;
-       *mtdparts = parts;
-       debug("%s:mtdids=%s & mtdparts=%s\n", __func__, ids, parts);
-}
-#endif
-
 #if defined(CONFIG_OF_BOARD_SETUP)
 int ft_board_setup(void *blob, bd_t *bd)
 {
index 8553606b90482f9122e5f6207dd40e831a74ee4b..4bb8b498675d55f51433e950ceffc8bf2a0e2f9e 100644 (file)
@@ -4,3 +4,7 @@
 #
 
 obj-$(CONFIG_CMD_STBOARD) += cmd_stboard.o
+
+ifeq ($(CONFIG_ARCH_STM32MP),y)
+obj-$(CONFIG_SYS_MTDPARTS_RUNTIME) += stm32mp_mtdparts.o
+endif
diff --git a/board/st/common/stm32mp_mtdparts.c b/board/st/common/stm32mp_mtdparts.c
new file mode 100644 (file)
index 0000000..d77e075
--- /dev/null
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
+/*
+ * Copyright (C) 2020, STMicroelectronics - All Rights Reserved
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <env.h>
+#include <env_internal.h>
+#include <mtd.h>
+#include <mtd_node.h>
+
+#define MTDPARTS_LEN           256
+#define MTDIDS_LEN             128
+
+/*
+ * Get a global data pointer
+ */
+DECLARE_GLOBAL_DATA_PTR;
+
+/**
+ * The mtdparts_nand0 and mtdparts_nor0 variable tends to be long.
+ * If we need to access it before the env is relocated, then we need
+ * to use our own stack buffer. gd->env_buf will be too small.
+ *
+ * @param buf temporary buffer pointer MTDPARTS_LEN long
+ * @return mtdparts variable string, NULL if not found
+ */
+static const char *env_get_mtdparts(const char *str, char *buf)
+{
+       if (gd->flags & GD_FLG_ENV_READY)
+               return env_get(str);
+       if (env_get_f(str, buf, MTDPARTS_LEN) != -1)
+               return buf;
+
+       return NULL;
+}
+
+/**
+ * update the variables "mtdids" and "mtdparts" with content of mtdparts_<dev>
+ */
+static void board_get_mtdparts(const char *dev,
+                              char *mtdids,
+                              char *mtdparts)
+{
+       char env_name[32] = "mtdparts_";
+       char tmp_mtdparts[MTDPARTS_LEN];
+       const char *tmp;
+
+       /* name of env variable to read = mtdparts_<dev> */
+       strcat(env_name, dev);
+       tmp = env_get_mtdparts(env_name, tmp_mtdparts);
+       if (tmp) {
+               /* mtdids: "<dev>=<dev>, ...." */
+               if (mtdids[0] != '\0')
+                       strcat(mtdids, ",");
+               strcat(mtdids, dev);
+               strcat(mtdids, "=");
+               strcat(mtdids, dev);
+
+               /* mtdparts: "mtdparts=<dev>:<mtdparts_<dev>>;..." */
+               if (mtdparts[0] != '\0')
+                       strncat(mtdparts, ";", MTDPARTS_LEN);
+               else
+                       strcat(mtdparts, "mtdparts=");
+               strncat(mtdparts, dev, MTDPARTS_LEN);
+               strncat(mtdparts, ":", MTDPARTS_LEN);
+               strncat(mtdparts, tmp, MTDPARTS_LEN);
+       }
+}
+
+void board_mtdparts_default(const char **mtdids, const char **mtdparts)
+{
+       struct mtd_info *mtd;
+       struct udevice *dev;
+       static char parts[3 * MTDPARTS_LEN + 1];
+       static char ids[MTDIDS_LEN + 1];
+       static bool mtd_initialized;
+
+       if (mtd_initialized) {
+               *mtdids = ids;
+               *mtdparts = parts;
+               return;
+       }
+
+       memset(parts, 0, sizeof(parts));
+       memset(ids, 0, sizeof(ids));
+
+       /* probe all MTD devices */
+       for (uclass_first_device(UCLASS_MTD, &dev);
+            dev;
+            uclass_next_device(&dev)) {
+               pr_debug("mtd device = %s\n", dev->name);
+       }
+
+       mtd = get_mtd_device_nm("nand0");
+       if (!IS_ERR_OR_NULL(mtd)) {
+               board_get_mtdparts("nand0", ids, parts);
+               put_mtd_device(mtd);
+       }
+
+       mtd = get_mtd_device_nm("spi-nand0");
+       if (!IS_ERR_OR_NULL(mtd)) {
+               board_get_mtdparts("spi-nand0", ids, parts);
+               put_mtd_device(mtd);
+       }
+
+       if (!uclass_get_device(UCLASS_SPI_FLASH, 0, &dev))
+               board_get_mtdparts("nor0", ids, parts);
+
+       mtd_initialized = true;
+       *mtdids = ids;
+       *mtdparts = parts;
+       debug("%s:mtdids=%s & mtdparts=%s\n", __func__, ids, parts);
+}
index 45068b1cd9d1024304f296624363e95ca66f8c3f..641cfb14681dc8dd3e77179325e2fa20058f64a9 100644 (file)
@@ -828,108 +828,6 @@ const char *env_ext4_get_dev_part(void)
 }
 #endif
 
-#ifdef CONFIG_SYS_MTDPARTS_RUNTIME
-
-#define MTDPARTS_LEN           256
-#define MTDIDS_LEN             128
-
-/**
- * The mtdparts_nand0 and mtdparts_nor0 variable tends to be long.
- * If we need to access it before the env is relocated, then we need
- * to use our own stack buffer. gd->env_buf will be too small.
- *
- * @param buf temporary buffer pointer MTDPARTS_LEN long
- * @return mtdparts variable string, NULL if not found
- */
-static const char *env_get_mtdparts(const char *str, char *buf)
-{
-       if (gd->flags & GD_FLG_ENV_READY)
-               return env_get(str);
-       if (env_get_f(str, buf, MTDPARTS_LEN) != -1)
-               return buf;
-
-       return NULL;
-}
-
-/**
- * update the variables "mtdids" and "mtdparts" with content of mtdparts_<dev>
- */
-static void board_get_mtdparts(const char *dev,
-                              char *mtdids,
-                              char *mtdparts)
-{
-       char env_name[32] = "mtdparts_";
-       char tmp_mtdparts[MTDPARTS_LEN];
-       const char *tmp;
-
-       /* name of env variable to read = mtdparts_<dev> */
-       strcat(env_name, dev);
-       tmp = env_get_mtdparts(env_name, tmp_mtdparts);
-       if (tmp) {
-               /* mtdids: "<dev>=<dev>, ...." */
-               if (mtdids[0] != '\0')
-                       strcat(mtdids, ",");
-               strcat(mtdids, dev);
-               strcat(mtdids, "=");
-               strcat(mtdids, dev);
-
-               /* mtdparts: "mtdparts=<dev>:<mtdparts_<dev>>;..." */
-               if (mtdparts[0] != '\0')
-                       strncat(mtdparts, ";", MTDPARTS_LEN);
-               else
-                       strcat(mtdparts, "mtdparts=");
-               strncat(mtdparts, dev, MTDPARTS_LEN);
-               strncat(mtdparts, ":", MTDPARTS_LEN);
-               strncat(mtdparts, tmp, MTDPARTS_LEN);
-       }
-}
-
-void board_mtdparts_default(const char **mtdids, const char **mtdparts)
-{
-       struct mtd_info *mtd;
-       struct udevice *dev;
-       static char parts[3 * MTDPARTS_LEN + 1];
-       static char ids[MTDIDS_LEN + 1];
-       static bool mtd_initialized;
-
-       if (mtd_initialized) {
-               *mtdids = ids;
-               *mtdparts = parts;
-               return;
-       }
-
-       memset(parts, 0, sizeof(parts));
-       memset(ids, 0, sizeof(ids));
-
-       /* probe all MTD devices */
-       for (uclass_first_device(UCLASS_MTD, &dev);
-            dev;
-            uclass_next_device(&dev)) {
-               pr_debug("mtd device = %s\n", dev->name);
-       }
-
-       mtd = get_mtd_device_nm("nand0");
-       if (!IS_ERR_OR_NULL(mtd)) {
-               board_get_mtdparts("nand0", ids, parts);
-               put_mtd_device(mtd);
-       }
-
-       mtd = get_mtd_device_nm("spi-nand0");
-       if (!IS_ERR_OR_NULL(mtd)) {
-               board_get_mtdparts("spi-nand0", ids, parts);
-               put_mtd_device(mtd);
-       }
-
-       if (!uclass_get_device(UCLASS_SPI_FLASH, 0, &dev))
-               board_get_mtdparts("nor0", ids, parts);
-
-       mtd_initialized = true;
-       *mtdids = ids;
-       *mtdparts = parts;
-       debug("%s:mtdids=%s & mtdparts=%s\n", __func__, ids, parts);
-}
-#endif
-
 #if defined(CONFIG_OF_BOARD_SETUP)
 int ft_board_setup(void *blob, bd_t *bd)
 {