Commit 26422ac7 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Miquel Raynal

mtd: core: set ROOT_DEV for partitions marked as rootfs in DT

This adds support for "linux,rootfs" binding that is used to mark flash
partition containing rootfs. It's useful for devices using device tree
that don't have bootloader passing root info in cmdline.
Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20221022211318.32009-2-zajec5@gmail.com
parent 2b9a31d7
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/nvmem-provider.h> #include <linux/nvmem-provider.h>
#include <linux/root_dev.h>
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
...@@ -737,6 +738,17 @@ int add_mtd_device(struct mtd_info *mtd) ...@@ -737,6 +738,17 @@ int add_mtd_device(struct mtd_info *mtd)
not->add(mtd); not->add(mtd);
mutex_unlock(&mtd_table_mutex); mutex_unlock(&mtd_table_mutex);
if (of_find_property(mtd_get_of_node(mtd), "linux,rootfs", NULL)) {
if (IS_BUILTIN(CONFIG_MTD)) {
pr_info("mtd: setting mtd%d (%s) as root device\n", mtd->index, mtd->name);
ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
} else {
pr_warn("mtd: can't set mtd%d (%s) as root device - mtd must be builtin\n",
mtd->index, mtd->name);
}
}
/* We _know_ we aren't being removed, because /* We _know_ we aren't being removed, because
our caller is still holding us here. So none our caller is still holding us here. So none
of this try_ nonsense, and no bitching about it of this try_ nonsense, and no bitching about it
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment