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 <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2021-02-03 20:37:03 +01:00 committed by Daniel Golle
parent e230345bbc
commit 7a6d074824

View File

@ -49,6 +49,8 @@ mtdsplit_fit_parse(struct mtd_info *mtd,
const struct mtd_partition **pparts, const struct mtd_partition **pparts,
struct mtd_part_parser_data *data) struct mtd_part_parser_data *data)
{ {
struct device_node *np = mtd_get_of_node(mtd);
const char *cmdline_match = NULL;
struct fdt_header hdr; struct fdt_header hdr;
size_t hdr_len, retlen; size_t hdr_len, retlen;
size_t offset; size_t offset;
@ -57,6 +59,10 @@ mtdsplit_fit_parse(struct mtd_info *mtd,
struct mtd_partition *parts; struct mtd_partition *parts;
int ret; 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); hdr_len = sizeof(struct fdt_header);
/* Parse the MTD device & search for the FIT image location */ /* Parse the MTD device & search for the FIT image location */