All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 23/25] cmd: nand/sf: isolate legacy code
Date: Sun,  9 Dec 2018 19:07:45 +0100	[thread overview]
Message-ID: <20181209180747.24575-24-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20181209180747.24575-1-miquel.raynal@bootlin.com>

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 inconsistent with the current situation. Solve this
by moving these three functions (which are only used by the above two
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            |  3 ++
 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, 120 insertions(+), 100 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..d04bc44198 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -94,6 +94,9 @@ 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
+ifneq ($(CONFIG_CMD_NAND)$(CONFIG_CMD_SF),)
+obj-y += legacy-mtd-utils.o
+endif
 obj-$(CONFIG_CMD_NAND) += nand.o
 obj-$(CONFIG_CMD_NET) += net.o
 obj-$(CONFIG_CMD_ONENAND) += onenand.o
diff --git a/cmd/legacy-mtd-utils.c b/cmd/legacy-mtd-utils.c
new file mode 100644
index 0000000000..1aa3bfc8ec
--- /dev/null
+++ b/cmd/legacy-mtd-utils.c
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <jffs2/jffs2.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/string.h>
+#include <mtd.h>
+
+int get_part(const char *partname, int *idx, loff_t *off, loff_t *size,
+	     loff_t *maxsize, int devtype)
+{
+#ifdef CONFIG_CMD_MTDPARTS
+	struct mtd_device *dev;
+	struct part_info *part;
+	u8 pnum;
+	int ret;
+
+	ret = mtdparts_init();
+	if (ret)
+		return ret;
+
+	ret = find_dev_and_part(partname, &dev, &pnum, &part);
+	if (ret)
+		return ret;
+
+	if (dev->id->type != devtype) {
+		printf("not same typ %d != %d\n", dev->id->type, devtype);
+		return -1;
+	}
+
+	*off = part->offset;
+	*size = part->size;
+	*maxsize = part->size;
+	*idx = dev->id->num;
+
+	return 0;
+#else
+	puts("mtdparts support missing.\n");
+	return -1;
+#endif
+}
+
+int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size,
+		loff_t *maxsize, int devtype, uint64_t chipsize)
+{
+	if (!str2off(arg, off))
+		return get_part(arg, idx, off, size, maxsize, devtype);
+
+	if (*off >= chipsize) {
+		puts("Offset exceeds device limit\n");
+		return -1;
+	}
+
+	*maxsize = chipsize - *off;
+	*size = *maxsize;
+	return 0;
+}
+
+int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off,
+		     loff_t *size, loff_t *maxsize, int devtype,
+		     uint64_t chipsize)
+{
+	int ret;
+
+	if (argc == 0) {
+		*off = 0;
+		*size = chipsize;
+		*maxsize = *size;
+		goto print;
+	}
+
+	ret = mtd_arg_off(argv[0], idx, off, size, maxsize, devtype,
+			  chipsize);
+	if (ret)
+		return ret;
+
+	if (argc == 1)
+		goto print;
+
+	if (!str2off(argv[1], size)) {
+		printf("'%s' is not a number\n", argv[1]);
+		return -1;
+	}
+
+	if (*size > *maxsize) {
+		puts("Size exceeds partition or device limit\n");
+		return -1;
+	}
+
+print:
+	printf("device %d ", *idx);
+	if (*size == chipsize)
+		puts("whole chip\n");
+	else
+		printf("offset 0x%llx, size 0x%llx\n",
+		       (unsigned long long)*off, (unsigned long long)*size);
+	return 0;
+}
diff --git a/cmd/legacy-mtd-utils.h b/cmd/legacy-mtd-utils.h
new file mode 100644
index 0000000000..b31342bcb7
--- /dev/null
+++ b/cmd/legacy-mtd-utils.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+
+#ifndef __LEGACY_MTD_UTILS_H
+#define __LEGACY_MTD_UTILS_H
+
+int get_part(const char *partname, int *idx, loff_t *off, loff_t *size,
+	     loff_t *maxsize, int devtype);
+int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size,
+		loff_t *maxsize, int devtype, uint64_t chipsize);
+int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off,
+		     loff_t *size, loff_t *maxsize, int devtype,
+		     uint64_t chipsize);
+
+#endif /* LEGACY_MTD_UTILS_H */
diff --git a/cmd/nand.c b/cmd/nand.c
index a22945d144..018c8a7758 100644
--- a/cmd/nand.c
+++ b/cmd/nand.c
@@ -29,6 +29,8 @@
 #include <jffs2/jffs2.h>
 #include <nand.h>
 
+#include "legacy-mtd-utils.h"
+
 #if defined(CONFIG_CMD_MTDPARTS)
 
 /* partition handling routines */
diff --git a/cmd/sf.c b/cmd/sf.c
index 84bb0575f2..3fe906fa3b 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -18,6 +18,8 @@
 #include <asm/io.h>
 #include <dm/device-internal.h>
 
+#include "legacy-mtd-utils.h"
+
 static struct spi_flash *flash;
 
 /*
diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c
index cce162461b..6123752a65 100644
--- a/drivers/mtd/mtd_uboot.c
+++ b/drivers/mtd/mtd_uboot.c
@@ -6,7 +6,6 @@
 #include <common.h>
 #include <dm/device.h>
 #include <dm/uclass-internal.h>
-#include <jffs2/jffs2.h> /* LEGACY */
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <mtd.h>
@@ -291,96 +290,3 @@ int mtd_probe_devices(void)
 	return 0;
 }
 #endif /* defined(CONFIG_MTD_PARTITIONS) */
-
-/* Legacy */
-
-static int get_part(const char *partname, int *idx, loff_t *off, loff_t *size,
-		loff_t *maxsize, int devtype)
-{
-#ifdef CONFIG_CMD_MTDPARTS
-	struct mtd_device *dev;
-	struct part_info *part;
-	u8 pnum;
-	int ret;
-
-	ret = mtdparts_init();
-	if (ret)
-		return ret;
-
-	ret = find_dev_and_part(partname, &dev, &pnum, &part);
-	if (ret)
-		return ret;
-
-	if (dev->id->type != devtype) {
-		printf("not same typ %d != %d\n", dev->id->type, devtype);
-		return -1;
-	}
-
-	*off = part->offset;
-	*size = part->size;
-	*maxsize = part->size;
-	*idx = dev->id->num;
-
-	return 0;
-#else
-	puts("mtdparts support missing.\n");
-	return -1;
-#endif
-}
-
-int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size,
-		loff_t *maxsize, int devtype, uint64_t chipsize)
-{
-	if (!str2off(arg, off))
-		return get_part(arg, idx, off, size, maxsize, devtype);
-
-	if (*off >= chipsize) {
-		puts("Offset exceeds device limit\n");
-		return -1;
-	}
-
-	*maxsize = chipsize - *off;
-	*size = *maxsize;
-	return 0;
-}
-
-int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off,
-		     loff_t *size, loff_t *maxsize, int devtype,
-		     uint64_t chipsize)
-{
-	int ret;
-
-	if (argc == 0) {
-		*off = 0;
-		*size = chipsize;
-		*maxsize = *size;
-		goto print;
-	}
-
-	ret = mtd_arg_off(argv[0], idx, off, size, maxsize, devtype,
-			  chipsize);
-	if (ret)
-		return ret;
-
-	if (argc == 1)
-		goto print;
-
-	if (!str2off(argv[1], size)) {
-		printf("'%s' is not a number\n", argv[1]);
-		return -1;
-	}
-
-	if (*size > *maxsize) {
-		puts("Size exceeds partition or device limit\n");
-		return -1;
-	}
-
-print:
-	printf("device %d ", *idx);
-	if (*size == chipsize)
-		puts("whole chip\n");
-	else
-		printf("offset 0x%llx, size 0x%llx\n",
-		       (unsigned long long)*off, (unsigned long long)*size);
-	return 0;
-}
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 68e5915324..e844ce4cb6 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -571,12 +571,6 @@ struct mtd_info *__mtd_next_device(int i);
 	     (mtd) != NULL;				\
 	     (mtd) = __mtd_next_device(mtd->index + 1))
 
-int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size,
-		loff_t *maxsize, int devtype, uint64_t chipsize);
-int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off,
-		     loff_t *size, loff_t *maxsize, int devtype,
-		     uint64_t chipsize);
-
 /* drivers/mtd/mtdcore.c */
 void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
 			  const uint64_t length, uint64_t *len_incl_bad,
-- 
2.19.1

  parent reply	other threads:[~2018-12-09 18:07 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-09 18:07 [U-Boot] [PATCH v4 00/25] MTD defconfigs/Kconfigs/Makefiles heavy cleanup Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 01/25] mtd: rename CONFIG_NAND -> CONFIG_MTD_RAW_NAND Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 02/25] mtd: rename CONFIG_MTD -> CONFIG_DM_MTD Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 03/25] mtd: rename CONFIG_MTD_DEVICE -> CONFIG_MTD Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 04/25] mtd: ensure MTD is compiled when there is a NOR flash Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 05/25] mtd: ensure MTD/the raw NAND core are compiled when there is a NAND flash Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 06/25] mtd: ensure MTD is compiled when there is a SPI NOR flash using MTD Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 07/25] mtd: ensure UBI is compiled when using fastmap Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 08/25] mtd: ensure MTD is compiled when UBI is used Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 09/25] mtd: ensure UBI is compiled when CMD_UBI is selected Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 10/25] mtd: ensure UBI is compiled when ENV_IS_IN_UBI " Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 11/25] mtd: ensure MTD_RAW_NAND is compiled when ENV_IS_IN_NAND " Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 12/25] mtd: ensure MTD and NOR drivers are compiled with ENV_IS_IN_FLASH Miquel Raynal
2018-12-10 18:02   ` Miquel Raynal
2018-12-10 18:10     ` Tom Rini
2018-12-11  7:49       ` Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 13/25] mtd: ensure CMD_NAND is compiled when its options are selected Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 14/25] mtd: ensure MTD is compiled when CMD_MTDPARTS is selected Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 15/25] configs: move CONFIG_MTD in defconfigs when set in arch includes Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 16/25] configs: remove raw NAND core from k2g defconfigs Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 17/25] configs: remove MTD support from bcm11130 and M54418TWR defconfigs Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 18/25] mtd: nand: add includes in NAND core to avoid warnings Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 19/25] dfu: add dependency on the raw NAND core Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 20/25] mtd: nor: NOR flashes depend on MTD Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 21/25] mtd: spi: SPI_FLASH_MTD depends " Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 22/25] cmd: mtdparts: Kconfig: join mtdparts command entry with its options Miquel Raynal
2018-12-09 18:07 ` Miquel Raynal [this message]
2018-12-09 18:07 ` [U-Boot] [PATCH v4 24/25] cmd: make MTD commands depend on MTD Miquel Raynal
2018-12-09 18:07 ` [U-Boot] [PATCH v4 25/25] mtd: Makefile: deep cleanup Miquel Raynal
2019-02-20  5:20 ` [U-Boot] [PATCH v4 00/25] MTD defconfigs/Kconfigs/Makefiles heavy cleanup Vignesh R
2019-02-20  7:08   ` Miquel Raynal
2019-03-06  9:21     ` Miquel Raynal
2019-03-17 17:27       ` Miquel Raynal
2019-03-17 19:34         ` Tom Rini
2019-03-19  5:21         ` Jagan Teki
2019-04-12  5:43 ` Jagan Teki
2019-04-12  7:22   ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181209180747.24575-24-miquel.raynal@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.