From 7a6d0748247e23fe976bc400e9802db903d20b47 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 3 Feb 2021 20:37:03 +0100 Subject: [PATCH] kernel: add support for enabling fit firmware partition parser via cmdline This is useful for dual-boot setups where the loader sets variables depending on the flash boot partition. For example the Linksys E8450 sets mtdparts=master for the first partition and mtdparts=slave for the second one. Signed-off-by: Felix Fietkau --- .../linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c index 67ee33d085c..5cc1658dbde 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c @@ -49,6 +49,8 @@ mtdsplit_fit_parse(struct mtd_info *mtd, const struct mtd_partition **pparts, struct mtd_part_parser_data *data) { + struct device_node *np = mtd_get_of_node(mtd); + const char *cmdline_match = NULL; struct fdt_header hdr; size_t hdr_len, retlen; size_t offset; @@ -57,6 +59,10 @@ mtdsplit_fit_parse(struct mtd_info *mtd, struct mtd_partition *parts; int ret; + of_property_read_string(np, "openwrt,cmdline-match", &cmdline_match); + if (cmdline_match && !strstr(saved_command_line, cmdline_match)) + return -ENODEV; + hdr_len = sizeof(struct fdt_header); /* Parse the MTD device & search for the FIT image location */ -- 2.30.2