openwrtv3/target/linux/brcm63xx/patches-4.14/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
Koen Vandeputte e2aa0c3f8b kernel: bump 4.14 to 4.14.41
Refreshed all patches

Dropped upstreamed patches:
522-PCI-aardvark-fix-logic-in-PCI-configuration-read-write-functions.patch
523-PCI-aardvark-set-PIO_ADDR_LS-correctly-in-advk_pcie_rd_conf.patch
525-PCI-aardvark-use-isr1-instead-of-isr0-interrupt-in-legacy-irq-mode.patch
527-PCI-aardvark-fix-PCIe-max-read-request-size-setting.patch

updated patches:
524-PCI-aardvark-set-host-and-device-to-the-same-MAX-payload-size.patch
030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch

Added new ARM64 symbol: CONFIG_ARM64_ERRATUM_1024718

Compile-tested on: cns3xxx, imx6, mvebu (arm64), x86_64
Runtime-tested on: cns3xxx, imx6, x86_64

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2018-05-18 09:10:46 +02:00

79 lines
1.9 KiB
Diff

From 53980645bb12bd8723ac226805ee171780b24196 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jonas.gorski@gmail.com>
Date: Mon, 26 Jun 2017 13:37:11 +0200
Subject: [PATCH 1/4] mtd: add of_match_table parsing for partition parsers
Allow partition parsers to be matched by attaching compatible strings to
partitions.
This allows specifying the expected format of flash partitions for
matching partition parsers.
Example:
flash@foo {
...
partitions {
compatible = "fixed-partitions";
cfe@0 {
reg = <0x0 0x10000>;
label = "cfe";
read-only;
};
firmware@10000 {
reg = <0x10000 0x3e0000>;
label = "firmware";
compatible = "brcm,bcm63xx-imagetag";
};
nvram@3f0000 {
reg = <0x3e0000 0x10000>;
label = "nvram";
};
};
};
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
---
drivers/mtd/mtdpart.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -948,8 +948,7 @@ int add_mtd_partitions(struct mtd_info *
add_mtd_device(&slave->mtd);
mtd_partition_split(master, slave);
mtd_add_partition_attrs(slave);
- if (parts[i].types)
- mtd_parse_part(slave, parts[i].types);
+ mtd_parse_part(slave, parts[i].types);
cur_offset = slave->offset + slave->mtd.size;
}
@@ -1121,7 +1120,9 @@ static int mtd_part_of_parse(struct mtd_
const char *fixed = "fixed-partitions";
int ret, err = 0;
- np = of_get_child_by_name(mtd_get_of_node(master), "partitions");
+ np = mtd_get_of_node(master);
+ if (!mtd_is_partition(master))
+ np = of_get_child_by_name(np, "partitions");
of_property_for_each_string(np, "compatible", prop, compat) {
parser = mtd_part_get_compatible_parser(compat);
if (!parser)
@@ -1190,8 +1191,12 @@ int parse_mtd_partitions(struct mtd_info
types = types_of;
}
- if (!types)
+ if (!types) {
+ if (mtd_is_partition(master))
+ return -ENOENT;
+
types = default_mtd_part_types;
+ }
for ( ; *types; types++) {
/*