Backport upstream solution that permits to declare nvmem cells with
dynamic partition defined by special parser.
This provide an OF node for NVMEM and connect it to the defined dynamic
partition.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit 1a9ee36734)
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From f32bc2aa01edcba2f2ed5db151cf183eac9ef919 Mon Sep 17 00:00:00 2001
 | 
						|
From: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
 | 
						|
Date: Sat, 25 Feb 2017 16:42:50 +0000
 | 
						|
Subject: mtd: nor: support mtd name from device tree
 | 
						|
 | 
						|
Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
 | 
						|
---
 | 
						|
 drivers/mtd/spi-nor/spi-nor.c | 8 +++++++-
 | 
						|
 1 file changed, 7 insertions(+), 1 deletion(-)
 | 
						|
 | 
						|
--- a/drivers/mtd/spi-nor/core.c
 | 
						|
+++ b/drivers/mtd/spi-nor/core.c
 | 
						|
@@ -3157,6 +3157,7 @@ int spi_nor_scan(struct spi_nor *nor, co
 | 
						|
 	struct device *dev = nor->dev;
 | 
						|
 	struct mtd_info *mtd = &nor->mtd;
 | 
						|
 	struct device_node *np = spi_nor_get_flash_node(nor);
 | 
						|
+	const char __maybe_unused *of_mtd_name = NULL;
 | 
						|
 	int ret;
 | 
						|
 	int i;
 | 
						|
 
 | 
						|
@@ -3211,7 +3212,12 @@ int spi_nor_scan(struct spi_nor *nor, co
 | 
						|
 	if (ret)
 | 
						|
 		return ret;
 | 
						|
 
 | 
						|
-	if (!mtd->name)
 | 
						|
+#ifdef CONFIG_MTD_OF_PARTS
 | 
						|
+	of_property_read_string(np, "linux,mtd-name", &of_mtd_name);
 | 
						|
+#endif
 | 
						|
+	if (of_mtd_name)
 | 
						|
+		mtd->name = of_mtd_name;
 | 
						|
+	else if (!mtd->name)
 | 
						|
 		mtd->name = dev_name(dev);
 | 
						|
 	mtd->priv = nor;
 | 
						|
 	mtd->type = MTD_NORFLASH;
 | 
						|
--- a/drivers/mtd/mtdcore.c
 | 
						|
+++ b/drivers/mtd/mtdcore.c
 | 
						|
@@ -849,6 +849,17 @@ out_error:
 | 
						|
  */
 | 
						|
 static void mtd_set_dev_defaults(struct mtd_info *mtd)
 | 
						|
 {
 | 
						|
+#ifdef CONFIG_MTD_OF_PARTS
 | 
						|
+	const char __maybe_unused *of_mtd_name = NULL;
 | 
						|
+	struct device_node *np;
 | 
						|
+
 | 
						|
+	np = mtd_get_of_node(mtd);
 | 
						|
+	if (np && !mtd->name) {
 | 
						|
+		of_property_read_string(np, "linux,mtd-name", &of_mtd_name);
 | 
						|
+		if (of_mtd_name)
 | 
						|
+			mtd->name = of_mtd_name;
 | 
						|
+	} else
 | 
						|
+#endif
 | 
						|
 	if (mtd->dev.parent) {
 | 
						|
 		if (!mtd->owner && mtd->dev.parent->driver)
 | 
						|
 			mtd->owner = mtd->dev.parent->driver->owner;
 |