Message ID | 20200318082254.7522-2-patrick.delaunay@st.com |
---|---|
State | Accepted |
Commit | 939ba160aa7e4f926599befc5e5cd0a4545dff6e |
Delegated to: | Patrick Delaunay |
Headers | show |
Series | stm32mp1: migrate MTD and DFU configuration in Kconfig | expand |
Hi Patrick On 3/18/20 9:22 AM, Patrick Delaunay wrote: > 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> Patrice > > board/dhelectronics/dh_stm32mp1/Makefile | 1 + > board/dhelectronics/dh_stm32mp1/board.c | 89 ------------------ > board/st/common/Makefile | 4 + > board/st/common/stm32mp_mtdparts.c | 115 +++++++++++++++++++++++ > board/st/stm32mp1/stm32mp1.c | 102 -------------------- > 5 files changed, 120 insertions(+), 191 deletions(-) > create mode 100644 board/st/common/stm32mp_mtdparts.c > > diff --git a/board/dhelectronics/dh_stm32mp1/Makefile b/board/dhelectronics/dh_stm32mp1/Makefile > index b42c4e4c04..c77a1e3a84 100644 > --- a/board/dhelectronics/dh_stm32mp1/Makefile > +++ b/board/dhelectronics/dh_stm32mp1/Makefile > @@ -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 > diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c > index b663696983..2baa36278c 100644 > --- a/board/dhelectronics/dh_stm32mp1/board.c > +++ b/board/dhelectronics/dh_stm32mp1/board.c > @@ -519,95 +519,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) > { > diff --git a/board/st/common/Makefile b/board/st/common/Makefile > index 8553606b90..4bb8b49867 100644 > --- a/board/st/common/Makefile > +++ b/board/st/common/Makefile > @@ -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 > index 0000000000..d77e075864 > --- /dev/null > +++ b/board/st/common/stm32mp_mtdparts.c > @@ -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); > +} > diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c > index b9d852efa4..bbeeb15d7e 100644 > --- a/board/st/stm32mp1/stm32mp1.c > +++ b/board/st/stm32mp1/stm32mp1.c > @@ -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) > {
diff --git a/board/dhelectronics/dh_stm32mp1/Makefile b/board/dhelectronics/dh_stm32mp1/Makefile index b42c4e4c04..c77a1e3a84 100644 --- a/board/dhelectronics/dh_stm32mp1/Makefile +++ b/board/dhelectronics/dh_stm32mp1/Makefile @@ -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 diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c index b663696983..2baa36278c 100644 --- a/board/dhelectronics/dh_stm32mp1/board.c +++ b/board/dhelectronics/dh_stm32mp1/board.c @@ -519,95 +519,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) { diff --git a/board/st/common/Makefile b/board/st/common/Makefile index 8553606b90..4bb8b49867 100644 --- a/board/st/common/Makefile +++ b/board/st/common/Makefile @@ -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 index 0000000000..d77e075864 --- /dev/null +++ b/board/st/common/stm32mp_mtdparts.c @@ -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); +} diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index b9d852efa4..bbeeb15d7e 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -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) {
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> --- board/dhelectronics/dh_stm32mp1/Makefile | 1 + board/dhelectronics/dh_stm32mp1/board.c | 89 ------------------ board/st/common/Makefile | 4 + board/st/common/stm32mp_mtdparts.c | 115 +++++++++++++++++++++++ board/st/stm32mp1/stm32mp1.c | 102 -------------------- 5 files changed, 120 insertions(+), 191 deletions(-) create mode 100644 board/st/common/stm32mp_mtdparts.c