kernel: mtd: backport SafeLoader parser
authorRafał Miłecki <rafal@milecki.pl>
Tue, 18 Oct 2022 20:37:46 +0000 (22:37 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 19 Oct 2022 05:07:14 +0000 (07:07 +0200)
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
14 files changed:
target/linux/ath79/config-5.10
target/linux/ath79/config-5.15
target/linux/bcm53xx/config-5.10
target/linux/bcm53xx/config-5.15
target/linux/generic/backport-5.10/421-v6.2-mtd-parsers-add-TP-Link-SafeLoader-partitions-table-.patch [new file with mode: 0644]
target/linux/generic/backport-5.15/421-v6.2-mtd-parsers-add-TP-Link-SafeLoader-partitions-table-.patch [new file with mode: 0644]
target/linux/generic/pending-5.10/435-mtd-add-routerbootpart-parser-config.patch
target/linux/generic/pending-5.15/435-mtd-add-routerbootpart-parser-config.patch
target/linux/ramips/mt7620/config-5.10
target/linux/ramips/mt7620/config-5.15
target/linux/ramips/mt7621/config-5.10
target/linux/ramips/mt7621/config-5.15
target/linux/ramips/mt76x8/config-5.10
target/linux/ramips/mt76x8/config-5.15

index ac903aee6dfe005c76f72e7744eea2bc8924805e..04eec4375f0a25cec12dc0a27204a39c982c8073 100644 (file)
@@ -126,6 +126,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
 # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
 # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
 CONFIG_MTD_PARSER_CYBERTAN=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_SPLIT_ELF_FW=y
index acb6b840bf39b7c75be23be38189c1fe3f62f9b5..ce987c5539023e2aa5c314a2d76043c6d88222a8 100644 (file)
@@ -123,6 +123,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
 # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
 # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
 CONFIG_MTD_PARSER_CYBERTAN=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_SPLIT_ELF_FW=y
index d8fb7b2a5dc5531a4af0921499fe0b11e520df21..9850aa9563ec11b210bb3121ea1b16444692798b 100644 (file)
@@ -196,6 +196,7 @@ CONFIG_MTD_NAND_CORE=y
 CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_ECC_SW_HAMMING=y
 CONFIG_MTD_OF_PARTS_LINKSYS_NS=y
+CONFIG_MTD_PARSER_TPLINK_SAFELOADER=y
 CONFIG_MTD_PARSER_TRX=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_SPI_NOR=y
index 32ac9fb6cc94ce1c82d82d5f7ee0d81bb9983bba..3941c22b9c391ec95bc045deea48829bce2c1eb5 100644 (file)
@@ -205,6 +205,7 @@ CONFIG_MTD_NAND_CORE=y
 CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_ECC_SW_HAMMING=y
 CONFIG_MTD_OF_PARTS_LINKSYS_NS=y
+CONFIG_MTD_PARSER_TPLINK_SAFELOADER=y
 CONFIG_MTD_PARSER_TRX=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_SPI_NOR=y
diff --git a/target/linux/generic/backport-5.10/421-v6.2-mtd-parsers-add-TP-Link-SafeLoader-partitions-table-.patch b/target/linux/generic/backport-5.10/421-v6.2-mtd-parsers-add-TP-Link-SafeLoader-partitions-table-.patch
new file mode 100644 (file)
index 0000000..9f54336
--- /dev/null
@@ -0,0 +1,229 @@
+From aec4d5f5ffd0f0092bd9dc21ea90e0bc237d4b74 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Sat, 15 Oct 2022 11:29:50 +0200
+Subject: [PATCH] mtd: parsers: add TP-Link SafeLoader partitions table parser
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This parser deals with most TP-Link home routers. It reads info about
+partitions and registers them in the MTD subsystem.
+
+Example from TP-Link Archer C5 V2:
+
+spi-nor spi0.0: s25fl128s1 (16384 Kbytes)
+15 tplink-safeloader partitions found on MTD device spi0.0
+Creating 15 MTD partitions on "spi0.0":
+0x000000000000-0x000000040000 : "fs-uboot"
+0x000000040000-0x000000440000 : "os-image"
+0x000000440000-0x000000e40000 : "rootfs"
+0x000000e40000-0x000000e40200 : "default-mac"
+0x000000e40200-0x000000e40400 : "pin"
+0x000000e40400-0x000000e40600 : "product-info"
+0x000000e50000-0x000000e60000 : "partition-table"
+0x000000e60000-0x000000e60200 : "soft-version"
+0x000000e61000-0x000000e70000 : "support-list"
+0x000000e70000-0x000000e80000 : "profile"
+0x000000e80000-0x000000e90000 : "default-config"
+0x000000e90000-0x000000ee0000 : "user-config"
+0x000000ee0000-0x000000fe0000 : "log"
+0x000000fe0000-0x000000ff0000 : "radio_bk"
+0x000000ff0000-0x000001000000 : "radio"
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
+Link: https://lore.kernel.org/linux-mtd/20221015092950.27467-2-zajec5@gmail.com
+---
+ drivers/mtd/parsers/Kconfig             |  15 +++
+ drivers/mtd/parsers/Makefile            |   1 +
+ drivers/mtd/parsers/tplink_safeloader.c | 150 ++++++++++++++++++++++++
+ 3 files changed, 166 insertions(+)
+ create mode 100644 drivers/mtd/parsers/tplink_safeloader.c
+
+--- a/drivers/mtd/parsers/Kconfig
++++ b/drivers/mtd/parsers/Kconfig
+@@ -113,6 +113,21 @@ config MTD_AFS_PARTS
+         for your particular device. It won't happen automatically. The
+         'physmap' map driver (CONFIG_MTD_PHYSMAP) does this, for example.
++config MTD_PARSER_TPLINK_SAFELOADER
++      tristate "TP-Link Safeloader partitions parser"
++      depends on MTD && (ARCH_BCM_5301X || ATH79 || SOC_MT7620 || SOC_MT7621 || COMPILE_TEST)
++      help
++        TP-Link home routers use flash partitions to store various data. Info
++        about flash space layout is stored in a partitions table using a
++        custom ASCII-based format.
++
++        That format was first found in devices with SafeLoader bootloader and
++        was named after it. Later it was adapted to CFE and U-Boot
++        bootloaders.
++
++        This driver reads partitions table, parses it and creates MTD
++        partitions.
++
+ config MTD_PARSER_TRX
+       tristate "Parser for TRX format partitions"
+       depends on MTD && (BCM47XX || ARCH_BCM_5301X || ARCH_MEDIATEK || RALINK || COMPILE_TEST)
+--- a/drivers/mtd/parsers/Makefile
++++ b/drivers/mtd/parsers/Makefile
+@@ -9,6 +9,7 @@ ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908)  +=
+ ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o
+ obj-$(CONFIG_MTD_PARSER_IMAGETAG)     += parser_imagetag.o
+ obj-$(CONFIG_MTD_AFS_PARTS)           += afs.o
++obj-$(CONFIG_MTD_PARSER_TPLINK_SAFELOADER)    += tplink_safeloader.o
+ obj-$(CONFIG_MTD_PARSER_TRX)          += parser_trx.o
+ obj-$(CONFIG_MTD_SERCOMM_PARTS)               += scpart.o
+ obj-$(CONFIG_MTD_SHARPSL_PARTS)               += sharpslpart.o
+--- /dev/null
++++ b/drivers/mtd/parsers/tplink_safeloader.c
+@@ -0,0 +1,150 @@
++// SPDX-License-Identifier: GPL-2.0-only
++/*
++ * Copyright © 2022 Rafał Miłecki <rafal@milecki.pl>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/of.h>
++#include <linux/slab.h>
++
++#define TPLINK_SAFELOADER_DATA_OFFSET         4
++#define TPLINK_SAFELOADER_MAX_PARTS           32
++
++struct safeloader_cmn_header {
++      __be32 size;
++      uint32_t unused;
++} __packed;
++
++static void *mtd_parser_tplink_safeloader_read_table(struct mtd_info *mtd)
++{
++      struct safeloader_cmn_header hdr;
++      struct device_node *np;
++      size_t bytes_read;
++      size_t offset;
++      size_t size;
++      char *buf;
++      int err;
++
++      np = mtd_get_of_node(mtd);
++      if (mtd_is_partition(mtd))
++              of_node_get(np);
++      else
++              np = of_get_child_by_name(np, "partitions");
++
++      if (of_property_read_u32(np, "partitions-table-offset", (u32 *)&offset)) {
++              pr_err("Failed to get partitions table offset\n");
++              goto err_put;
++      }
++
++      err = mtd_read(mtd, offset, sizeof(hdr), &bytes_read, (uint8_t *)&hdr);
++      if (err && !mtd_is_bitflip(err)) {
++              pr_err("Failed to read from %s at 0x%zx\n", mtd->name, offset);
++              goto err_put;
++      }
++
++      size = be32_to_cpu(hdr.size);
++
++      buf = kmalloc(size + 1, GFP_KERNEL);
++      if (!buf)
++              goto err_put;
++
++      err = mtd_read(mtd, offset + sizeof(hdr), size, &bytes_read, buf);
++      if (err && !mtd_is_bitflip(err)) {
++              pr_err("Failed to read from %s at 0x%zx\n", mtd->name, offset + sizeof(hdr));
++              goto err_kfree;
++      }
++
++      buf[size] = '\0';
++
++      of_node_put(np);
++
++      return buf;
++
++err_kfree:
++      kfree(buf);
++err_put:
++      of_node_put(np);
++      return NULL;
++}
++
++static int mtd_parser_tplink_safeloader_parse(struct mtd_info *mtd,
++                                            const struct mtd_partition **pparts,
++                                            struct mtd_part_parser_data *data)
++{
++      struct mtd_partition *parts;
++      char name[65];
++      size_t offset;
++      size_t bytes;
++      char *buf;
++      int idx;
++      int err;
++
++      parts = kcalloc(TPLINK_SAFELOADER_MAX_PARTS, sizeof(*parts), GFP_KERNEL);
++      if (!parts) {
++              err = -ENOMEM;
++              goto err_out;
++      }
++
++      buf = mtd_parser_tplink_safeloader_read_table(mtd);
++      if (!buf) {
++              err = -ENOENT;
++              goto err_out;
++      }
++
++      for (idx = 0, offset = TPLINK_SAFELOADER_DATA_OFFSET;
++           idx < TPLINK_SAFELOADER_MAX_PARTS &&
++           sscanf(buf + offset, "partition %64s base 0x%llx size 0x%llx%zn\n",
++                  name, &parts[idx].offset, &parts[idx].size, &bytes) == 3;
++           idx++, offset += bytes + 1) {
++              parts[idx].name = kstrdup(name, GFP_KERNEL);
++              if (!parts[idx].name) {
++                      err = -ENOMEM;
++                      goto err_free;
++              }
++      }
++
++      if (idx == TPLINK_SAFELOADER_MAX_PARTS)
++              pr_warn("Reached maximum number of partitions!\n");
++
++      kfree(buf);
++
++      *pparts = parts;
++
++      return idx;
++
++err_free:
++      for (idx -= 1; idx >= 0; idx--)
++              kfree(parts[idx].name);
++err_out:
++      return err;
++};
++
++static void mtd_parser_tplink_safeloader_cleanup(const struct mtd_partition *pparts,
++                                               int nr_parts)
++{
++      int i;
++
++      for (i = 0; i < nr_parts; i++)
++              kfree(pparts[i].name);
++
++      kfree(pparts);
++}
++
++static const struct of_device_id mtd_parser_tplink_safeloader_of_match_table[] = {
++      { .compatible = "tplink,safeloader-partitions" },
++      {},
++};
++MODULE_DEVICE_TABLE(of, mtd_parser_tplink_safeloader_of_match_table);
++
++static struct mtd_part_parser mtd_parser_tplink_safeloader = {
++      .parse_fn = mtd_parser_tplink_safeloader_parse,
++      .cleanup = mtd_parser_tplink_safeloader_cleanup,
++      .name = "tplink-safeloader",
++      .of_match_table = mtd_parser_tplink_safeloader_of_match_table,
++};
++module_mtd_part_parser(mtd_parser_tplink_safeloader);
++
++MODULE_LICENSE("GPL");
diff --git a/target/linux/generic/backport-5.15/421-v6.2-mtd-parsers-add-TP-Link-SafeLoader-partitions-table-.patch b/target/linux/generic/backport-5.15/421-v6.2-mtd-parsers-add-TP-Link-SafeLoader-partitions-table-.patch
new file mode 100644 (file)
index 0000000..9f54336
--- /dev/null
@@ -0,0 +1,229 @@
+From aec4d5f5ffd0f0092bd9dc21ea90e0bc237d4b74 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Sat, 15 Oct 2022 11:29:50 +0200
+Subject: [PATCH] mtd: parsers: add TP-Link SafeLoader partitions table parser
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This parser deals with most TP-Link home routers. It reads info about
+partitions and registers them in the MTD subsystem.
+
+Example from TP-Link Archer C5 V2:
+
+spi-nor spi0.0: s25fl128s1 (16384 Kbytes)
+15 tplink-safeloader partitions found on MTD device spi0.0
+Creating 15 MTD partitions on "spi0.0":
+0x000000000000-0x000000040000 : "fs-uboot"
+0x000000040000-0x000000440000 : "os-image"
+0x000000440000-0x000000e40000 : "rootfs"
+0x000000e40000-0x000000e40200 : "default-mac"
+0x000000e40200-0x000000e40400 : "pin"
+0x000000e40400-0x000000e40600 : "product-info"
+0x000000e50000-0x000000e60000 : "partition-table"
+0x000000e60000-0x000000e60200 : "soft-version"
+0x000000e61000-0x000000e70000 : "support-list"
+0x000000e70000-0x000000e80000 : "profile"
+0x000000e80000-0x000000e90000 : "default-config"
+0x000000e90000-0x000000ee0000 : "user-config"
+0x000000ee0000-0x000000fe0000 : "log"
+0x000000fe0000-0x000000ff0000 : "radio_bk"
+0x000000ff0000-0x000001000000 : "radio"
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
+Link: https://lore.kernel.org/linux-mtd/20221015092950.27467-2-zajec5@gmail.com
+---
+ drivers/mtd/parsers/Kconfig             |  15 +++
+ drivers/mtd/parsers/Makefile            |   1 +
+ drivers/mtd/parsers/tplink_safeloader.c | 150 ++++++++++++++++++++++++
+ 3 files changed, 166 insertions(+)
+ create mode 100644 drivers/mtd/parsers/tplink_safeloader.c
+
+--- a/drivers/mtd/parsers/Kconfig
++++ b/drivers/mtd/parsers/Kconfig
+@@ -113,6 +113,21 @@ config MTD_AFS_PARTS
+         for your particular device. It won't happen automatically. The
+         'physmap' map driver (CONFIG_MTD_PHYSMAP) does this, for example.
++config MTD_PARSER_TPLINK_SAFELOADER
++      tristate "TP-Link Safeloader partitions parser"
++      depends on MTD && (ARCH_BCM_5301X || ATH79 || SOC_MT7620 || SOC_MT7621 || COMPILE_TEST)
++      help
++        TP-Link home routers use flash partitions to store various data. Info
++        about flash space layout is stored in a partitions table using a
++        custom ASCII-based format.
++
++        That format was first found in devices with SafeLoader bootloader and
++        was named after it. Later it was adapted to CFE and U-Boot
++        bootloaders.
++
++        This driver reads partitions table, parses it and creates MTD
++        partitions.
++
+ config MTD_PARSER_TRX
+       tristate "Parser for TRX format partitions"
+       depends on MTD && (BCM47XX || ARCH_BCM_5301X || ARCH_MEDIATEK || RALINK || COMPILE_TEST)
+--- a/drivers/mtd/parsers/Makefile
++++ b/drivers/mtd/parsers/Makefile
+@@ -9,6 +9,7 @@ ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908)  +=
+ ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o
+ obj-$(CONFIG_MTD_PARSER_IMAGETAG)     += parser_imagetag.o
+ obj-$(CONFIG_MTD_AFS_PARTS)           += afs.o
++obj-$(CONFIG_MTD_PARSER_TPLINK_SAFELOADER)    += tplink_safeloader.o
+ obj-$(CONFIG_MTD_PARSER_TRX)          += parser_trx.o
+ obj-$(CONFIG_MTD_SERCOMM_PARTS)               += scpart.o
+ obj-$(CONFIG_MTD_SHARPSL_PARTS)               += sharpslpart.o
+--- /dev/null
++++ b/drivers/mtd/parsers/tplink_safeloader.c
+@@ -0,0 +1,150 @@
++// SPDX-License-Identifier: GPL-2.0-only
++/*
++ * Copyright © 2022 Rafał Miłecki <rafal@milecki.pl>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/of.h>
++#include <linux/slab.h>
++
++#define TPLINK_SAFELOADER_DATA_OFFSET         4
++#define TPLINK_SAFELOADER_MAX_PARTS           32
++
++struct safeloader_cmn_header {
++      __be32 size;
++      uint32_t unused;
++} __packed;
++
++static void *mtd_parser_tplink_safeloader_read_table(struct mtd_info *mtd)
++{
++      struct safeloader_cmn_header hdr;
++      struct device_node *np;
++      size_t bytes_read;
++      size_t offset;
++      size_t size;
++      char *buf;
++      int err;
++
++      np = mtd_get_of_node(mtd);
++      if (mtd_is_partition(mtd))
++              of_node_get(np);
++      else
++              np = of_get_child_by_name(np, "partitions");
++
++      if (of_property_read_u32(np, "partitions-table-offset", (u32 *)&offset)) {
++              pr_err("Failed to get partitions table offset\n");
++              goto err_put;
++      }
++
++      err = mtd_read(mtd, offset, sizeof(hdr), &bytes_read, (uint8_t *)&hdr);
++      if (err && !mtd_is_bitflip(err)) {
++              pr_err("Failed to read from %s at 0x%zx\n", mtd->name, offset);
++              goto err_put;
++      }
++
++      size = be32_to_cpu(hdr.size);
++
++      buf = kmalloc(size + 1, GFP_KERNEL);
++      if (!buf)
++              goto err_put;
++
++      err = mtd_read(mtd, offset + sizeof(hdr), size, &bytes_read, buf);
++      if (err && !mtd_is_bitflip(err)) {
++              pr_err("Failed to read from %s at 0x%zx\n", mtd->name, offset + sizeof(hdr));
++              goto err_kfree;
++      }
++
++      buf[size] = '\0';
++
++      of_node_put(np);
++
++      return buf;
++
++err_kfree:
++      kfree(buf);
++err_put:
++      of_node_put(np);
++      return NULL;
++}
++
++static int mtd_parser_tplink_safeloader_parse(struct mtd_info *mtd,
++                                            const struct mtd_partition **pparts,
++                                            struct mtd_part_parser_data *data)
++{
++      struct mtd_partition *parts;
++      char name[65];
++      size_t offset;
++      size_t bytes;
++      char *buf;
++      int idx;
++      int err;
++
++      parts = kcalloc(TPLINK_SAFELOADER_MAX_PARTS, sizeof(*parts), GFP_KERNEL);
++      if (!parts) {
++              err = -ENOMEM;
++              goto err_out;
++      }
++
++      buf = mtd_parser_tplink_safeloader_read_table(mtd);
++      if (!buf) {
++              err = -ENOENT;
++              goto err_out;
++      }
++
++      for (idx = 0, offset = TPLINK_SAFELOADER_DATA_OFFSET;
++           idx < TPLINK_SAFELOADER_MAX_PARTS &&
++           sscanf(buf + offset, "partition %64s base 0x%llx size 0x%llx%zn\n",
++                  name, &parts[idx].offset, &parts[idx].size, &bytes) == 3;
++           idx++, offset += bytes + 1) {
++              parts[idx].name = kstrdup(name, GFP_KERNEL);
++              if (!parts[idx].name) {
++                      err = -ENOMEM;
++                      goto err_free;
++              }
++      }
++
++      if (idx == TPLINK_SAFELOADER_MAX_PARTS)
++              pr_warn("Reached maximum number of partitions!\n");
++
++      kfree(buf);
++
++      *pparts = parts;
++
++      return idx;
++
++err_free:
++      for (idx -= 1; idx >= 0; idx--)
++              kfree(parts[idx].name);
++err_out:
++      return err;
++};
++
++static void mtd_parser_tplink_safeloader_cleanup(const struct mtd_partition *pparts,
++                                               int nr_parts)
++{
++      int i;
++
++      for (i = 0; i < nr_parts; i++)
++              kfree(pparts[i].name);
++
++      kfree(pparts);
++}
++
++static const struct of_device_id mtd_parser_tplink_safeloader_of_match_table[] = {
++      { .compatible = "tplink,safeloader-partitions" },
++      {},
++};
++MODULE_DEVICE_TABLE(of, mtd_parser_tplink_safeloader_of_match_table);
++
++static struct mtd_part_parser mtd_parser_tplink_safeloader = {
++      .parse_fn = mtd_parser_tplink_safeloader_parse,
++      .cleanup = mtd_parser_tplink_safeloader_cleanup,
++      .name = "tplink-safeloader",
++      .of_match_table = mtd_parser_tplink_safeloader_of_match_table,
++};
++module_mtd_part_parser(mtd_parser_tplink_safeloader);
++
++MODULE_LICENSE("GPL");
index 446bc0bef103b284a07582e8e34fc2fe792b4fa6..5c7b57b373d05bcbd6d8fab69c007e150daa79d0 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
 
 --- a/drivers/mtd/parsers/Kconfig
 +++ b/drivers/mtd/parsers/Kconfig
-@@ -204,3 +204,12 @@ config MTD_SERCOMM_PARTS
+@@ -219,3 +219,12 @@ config MTD_SERCOMM_PARTS
          partition map. This partition table contains real partition
          offsets, which may differ from device to device depending on the
          number and location of bad blocks on NAND.
@@ -31,7 +31,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
 +       formatted DTS.
 --- a/drivers/mtd/parsers/Makefile
 +++ b/drivers/mtd/parsers/Makefile
-@@ -14,3 +14,4 @@ obj-$(CONFIG_MTD_PARSER_TRX)         += parser_
+@@ -15,3 +15,4 @@ obj-$(CONFIG_MTD_PARSER_TRX)         += parser_
  obj-$(CONFIG_MTD_SERCOMM_PARTS)               += scpart.o
  obj-$(CONFIG_MTD_SHARPSL_PARTS)               += sharpslpart.o
  obj-$(CONFIG_MTD_REDBOOT_PARTS)               += redboot.o
index 30f5334af40b754f54c372b311f9ed31c170a005..ee949f73c095f9939a2d049d388c6abdd5b71e00 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
 
 --- a/drivers/mtd/parsers/Kconfig
 +++ b/drivers/mtd/parsers/Kconfig
-@@ -211,3 +211,12 @@ config MTD_SERCOMM_PARTS
+@@ -226,3 +226,12 @@ config MTD_SERCOMM_PARTS
          partition map. This partition table contains real partition
          offsets, which may differ from device to device depending on the
          number and location of bad blocks on NAND.
@@ -31,7 +31,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
 +       formatted DTS.
 --- a/drivers/mtd/parsers/Makefile
 +++ b/drivers/mtd/parsers/Makefile
-@@ -15,3 +15,4 @@ obj-$(CONFIG_MTD_SERCOMM_PARTS)              += scpa
+@@ -16,3 +16,4 @@ obj-$(CONFIG_MTD_SERCOMM_PARTS)              += scpa
  obj-$(CONFIG_MTD_SHARPSL_PARTS)               += sharpslpart.o
  obj-$(CONFIG_MTD_REDBOOT_PARTS)               += redboot.o
  obj-$(CONFIG_MTD_QCOMSMEM_PARTS)      += qcomsmempart.o
index f6b388224968cd379f35f5054dcd1d6d3a9875e8..fb0fd1d30b5a0a2267c95ae7812b88e5483f528c 100644 (file)
@@ -112,6 +112,7 @@ CONFIG_MODULES_USE_ELF_REL=y
 # CONFIG_MT7621_WDT is not set
 # CONFIG_MTD_CFI_INTELEXT is not set
 CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
index d6c6995efe0d4cdaf68abe53cf066f017e9dd12f..0f8aca000cd5451f8923d41a6207d1ad9b097580 100644 (file)
@@ -113,6 +113,7 @@ CONFIG_MODULES_USE_ELF_REL=y
 # CONFIG_MT7621_WDT is not set
 # CONFIG_MTD_CFI_INTELEXT is not set
 CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
index 1b415f3e665bbd2d869b416dcbd691a568b2ab85..b6c74074845bc7787ec1bd6ad75099b6775872e5 100644 (file)
@@ -159,6 +159,7 @@ CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_ECC_SW_HAMMING=y
 CONFIG_MTD_NAND_MT7621=y
 CONFIG_MTD_NAND_MTK_BMT=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_ROUTERBOOT_PARTS=y
index a8094fe305b2ab79aa2ac4161353d6285dfc6f6e..adda3fef64b75ae35b780aa822d8d69d9f30b87c 100644 (file)
@@ -160,6 +160,7 @@ CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_ECC_SW_HAMMING=y
 CONFIG_MTD_NAND_MT7621=y
 CONFIG_MTD_NAND_MTK_BMT=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_ROUTERBOOT_PARTS=y
index 39d04b8d109715727127232202024fa3775656c5..37f0bb8e3e115510c7d7a657614d4314c0b42324 100644 (file)
@@ -110,6 +110,7 @@ CONFIG_MODULES_USE_ELF_REL=y
 CONFIG_MT7621_WDT=y
 # CONFIG_MTD_CFI_INTELEXT is not set
 CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PARSER_TRX=y
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_SPI_NOR=y
index 555b57fe6091f00584f07521a8e5664e13cf50f4..5e44d613df0db54ac98c126d2351354ffa649233 100644 (file)
@@ -111,6 +111,7 @@ CONFIG_MODULES_USE_ELF_REL=y
 CONFIG_MT7621_WDT=y
 # CONFIG_MTD_CFI_INTELEXT is not set
 CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
 CONFIG_MTD_PARSER_TRX=y
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_SPI_NOR=y