Not overly exciting.
https://lists.infradead.org/pipermail/linux-mtd/2024-March/104058.html

* Fix options that changed from endis to wwo.

* Forward patchset, applies cleanly.

Signed-off-by: Christian Melki <christian.me...@t2data.com>
---
 ...rkbad-new-util-to-mark-blocks-as-bad.patch | 158 ++++++++++++++++++
 patches/mtd-utils-2.2.0/autogen.sh            |   1 +
 patches/mtd-utils-2.2.0/series                |   4 +
 rules/mtd-utils.make                          |   8 +-
 4 files changed, 167 insertions(+), 4 deletions(-)
 create mode 100644 
patches/mtd-utils-2.2.0/0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch
 create mode 120000 patches/mtd-utils-2.2.0/autogen.sh
 create mode 100644 patches/mtd-utils-2.2.0/series

diff --git 
a/patches/mtd-utils-2.2.0/0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch 
b/patches/mtd-utils-2.2.0/0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch
new file mode 100644
index 000000000..e6ff202a7
--- /dev/null
+++ 
b/patches/mtd-utils-2.2.0/0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch
@@ -0,0 +1,158 @@
+From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koe...@pengutronix.de>
+Date: Wed, 30 Aug 2017 13:31:46 +0200
+Subject: [PATCH] nandmarkbad: new util to mark blocks as bad
+
+---
+ nand-utils/Makemodule.am |   5 +-
+ nand-utils/nandmarkbad.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 123 insertions(+), 1 deletion(-)
+ create mode 100644 nand-utils/nandmarkbad.c
+
+diff --git a/nand-utils/Makemodule.am b/nand-utils/Makemodule.am
+index cee677783e7a..7fd1de5aa9ae 100644
+--- a/nand-utils/Makemodule.am
++++ b/nand-utils/Makemodule.am
+@@ -7,6 +7,9 @@ nandwrite_LDADD = libmtd.a
+ nandtest_SOURCES = nand-utils/nandtest.c
+ nandtest_LDADD = libmtd.a
+ 
++nandmarkbad_SOURCES = nand-utils/nandmarkbad.c
++nandmarkbad_LDADD = libmtd.a
++
+ nftldump_SOURCES = nand-utils/nftldump.c include/mtd_swab.h
+ nftldump_SOURCES += include/mtd/nftl-user.h include/mtd/ftl-user.h
+ nftldump_LDADD = libmtd.a
+@@ -23,7 +26,7 @@ NAND_SH = \
+ 
+ EXTRA_DIST += $(NAND_SH)
+ 
+-sbin_PROGRAMS += nanddump nandwrite nandtest nftldump nftl_format nandflipbits
++sbin_PROGRAMS += nanddump nandwrite nandtest nandmarkbad nftldump nftl_format 
nandflipbits
+ 
+ if BUILD_TESTS
+ test_SCRIPTS += $(NAND_SH)
+diff --git a/nand-utils/nandmarkbad.c b/nand-utils/nandmarkbad.c
+new file mode 100644
+index 000000000000..cf05698c3609
+--- /dev/null
++++ b/nand-utils/nandmarkbad.c
+@@ -0,0 +1,119 @@
++#define PROGRAM_NAME "nandmarkbad"
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <getopt.h>
++
++#include "common.h"
++#include <libmtd.h>
++
++static void usage(int status)
++{
++      fprintf(status ? stderr : stdout,
++              "usage: %s [OPTIONS] <device>\n\n"
++              "  -b, --markbad=blockno        Mark block bad\n"
++              "  -h, --help                   Display this help and exit\n"
++              "  -V, --version                Output version information and 
exit\n"
++              "  -y, --i-know-what-i-do       really do mark blocks as bad\n",
++              PROGRAM_NAME);
++      exit(status);
++}
++
++/*
++ * Main program
++ */
++int main(int argc, char **argv)
++{
++      loff_t mark_bad[32];
++      unsigned cnt_bad = 0;
++      struct mtd_dev_info mtd;
++      libmtd_t mtd_desc;
++      int fd;
++      int error = 0;
++      int ret;
++      unsigned int i;
++      int iknowwhatido = 0;
++
++      for (;;) {
++              static const char short_options[] = "b:hVy";
++              static const struct option long_options[] = {
++                      { "help", no_argument, 0, 'h' },
++                      { "markbad", required_argument, 0, 'b' },
++                      { "version", no_argument, 0, 'V'},
++                      { "i-know-what-i-do", no_argument, 0, 'y' },
++                      {0, 0, 0, 0},
++              };
++              int option_index = 0;
++              int c = getopt_long(argc, argv, short_options, long_options,
++                                  &option_index);
++              if (c == EOF)
++                      break;
++
++              switch (c) {
++              case '?':
++                      usage(EXIT_FAILURE);
++                      break;
++
++              case 'b':
++                      if (cnt_bad < ARRAY_SIZE(mark_bad)) {
++                              mark_bad[cnt_bad] =
++                                      simple_strtoll(optarg, &error);
++                              ++cnt_bad;
++                      } else {
++                              errmsg_die("Can't handle so many bad blocks\n");
++                      }
++
++                      break;
++
++              case 'h':
++                      usage(EXIT_SUCCESS);
++                      break;
++
++              case 'V':
++                      common_print_version();
++                      return EXIT_SUCCESS;
++
++              case 'y':
++                      iknowwhatido = 1;
++                      break;
++              }
++      }
++
++      argc -= optind;
++      argv += optind;
++
++      if (error)
++              usage(EXIT_FAILURE);
++
++      if (argc != 1)
++              errmsg_die("You must specify a device to operate on\n");
++
++      if (!cnt_bad)
++              errmsg_die("You must specify at least one block to mark bad\n");
++
++      if (!iknowwhatido)
++              errmsg_die(PROGRAM_NAME " does things that are hard to undo.\n"
++                         "\tPlease convince yourself you understand the 
risks,\n"
++                         "\tthen add --i-know-what-i-do to the options.\n");
++
++      fd = open(argv[0], O_RDWR);
++      if (fd < 0)
++              sys_errmsg_die("Failed to open mtd device\n");
++
++      mtd_desc = libmtd_open();
++      if (!mtd_desc)
++              errmsg_die("Can't initialize libmtd");
++
++      if (mtd_get_dev_info(mtd_desc, argv[0], &mtd) < 0)
++              errmsg_die("mtd_get_dev_info failed");
++
++      for (i = 0; i < cnt_bad; ++i) {
++              ret = mtd_mark_bad(&mtd, fd, mark_bad[i]);
++              if (ret)
++                      sys_errmsg_die("%s: MTD Mark bad block failure",
++                                     argv[0]);
++      }
++
++      return EXIT_SUCCESS;
++}
diff --git a/patches/mtd-utils-2.2.0/autogen.sh 
b/patches/mtd-utils-2.2.0/autogen.sh
new file mode 120000
index 000000000..9f8a4cb7d
--- /dev/null
+++ b/patches/mtd-utils-2.2.0/autogen.sh
@@ -0,0 +1 @@
+../autogen.sh
\ No newline at end of file
diff --git a/patches/mtd-utils-2.2.0/series b/patches/mtd-utils-2.2.0/series
new file mode 100644
index 000000000..92dc1b94f
--- /dev/null
+++ b/patches/mtd-utils-2.2.0/series
@@ -0,0 +1,4 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch
+# 407ded52b82ffa3ff91d50cf6b2388e0  - git-ptx-patches magic
diff --git a/rules/mtd-utils.make b/rules/mtd-utils.make
index bef25b9ab..9722c20a5 100644
--- a/rules/mtd-utils.make
+++ b/rules/mtd-utils.make
@@ -15,8 +15,8 @@ PACKAGES-$(PTXCONF_MTD_UTILS) += mtd-utils
 #
 # Paths and names
 #
-MTD_UTILS_VERSION      := 2.1.6
-MTD_UTILS_MD5          := 2851d4b13e5c1cf9415f76102a34d623
+MTD_UTILS_VERSION      := 2.2.0
+MTD_UTILS_MD5          := 35d71328107c54068c8df5a3b980c06e
 MTD_UTILS              := mtd-utils-$(MTD_UTILS_VERSION)
 MTD_UTILS_SUFFIX       := tar.bz2
 MTD_UTILS_URL          := 
https://infraroot.at/pub/mtd/$(MTD_UTILS).$(MTD_UTILS_SUFFIX)
@@ -35,9 +35,9 @@ MTD_UTILS_CONF_OPT    := \
        $(CROSS_AUTOCONF_USR) \
        --disable-unit-tests \
        $(GLOBAL_LARGE_FILE_OPTION) \
-       --$(call ptx/endis,PTXCONF_MTD_UTILS_TESTS)-tests \
+       --$(call ptx/wwo,PTXCONF_MTD_UTILS_TESTS)-tests \
        --$(call ptx/endis,PTXCONF_MTD_UTILS_UBIHEALTHD)-ubihealthd \
-       --$(call ptx/endis, PTXCONF_MTD_UTILS_LSMTD)-lsmtd \
+       --$(call ptx/wwo, PTXCONF_MTD_UTILS_LSMTD)-lsmtd \
        --$(call ptx/wwo, PTXCONF_MTD_UTILS_JFFS)-jffs \
        --$(call ptx/wwo, PTXCONF_MTD_UTILS_UBIFS)-ubifs \
        --without-xattr \
-- 
2.34.1


Reply via email to