kernel: backport 5.13 mtd partitioning changes

1. Use upstream accepted NVMEM patches
2. Minor fix for BCM4908 partitioning
3. Support for Linksys firmware partitions on Northstar

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
Rafał Miłecki 2021-03-29 08:16:17 +02:00
parent 571aedbc6c
commit 3fd0a4222b
26 changed files with 629 additions and 44 deletions

View File

@ -1,18 +1,18 @@
--- a/drivers/mtd/parsers/Makefile --- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile +++ b/drivers/mtd/parsers/Makefile
@@ -7,6 +7,7 @@ obj-$(CONFIG_MTD_MYLOADER_PARTS) += myl @@ -8,6 +8,7 @@ obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
ofpart-y += ofpart_core.o ofpart-y += ofpart_core.o
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o
+obj-$(CONFIG_MTD_PARSER_CYBERTAN) += parser_cybertan.o +obj-$(CONFIG_MTD_PARSER_CYBERTAN) += parser_cybertan.o
obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -92,6 +92,14 @@ config MTD_OF_PARTS_BCM4908 @@ -102,6 +102,14 @@ config MTD_OF_PARTS_LINKSYS_NS
that can have multiple "firmware" partitions. It takes care of two "firmware" partitions. Currently used firmware has to be detected
finding currently used one and backup ones. using CFE environment variable.
+config MTD_PARSER_CYBERTAN +config MTD_PARSER_CYBERTAN
+ tristate "Parser for Cybertan format partitions" + tristate "Parser for Cybertan format partitions"

View File

@ -1,18 +1,18 @@
--- a/drivers/mtd/parsers/Makefile --- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile +++ b/drivers/mtd/parsers/Makefile
@@ -7,6 +7,7 @@ obj-$(CONFIG_MTD_MYLOADER_PARTS) += myl @@ -8,6 +8,7 @@ obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
ofpart-y += ofpart_core.o ofpart-y += ofpart_core.o
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o
+obj-$(CONFIG_MTD_PARSER_CYBERTAN) += parser_cybertan.o +obj-$(CONFIG_MTD_PARSER_CYBERTAN) += parser_cybertan.o
obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -92,6 +92,14 @@ config MTD_OF_PARTS_BCM4908 @@ -102,6 +102,14 @@ config MTD_OF_PARTS_LINKSYS_NS
that can have multiple "firmware" partitions. It takes care of two "firmware" partitions. Currently used firmware has to be detected
finding currently used one and backup ones. using CFE environment variable.
+config MTD_PARSER_CYBERTAN +config MTD_PARSER_CYBERTAN
+ tristate "Parser for Cybertan format partitions" + tristate "Parser for Cybertan format partitions"

View File

@ -139,6 +139,7 @@ CONFIG_MTD_NAND_BRCMNAND=y
CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_OF_PARTS_BCM4908=y CONFIG_MTD_OF_PARTS_BCM4908=y
# CONFIG_MTD_OF_PARTS_LINKSYS_NS is not set
CONFIG_MTD_RAW_NAND=y CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_SPLIT_CFE_BOOTFS=y CONFIG_MTD_SPLIT_CFE_BOOTFS=y
# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set # CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set

View File

@ -258,6 +258,7 @@ CONFIG_MTD_BCM47XX_PARTS=y
CONFIG_MTD_NAND_BRCMNAND=y CONFIG_MTD_NAND_BRCMNAND=y
CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_OF_PARTS_LINKSYS_NS=y
CONFIG_MTD_PARSER_TRX=y CONFIG_MTD_PARSER_TRX=y
CONFIG_MTD_RAW_NAND=y CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_SPI_NOR=y CONFIG_MTD_SPI_NOR=y

View File

@ -0,0 +1,34 @@
From b87b6d2d6f540e29c3f98e1572d64e560d73d6c1 Mon Sep 17 00:00:00 2001
From: Wei Yongjun <weiyongjun1@huawei.com>
Date: Thu, 4 Mar 2021 06:46:00 +0000
Subject: [PATCH] mtd: parsers: ofpart: make symbol 'bcm4908_partitions_quirks'
static
The sparse tool complains as follows:
drivers/mtd/parsers/ofpart_core.c:25:32: warning:
symbol 'bcm4908_partitions_quirks' was not declared. Should it be static?
This symbol is not used outside of ofpart_core.c, so this
commit marks it static.
Fixes: 457da931b608 ("mtd: parsers: ofpart: support BCM4908 fixed partitions")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210304064600.3279138-1-weiyongjun1@huawei.com
---
drivers/mtd/parsers/ofpart_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c
@@ -22,7 +22,7 @@ struct fixed_partitions_quirks {
int (*post_parse)(struct mtd_info *mtd, struct mtd_partition *parts, int nr_parts);
};
-struct fixed_partitions_quirks bcm4908_partitions_quirks = {
+static struct fixed_partitions_quirks bcm4908_partitions_quirks = {
.post_parse = bcm4908_partitions_post_parse,
};

View File

@ -0,0 +1,98 @@
From 2fa7294175c76e1ec568aa75c1891fd908728c8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 12 Mar 2021 14:49:18 +0100
Subject: [PATCH] dt-bindings: mtd: add binding for Linksys Northstar
partitions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Linksys on Broadcom Northstar devices uses fixed flash layout with
multiple firmware partitions.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210312134919.7767-1-zajec5@gmail.com
---
.../mtd/partitions/linksys,ns-partitions.yaml | 74 +++++++++++++++++++
1 file changed, 74 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/partitions/linksys,ns-partitions.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Linksys Northstar partitioning
+
+description: |
+ Linksys devices based on Broadcom Northstar architecture often use two
+ firmware partitions. One is used for regular booting, the other is treated as
+ fallback.
+
+ This binding allows defining all fixed partitions and marking those containing
+ firmware. System can use that information e.g. for booting or flashing
+ purposes.
+
+maintainers:
+ - Rafał Miłecki <rafal@milecki.pl>
+
+properties:
+ compatible:
+ const: linksys,ns-partitions
+
+ "#address-cells":
+ enum: [ 1, 2 ]
+
+ "#size-cells":
+ enum: [ 1, 2 ]
+
+patternProperties:
+ "^partition@[0-9a-f]+$":
+ $ref: "partition.yaml#"
+ properties:
+ compatible:
+ items:
+ - const: linksys,ns-firmware
+ - const: brcm,trx
+ unevaluatedProperties: false
+
+required:
+ - "#address-cells"
+ - "#size-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ partitions {
+ compatible = "linksys,ns-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "boot";
+ reg = <0x0 0x100000>;
+ read-only;
+ };
+
+ partition@100000 {
+ label = "nvram";
+ reg = <0x100000 0x100000>;
+ };
+
+ partition@200000 {
+ compatible = "linksys,ns-firmware", "brcm,trx";
+ reg = <0x200000 0xf00000>;
+ };
+
+ partition@1100000 {
+ compatible = "linksys,ns-firmware", "brcm,trx";
+ reg = <0x1100000 0xf00000>;
+ };
+ };

View File

@ -0,0 +1,156 @@
From 7134a2d026d942210b4d26d6059c9d979ca7866e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 12 Mar 2021 14:49:19 +0100
Subject: [PATCH] mtd: parsers: ofpart: support Linksys Northstar partitions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This allows extending ofpart parser with support for Linksys Northstar
devices. That support uses recently added quirks mechanism.
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/20210312134919.7767-2-zajec5@gmail.com
---
drivers/mtd/parsers/Kconfig | 10 +++++
drivers/mtd/parsers/Makefile | 1 +
drivers/mtd/parsers/ofpart_core.c | 6 +++
drivers/mtd/parsers/ofpart_linksys_ns.c | 50 +++++++++++++++++++++++++
drivers/mtd/parsers/ofpart_linksys_ns.h | 18 +++++++++
5 files changed, 85 insertions(+)
create mode 100644 drivers/mtd/parsers/ofpart_linksys_ns.c
create mode 100644 drivers/mtd/parsers/ofpart_linksys_ns.h
--- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig
@@ -76,6 +76,16 @@ config MTD_OF_PARTS_BCM4908
that can have multiple "firmware" partitions. It takes care of
finding currently used one and backup ones.
+config MTD_OF_PARTS_LINKSYS_NS
+ bool "Linksys Northstar partitioning support"
+ depends on MTD_OF_PARTS && (ARCH_BCM_5301X || ARCH_BCM4908 || COMPILE_TEST)
+ default ARCH_BCM_5301X
+ help
+ This provides partitions parser for Linksys devices based on Broadcom
+ Northstar architecture. Linksys commonly uses fixed flash layout with
+ two "firmware" partitions. Currently used firmware has to be detected
+ using CFE environment variable.
+
config MTD_PARSER_IMAGETAG
tristate "Parser for BCM963XX Image Tag format partitions"
depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
--- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile
@@ -6,6 +6,7 @@ obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdl
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
ofpart-y += ofpart_core.o
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
+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_TRX) += parser_trx.o
--- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c
@@ -17,6 +17,7 @@
#include <linux/mtd/partitions.h>
#include "ofpart_bcm4908.h"
+#include "ofpart_linksys_ns.h"
struct fixed_partitions_quirks {
int (*post_parse)(struct mtd_info *mtd, struct mtd_partition *parts, int nr_parts);
@@ -26,6 +27,10 @@ static struct fixed_partitions_quirks bc
.post_parse = bcm4908_partitions_post_parse,
};
+static struct fixed_partitions_quirks linksys_ns_partitions_quirks = {
+ .post_parse = linksys_ns_partitions_post_parse,
+};
+
static const struct of_device_id parse_ofpart_match_table[];
static bool node_has_compatible(struct device_node *pp)
@@ -167,6 +172,7 @@ static const struct of_device_id parse_o
{ .compatible = "fixed-partitions" },
/* Customized */
{ .compatible = "brcm,bcm4908-partitions", .data = &bcm4908_partitions_quirks, },
+ { .compatible = "linksys,ns-partitions", .data = &linksys_ns_partitions_quirks, },
{},
};
MODULE_DEVICE_TABLE(of, parse_ofpart_match_table);
--- /dev/null
+++ b/drivers/mtd/parsers/ofpart_linksys_ns.c
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Rafał Miłecki <rafal@milecki.pl>
+ */
+
+#include <linux/bcm47xx_nvram.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include "ofpart_linksys_ns.h"
+
+#define NVRAM_BOOT_PART "bootpartition"
+
+static int ofpart_linksys_ns_bootpartition(void)
+{
+ char buf[4];
+ int bootpartition;
+
+ /* Check CFE environment variable */
+ if (bcm47xx_nvram_getenv(NVRAM_BOOT_PART, buf, sizeof(buf)) > 0) {
+ if (!kstrtoint(buf, 0, &bootpartition))
+ return bootpartition;
+ pr_warn("Failed to parse %s value \"%s\"\n", NVRAM_BOOT_PART,
+ buf);
+ } else {
+ pr_warn("Failed to get NVRAM \"%s\"\n", NVRAM_BOOT_PART);
+ }
+
+ return 0;
+}
+
+int linksys_ns_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts)
+{
+ int bootpartition = ofpart_linksys_ns_bootpartition();
+ int trx_idx = 0;
+ int i;
+
+ for (i = 0; i < nr_parts; i++) {
+ if (of_device_is_compatible(parts[i].of_node, "linksys,ns-firmware")) {
+ if (trx_idx++ == bootpartition)
+ parts[i].name = "firmware";
+ else
+ parts[i].name = "backup";
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+++ b/drivers/mtd/parsers/ofpart_linksys_ns.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __OFPART_LINKSYS_NS_H
+#define __OFPART_LINKSYS_NS_H
+
+#ifdef CONFIG_MTD_OF_PARTS_LINKSYS_NS
+int linksys_ns_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts);
+#else
+static inline int linksys_ns_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts)
+{
+ return -EOPNOTSUPP;
+}
+#endif
+
+#endif

View File

@ -0,0 +1,34 @@
From b87b6d2d6f540e29c3f98e1572d64e560d73d6c1 Mon Sep 17 00:00:00 2001
From: Wei Yongjun <weiyongjun1@huawei.com>
Date: Thu, 4 Mar 2021 06:46:00 +0000
Subject: [PATCH] mtd: parsers: ofpart: make symbol 'bcm4908_partitions_quirks'
static
The sparse tool complains as follows:
drivers/mtd/parsers/ofpart_core.c:25:32: warning:
symbol 'bcm4908_partitions_quirks' was not declared. Should it be static?
This symbol is not used outside of ofpart_core.c, so this
commit marks it static.
Fixes: 457da931b608 ("mtd: parsers: ofpart: support BCM4908 fixed partitions")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210304064600.3279138-1-weiyongjun1@huawei.com
---
drivers/mtd/parsers/ofpart_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c
@@ -22,7 +22,7 @@ struct fixed_partitions_quirks {
int (*post_parse)(struct mtd_info *mtd, struct mtd_partition *parts, int nr_parts);
};
-struct fixed_partitions_quirks bcm4908_partitions_quirks = {
+static struct fixed_partitions_quirks bcm4908_partitions_quirks = {
.post_parse = bcm4908_partitions_post_parse,
};

View File

@ -1,4 +1,4 @@
From a5d83d6e2bc747b13f347962d4b335d70b23559b Mon Sep 17 00:00:00 2001 From 658c4448bbbf02a143abf1b89d09a3337ebd3ba6 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com> From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Fri, 12 Mar 2021 07:28:19 +0100 Date: Fri, 12 Mar 2021 07:28:19 +0100
Subject: [PATCH] mtd: core: add nvmem-cells compatible to parse mtd as nvmem Subject: [PATCH] mtd: core: add nvmem-cells compatible to parse mtd as nvmem
@ -13,6 +13,8 @@ nvmem provider.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Tested-by: Rafał Miłecki <rafal@milecki.pl> Tested-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210312062830.20548-1-ansuelsmth@gmail.com
--- ---
drivers/mtd/mtdcore.c | 3 ++- drivers/mtd/mtdcore.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-) 1 file changed, 2 insertions(+), 1 deletion(-)

View File

@ -1,12 +1,15 @@
From 42645976c3289b03a12f1bd2bc131fd98fc27170 Mon Sep 17 00:00:00 2001 From 52981a0fa9f7d68641e0e6bb584054c6d9eb2056 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com> From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Fri, 12 Mar 2021 07:28:20 +0100 Date: Fri, 12 Mar 2021 07:28:20 +0100
Subject: [PATCH] devicetree: nvmem: nvmem: drop $nodename restriction Subject: [PATCH] dt-bindings: nvmem: drop $nodename restriction
Drop $nodename restriction as now mtd partition can also be used as Drop $nodename restriction as now mtd partition can also be used as
nvmem provider. nvmem provider.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210312062830.20548-2-ansuelsmth@gmail.com
--- ---
Documentation/devicetree/bindings/nvmem/nvmem.yaml | 3 --- Documentation/devicetree/bindings/nvmem/nvmem.yaml | 3 ---
1 file changed, 3 deletions(-) 1 file changed, 3 deletions(-)

View File

@ -1,4 +1,4 @@
From 377aa0135dc8489312edd3184d143ce3a89ff7ee Mon Sep 17 00:00:00 2001 From ac42c46f983e4a9003a7bb91ad44a23ab7b8f534 Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com> From: Ansuel Smith <ansuelsmth@gmail.com>
Date: Fri, 12 Mar 2021 07:28:21 +0100 Date: Fri, 12 Mar 2021 07:28:21 +0100
Subject: [PATCH] dt-bindings: mtd: Document use of nvmem-cells compatible Subject: [PATCH] dt-bindings: mtd: Document use of nvmem-cells compatible
@ -8,6 +8,8 @@ nvmem provider.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Reviewed-by: Rob Herring <robh@kernel.org> Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210312062830.20548-3-ansuelsmth@gmail.com
--- ---
.../bindings/mtd/partitions/nvmem-cells.yaml | 99 +++++++++++++++++++ .../bindings/mtd/partitions/nvmem-cells.yaml | 99 +++++++++++++++++++
1 file changed, 99 insertions(+) 1 file changed, 99 insertions(+)

View File

@ -0,0 +1,98 @@
From 2fa7294175c76e1ec568aa75c1891fd908728c8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 12 Mar 2021 14:49:18 +0100
Subject: [PATCH] dt-bindings: mtd: add binding for Linksys Northstar
partitions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Linksys on Broadcom Northstar devices uses fixed flash layout with
multiple firmware partitions.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210312134919.7767-1-zajec5@gmail.com
---
.../mtd/partitions/linksys,ns-partitions.yaml | 74 +++++++++++++++++++
1 file changed, 74 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/partitions/linksys,ns-partitions.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Linksys Northstar partitioning
+
+description: |
+ Linksys devices based on Broadcom Northstar architecture often use two
+ firmware partitions. One is used for regular booting, the other is treated as
+ fallback.
+
+ This binding allows defining all fixed partitions and marking those containing
+ firmware. System can use that information e.g. for booting or flashing
+ purposes.
+
+maintainers:
+ - Rafał Miłecki <rafal@milecki.pl>
+
+properties:
+ compatible:
+ const: linksys,ns-partitions
+
+ "#address-cells":
+ enum: [ 1, 2 ]
+
+ "#size-cells":
+ enum: [ 1, 2 ]
+
+patternProperties:
+ "^partition@[0-9a-f]+$":
+ $ref: "partition.yaml#"
+ properties:
+ compatible:
+ items:
+ - const: linksys,ns-firmware
+ - const: brcm,trx
+ unevaluatedProperties: false
+
+required:
+ - "#address-cells"
+ - "#size-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ partitions {
+ compatible = "linksys,ns-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "boot";
+ reg = <0x0 0x100000>;
+ read-only;
+ };
+
+ partition@100000 {
+ label = "nvram";
+ reg = <0x100000 0x100000>;
+ };
+
+ partition@200000 {
+ compatible = "linksys,ns-firmware", "brcm,trx";
+ reg = <0x200000 0xf00000>;
+ };
+
+ partition@1100000 {
+ compatible = "linksys,ns-firmware", "brcm,trx";
+ reg = <0x1100000 0xf00000>;
+ };
+ };

View File

@ -0,0 +1,156 @@
From 7134a2d026d942210b4d26d6059c9d979ca7866e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 12 Mar 2021 14:49:19 +0100
Subject: [PATCH] mtd: parsers: ofpart: support Linksys Northstar partitions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This allows extending ofpart parser with support for Linksys Northstar
devices. That support uses recently added quirks mechanism.
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/20210312134919.7767-2-zajec5@gmail.com
---
drivers/mtd/parsers/Kconfig | 10 +++++
drivers/mtd/parsers/Makefile | 1 +
drivers/mtd/parsers/ofpart_core.c | 6 +++
drivers/mtd/parsers/ofpart_linksys_ns.c | 50 +++++++++++++++++++++++++
drivers/mtd/parsers/ofpart_linksys_ns.h | 18 +++++++++
5 files changed, 85 insertions(+)
create mode 100644 drivers/mtd/parsers/ofpart_linksys_ns.c
create mode 100644 drivers/mtd/parsers/ofpart_linksys_ns.h
--- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig
@@ -76,6 +76,16 @@ config MTD_OF_PARTS_BCM4908
that can have multiple "firmware" partitions. It takes care of
finding currently used one and backup ones.
+config MTD_OF_PARTS_LINKSYS_NS
+ bool "Linksys Northstar partitioning support"
+ depends on MTD_OF_PARTS && (ARCH_BCM_5301X || ARCH_BCM4908 || COMPILE_TEST)
+ default ARCH_BCM_5301X
+ help
+ This provides partitions parser for Linksys devices based on Broadcom
+ Northstar architecture. Linksys commonly uses fixed flash layout with
+ two "firmware" partitions. Currently used firmware has to be detected
+ using CFE environment variable.
+
config MTD_PARSER_IMAGETAG
tristate "Parser for BCM963XX Image Tag format partitions"
depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
--- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile
@@ -6,6 +6,7 @@ obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdl
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
ofpart-y += ofpart_core.o
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
+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_TRX) += parser_trx.o
--- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c
@@ -17,6 +17,7 @@
#include <linux/mtd/partitions.h>
#include "ofpart_bcm4908.h"
+#include "ofpart_linksys_ns.h"
struct fixed_partitions_quirks {
int (*post_parse)(struct mtd_info *mtd, struct mtd_partition *parts, int nr_parts);
@@ -26,6 +27,10 @@ static struct fixed_partitions_quirks bc
.post_parse = bcm4908_partitions_post_parse,
};
+static struct fixed_partitions_quirks linksys_ns_partitions_quirks = {
+ .post_parse = linksys_ns_partitions_post_parse,
+};
+
static const struct of_device_id parse_ofpart_match_table[];
static bool node_has_compatible(struct device_node *pp)
@@ -164,6 +169,7 @@ static const struct of_device_id parse_o
{ .compatible = "fixed-partitions" },
/* Customized */
{ .compatible = "brcm,bcm4908-partitions", .data = &bcm4908_partitions_quirks, },
+ { .compatible = "linksys,ns-partitions", .data = &linksys_ns_partitions_quirks, },
{},
};
MODULE_DEVICE_TABLE(of, parse_ofpart_match_table);
--- /dev/null
+++ b/drivers/mtd/parsers/ofpart_linksys_ns.c
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Rafał Miłecki <rafal@milecki.pl>
+ */
+
+#include <linux/bcm47xx_nvram.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include "ofpart_linksys_ns.h"
+
+#define NVRAM_BOOT_PART "bootpartition"
+
+static int ofpart_linksys_ns_bootpartition(void)
+{
+ char buf[4];
+ int bootpartition;
+
+ /* Check CFE environment variable */
+ if (bcm47xx_nvram_getenv(NVRAM_BOOT_PART, buf, sizeof(buf)) > 0) {
+ if (!kstrtoint(buf, 0, &bootpartition))
+ return bootpartition;
+ pr_warn("Failed to parse %s value \"%s\"\n", NVRAM_BOOT_PART,
+ buf);
+ } else {
+ pr_warn("Failed to get NVRAM \"%s\"\n", NVRAM_BOOT_PART);
+ }
+
+ return 0;
+}
+
+int linksys_ns_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts)
+{
+ int bootpartition = ofpart_linksys_ns_bootpartition();
+ int trx_idx = 0;
+ int i;
+
+ for (i = 0; i < nr_parts; i++) {
+ if (of_device_is_compatible(parts[i].of_node, "linksys,ns-firmware")) {
+ if (trx_idx++ == bootpartition)
+ parts[i].name = "firmware";
+ else
+ parts[i].name = "backup";
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+++ b/drivers/mtd/parsers/ofpart_linksys_ns.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __OFPART_LINKSYS_NS_H
+#define __OFPART_LINKSYS_NS_H
+
+#ifdef CONFIG_MTD_OF_PARTS_LINKSYS_NS
+int linksys_ns_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts);
+#else
+static inline int linksys_ns_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts)
+{
+ return -EOPNOTSUPP;
+}
+#endif
+
+#endif

View File

@ -16,7 +16,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -185,3 +185,12 @@ config MTD_REDBOOT_PARTS_READONLY @@ -195,3 +195,12 @@ config MTD_REDBOOT_PARTS_READONLY
'FIS directory' images, enable this option. 'FIS directory' images, enable this option.
endif # MTD_REDBOOT_PARTS endif # MTD_REDBOOT_PARTS
@ -31,7 +31,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
+ formatted DTS. + formatted DTS.
--- a/drivers/mtd/parsers/Makefile --- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile +++ b/drivers/mtd/parsers/Makefile
@@ -12,3 +12,4 @@ obj-$(CONFIG_MTD_AFS_PARTS) += afs.o @@ -13,3 +13,4 @@ obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o
obj-$(CONFIG_MTD_SHARPSL_PARTS) += sharpslpart.o obj-$(CONFIG_MTD_SHARPSL_PARTS) += sharpslpart.o
obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o

View File

@ -16,7 +16,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -185,3 +185,12 @@ config MTD_REDBOOT_PARTS_READONLY @@ -195,3 +195,12 @@ config MTD_REDBOOT_PARTS_READONLY
'FIS directory' images, enable this option. 'FIS directory' images, enable this option.
endif # MTD_REDBOOT_PARTS endif # MTD_REDBOOT_PARTS
@ -31,7 +31,7 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
+ formatted DTS. + formatted DTS.
--- a/drivers/mtd/parsers/Makefile --- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile +++ b/drivers/mtd/parsers/Makefile
@@ -12,3 +12,4 @@ obj-$(CONFIG_MTD_AFS_PARTS) += afs.o @@ -13,3 +13,4 @@ obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o
obj-$(CONFIG_MTD_SHARPSL_PARTS) += sharpslpart.o obj-$(CONFIG_MTD_SHARPSL_PARTS) += sharpslpart.o
obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o

View File

@ -18,7 +18,7 @@ Signed-off-by: Ram Chandra Jangir <rjangi@codeaurora.org>
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -128,6 +128,13 @@ config MTD_PARSER_TRX @@ -138,6 +138,13 @@ config MTD_PARSER_TRX
This driver will parse TRX header and report at least two partitions: This driver will parse TRX header and report at least two partitions:
kernel and rootfs. kernel and rootfs.
@ -34,7 +34,7 @@ Signed-off-by: Ram Chandra Jangir <rjangi@codeaurora.org>
depends on MTD_NAND_SHARPSL || MTD_NAND_TMIO || COMPILE_TEST depends on MTD_NAND_SHARPSL || MTD_NAND_TMIO || COMPILE_TEST
--- a/drivers/mtd/parsers/Makefile --- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile +++ b/drivers/mtd/parsers/Makefile
@@ -10,6 +10,7 @@ ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += @@ -11,6 +11,7 @@ ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)
obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o obj-$(CONFIG_MTD_PARSER_TRX) += parser_trx.o

View File

@ -5,7 +5,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
--- ---
--- a/drivers/mtd/parsers/ofpart_core.c --- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c +++ b/drivers/mtd/parsers/ofpart_core.c
@@ -33,6 +33,8 @@ static bool node_has_compatible(struct d @@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
return of_get_property(pp, "compatible", NULL); return of_get_property(pp, "compatible", NULL);
} }
@ -14,7 +14,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
static int parse_fixed_partitions(struct mtd_info *master, static int parse_fixed_partitions(struct mtd_info *master,
const struct mtd_partition **pparts, const struct mtd_partition **pparts,
struct mtd_part_parser_data *data) struct mtd_part_parser_data *data)
@@ -42,6 +44,7 @@ static int parse_fixed_partitions(struct @@ -47,6 +49,7 @@ static int parse_fixed_partitions(struct
struct mtd_partition *parts; struct mtd_partition *parts;
struct device_node *mtd_node; struct device_node *mtd_node;
struct device_node *ofpart_node; struct device_node *ofpart_node;
@ -22,7 +22,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
const char *partname; const char *partname;
struct device_node *pp; struct device_node *pp;
int nr_parts, i, ret = 0; int nr_parts, i, ret = 0;
@@ -126,9 +129,15 @@ static int parse_fixed_partitions(struct @@ -131,9 +134,15 @@ static int parse_fixed_partitions(struct
parts[i].size = of_read_number(reg + a_cells, s_cells); parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].of_node = pp; parts[i].of_node = pp;
@ -41,7 +41,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
parts[i].name = partname; parts[i].name = partname;
if (of_get_property(pp, "read-only", &len)) if (of_get_property(pp, "read-only", &len))
@@ -244,6 +253,18 @@ static int __init ofpart_parser_init(voi @@ -250,6 +259,18 @@ static int __init ofpart_parser_init(voi
return 0; return 0;
} }

View File

@ -5,7 +5,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
--- ---
--- a/drivers/mtd/parsers/ofpart_core.c --- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c +++ b/drivers/mtd/parsers/ofpart_core.c
@@ -33,6 +33,8 @@ static bool node_has_compatible(struct d @@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
return of_get_property(pp, "compatible", NULL); return of_get_property(pp, "compatible", NULL);
} }
@ -14,7 +14,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
static int parse_fixed_partitions(struct mtd_info *master, static int parse_fixed_partitions(struct mtd_info *master,
const struct mtd_partition **pparts, const struct mtd_partition **pparts,
struct mtd_part_parser_data *data) struct mtd_part_parser_data *data)
@@ -42,6 +44,7 @@ static int parse_fixed_partitions(struct @@ -47,6 +49,7 @@ static int parse_fixed_partitions(struct
struct mtd_partition *parts; struct mtd_partition *parts;
struct device_node *mtd_node; struct device_node *mtd_node;
struct device_node *ofpart_node; struct device_node *ofpart_node;
@ -22,7 +22,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
const char *partname; const char *partname;
struct device_node *pp; struct device_node *pp;
int nr_parts, i, ret = 0; int nr_parts, i, ret = 0;
@@ -126,9 +129,15 @@ static int parse_fixed_partitions(struct @@ -131,9 +134,15 @@ static int parse_fixed_partitions(struct
parts[i].size = of_read_number(reg + a_cells, s_cells); parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].of_node = pp; parts[i].of_node = pp;
@ -41,7 +41,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
parts[i].name = partname; parts[i].name = partname;
if (of_get_property(pp, "read-only", &len)) if (of_get_property(pp, "read-only", &len))
@@ -241,6 +250,18 @@ static int __init ofpart_parser_init(voi @@ -247,6 +256,18 @@ static int __init ofpart_parser_init(voi
return 0; return 0;
} }

View File

@ -1,6 +1,6 @@
--- a/drivers/mtd/parsers/ofpart_core.c --- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c +++ b/drivers/mtd/parsers/ofpart_core.c
@@ -33,6 +33,38 @@ static bool node_has_compatible(struct d @@ -38,6 +38,38 @@ static bool node_has_compatible(struct d
return of_get_property(pp, "compatible", NULL); return of_get_property(pp, "compatible", NULL);
} }
@ -39,7 +39,7 @@
static int parse_fixed_partitions(struct mtd_info *master, static int parse_fixed_partitions(struct mtd_info *master,
const struct mtd_partition **pparts, const struct mtd_partition **pparts,
struct mtd_part_parser_data *data) struct mtd_part_parser_data *data)
@@ -46,6 +78,8 @@ static int parse_fixed_partitions(struct @@ -51,6 +83,8 @@ static int parse_fixed_partitions(struct
struct device_node *pp; struct device_node *pp;
int nr_parts, i, ret = 0; int nr_parts, i, ret = 0;
bool dedicated = true; bool dedicated = true;
@ -48,7 +48,7 @@
/* Pull of_node from the master device node */ /* Pull of_node from the master device node */
mtd_node = mtd_get_of_node(master); mtd_node = mtd_get_of_node(master);
@@ -88,7 +122,9 @@ static int parse_fixed_partitions(struct @@ -93,7 +127,9 @@ static int parse_fixed_partitions(struct
return 0; return 0;
parts = kcalloc(nr_parts, sizeof(*parts), GFP_KERNEL); parts = kcalloc(nr_parts, sizeof(*parts), GFP_KERNEL);
@ -59,7 +59,7 @@
return -ENOMEM; return -ENOMEM;
i = 0; i = 0;
@@ -137,6 +173,11 @@ static int parse_fixed_partitions(struct @@ -142,6 +178,11 @@ static int parse_fixed_partitions(struct
if (of_get_property(pp, "lock", &len)) if (of_get_property(pp, "lock", &len))
parts[i].mask_flags |= MTD_POWERUP_LOCK; parts[i].mask_flags |= MTD_POWERUP_LOCK;
@ -71,7 +71,7 @@
i++; i++;
} }
@@ -146,6 +187,11 @@ static int parse_fixed_partitions(struct @@ -151,6 +192,11 @@ static int parse_fixed_partitions(struct
if (quirks && quirks->post_parse) if (quirks && quirks->post_parse)
quirks->post_parse(master, parts, nr_parts); quirks->post_parse(master, parts, nr_parts);
@ -83,7 +83,7 @@
*pparts = parts; *pparts = parts;
return nr_parts; return nr_parts;
@@ -156,6 +202,7 @@ ofpart_fail: @@ -161,6 +207,7 @@ ofpart_fail:
ofpart_none: ofpart_none:
of_node_put(pp); of_node_put(pp);
kfree(parts); kfree(parts);

View File

@ -12,7 +12,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -121,7 +121,7 @@ config MTD_AFS_PARTS @@ -131,7 +131,7 @@ config MTD_AFS_PARTS
config MTD_PARSER_TRX config MTD_PARSER_TRX
tristate "Parser for TRX format partitions" tristate "Parser for TRX format partitions"

View File

@ -12,7 +12,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
--- a/drivers/mtd/parsers/Kconfig --- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig
@@ -121,7 +121,7 @@ config MTD_AFS_PARTS @@ -131,7 +131,7 @@ config MTD_AFS_PARTS
config MTD_PARSER_TRX config MTD_PARSER_TRX
tristate "Parser for TRX format partitions" tristate "Parser for TRX format partitions"

View File

@ -5,7 +5,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
--- a/drivers/mtd/parsers/ofpart_core.c --- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c +++ b/drivers/mtd/parsers/ofpart_core.c
@@ -33,6 +33,8 @@ static bool node_has_compatible(struct d @@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
return of_get_property(pp, "compatible", NULL); return of_get_property(pp, "compatible", NULL);
} }
@ -14,7 +14,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
static int parse_fixed_partitions(struct mtd_info *master, static int parse_fixed_partitions(struct mtd_info *master,
const struct mtd_partition **pparts, const struct mtd_partition **pparts,
struct mtd_part_parser_data *data) struct mtd_part_parser_data *data)
@@ -43,6 +45,7 @@ static int parse_fixed_partitions(struct @@ -48,6 +50,7 @@ static int parse_fixed_partitions(struct
struct device_node *mtd_node; struct device_node *mtd_node;
struct device_node *ofpart_node; struct device_node *ofpart_node;
const char *partname; const char *partname;
@ -22,7 +22,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
struct device_node *pp; struct device_node *pp;
int nr_parts, i, ret = 0; int nr_parts, i, ret = 0;
bool dedicated = true; bool dedicated = true;
@@ -126,9 +129,13 @@ static int parse_fixed_partitions(struct @@ -131,9 +134,13 @@ static int parse_fixed_partitions(struct
parts[i].size = of_read_number(reg + a_cells, s_cells); parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].of_node = pp; parts[i].of_node = pp;
@ -39,7 +39,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
parts[i].name = partname; parts[i].name = partname;
if (of_get_property(pp, "read-only", &len)) if (of_get_property(pp, "read-only", &len))
@@ -244,6 +251,18 @@ static int __init ofpart_parser_init(voi @@ -250,6 +257,18 @@ static int __init ofpart_parser_init(voi
return 0; return 0;
} }

View File

@ -5,7 +5,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
--- a/drivers/mtd/parsers/ofpart_core.c --- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c +++ b/drivers/mtd/parsers/ofpart_core.c
@@ -33,6 +33,8 @@ static bool node_has_compatible(struct d @@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
return of_get_property(pp, "compatible", NULL); return of_get_property(pp, "compatible", NULL);
} }
@ -14,7 +14,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
static int parse_fixed_partitions(struct mtd_info *master, static int parse_fixed_partitions(struct mtd_info *master,
const struct mtd_partition **pparts, const struct mtd_partition **pparts,
struct mtd_part_parser_data *data) struct mtd_part_parser_data *data)
@@ -43,6 +45,7 @@ static int parse_fixed_partitions(struct @@ -48,6 +50,7 @@ static int parse_fixed_partitions(struct
struct device_node *mtd_node; struct device_node *mtd_node;
struct device_node *ofpart_node; struct device_node *ofpart_node;
const char *partname; const char *partname;
@ -22,7 +22,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
struct device_node *pp; struct device_node *pp;
int nr_parts, i, ret = 0; int nr_parts, i, ret = 0;
bool dedicated = true; bool dedicated = true;
@@ -126,9 +129,13 @@ static int parse_fixed_partitions(struct @@ -131,9 +134,13 @@ static int parse_fixed_partitions(struct
parts[i].size = of_read_number(reg + a_cells, s_cells); parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].of_node = pp; parts[i].of_node = pp;
@ -39,7 +39,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
parts[i].name = partname; parts[i].name = partname;
if (of_get_property(pp, "read-only", &len)) if (of_get_property(pp, "read-only", &len))
@@ -241,6 +248,18 @@ static int __init ofpart_parser_init(voi @@ -247,6 +254,18 @@ static int __init ofpart_parser_init(voi
return 0; return 0;
} }