diff options
author | Miquel Raynal <miquel.raynal@bootlin.com> | 2019-10-25 19:39:29 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-12-04 17:10:51 -0500 |
commit | eb446ef625bcff969f3e1d3a6874ce9d56113e9b (patch) | |
tree | 007af705dcc556a8382b6bc2199320e6df566d7f /drivers | |
parent | 587f44576e23174f1151f52b2c351777eb1b89ff (diff) |
cmd: nand/sf: isolate legacy code
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>
[trini: Don't export get_part function now]
Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mtd/Makefile | 2 | ||||
-rw-r--r-- | drivers/mtd/mtd_uboot.c | 94 |
2 files changed, 1 insertions, 95 deletions
diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile index bd4f533705..c742bc671a 100644 --- a/drivers/mtd/Makefile +++ b/drivers/mtd/Makefile @@ -3,7 +3,7 @@ # (C) Copyright 2000-2007 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. -ifneq (,$(findstring y,$(CONFIG_MTD)$(CONFIG_CMD_NAND)$(CONFIG_CMD_ONENAND)$(CONFIG_CMD_SF)$(CONFIG_CMD_MTD))) +ifneq (,$(findstring y,$(CONFIG_MTD)$(CONFIG_CMD_ONENAND)$(CONFIG_CMD_MTD))) obj-y += mtdcore.o mtd_uboot.o endif obj-$(CONFIG_DM_MTD) += mtd-uclass.o diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c index 7c6c9ac0bc..8aeccb016d 100644 --- a/drivers/mtd/mtd_uboot.c +++ b/drivers/mtd/mtd_uboot.c @@ -7,7 +7,6 @@ #include <env.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> @@ -356,96 +355,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; -} |