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

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
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <linux/leds.h>
#include <linux/debugfs.h>
#include <linux/nvmem-provider.h>
#include <linux/root_dev.h>

#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
@@ -737,6 +738,17 @@ int add_mtd_device(struct mtd_info *mtd)
		not->add(mtd);

	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
	   our caller is still holding us here. So none
	   of this try_ nonsense, and no bitching about it