[U-Boot] [PATCH v3 25/28] cmd: nand/sf: isolate legacy code

Boris Brezillon
2018-12-05T10:37:54Z

On Wed, 5 Dec 2018 00:57:11 +0100
Miquel Raynal <miquel.raynal@bootlin.com> wrote:

> The 'sf' command is not supposed to rely on the MTD stack, but both
> 'sf' and 'nand' commands use helpers located in mtd_uboot.c. Despite
> their location, these functions do not depend at all on the MTD
> stack.
>
> This file (drivers/mtd/mtd_uboot.c) is only compiled if CONFIG_MTD is
> selected, which is incoherent with the current situation. Solve this

^inconsistent

> by mobing these three functions (which are only used by the above two

^ moving

> commands) out of mtd_uboot.c and put them in a C file only compiled
> with cmd/sf.c and cmd/nand.c.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
> cmd/Makefile | 4 +-
> cmd/legacy-mtd-utils.c | 99 +++++++++++++++++++++++++++++++++++++++++
> cmd/legacy-mtd-utils.h | 14 ++++++
> cmd/nand.c | 2 +
> cmd/sf.c | 2 +
> drivers/mtd/mtd_uboot.c | 94 --------------------------------------
> include/linux/mtd/mtd.h | 6 ---
> 7 files changed, 119 insertions(+), 102 deletions(-)
> create mode 100644 cmd/legacy-mtd-utils.c
> create mode 100644 cmd/legacy-mtd-utils.h
>
> diff --git a/cmd/Makefile b/cmd/Makefile
> index 0534ddc679..54c54c062d 100644
> --- a/cmd/Makefile
> +++ b/cmd/Makefile
> @@ -94,7 +94,7 @@ obj-$(CONFIG_CMD_MMC_SPI) += mmc_spi.o
> obj-$(CONFIG_MP) += mp.o
> obj-$(CONFIG_CMD_MTD) += mtd.o
> obj-$(CONFIG_CMD_MTDPARTS) += mtdparts.o
> -obj-$(CONFIG_CMD_NAND) += nand.o
> +obj-$(CONFIG_CMD_NAND) += nand.o legacy-mtd-utils.o
> obj-$(CONFIG_CMD_NET) += net.o
> obj-$(CONFIG_CMD_ONENAND) += onenand.o
> obj-$(CONFIG_CMD_OSD) += osd.o
> @@ -115,7 +115,7 @@ obj-$(CONFIG_CMD_ROCKUSB) += rockusb.o
> obj-$(CONFIG_SANDBOX) += host.o
> obj-$(CONFIG_CMD_SATA) += sata.o
> obj-$(CONFIG_CMD_NVME) += nvme.o
> -obj-$(CONFIG_CMD_SF) += sf.o
> +obj-$(CONFIG_CMD_SF) += sf.o legacy-mtd-utils.o

That won't work if you enable both CMD_SF and CMD_NAND. The linker will
complain that some symbols are duplicated.

Either you add a new hidden Kconfig option that is selected by CMD_NAND
and CMD_SF, or you use the ifeq trick:

ifeq (,$(findstring y,$(CONFIG_CMD_NAND)$(CONFIG_CMD_SF)))
obj-y += legacy-mtd-utils.o
endif