40 lines
		
	
	
		
			1004 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1004 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/drivers/mtd/devices/m25p80.c
 | 
						|
+++ b/drivers/mtd/devices/m25p80.c
 | 
						|
@@ -310,11 +310,21 @@ static const struct spi_device_id m25p_i
 | 
						|
 };
 | 
						|
 MODULE_DEVICE_TABLE(spi, m25p_ids);
 | 
						|
 
 | 
						|
+static const struct of_device_id m25p_of_table[] = {
 | 
						|
+	/*
 | 
						|
+	 * Generic compatibility for SPI NOR that can be identified by the
 | 
						|
+	 * JEDEC READ ID opcode (0x9F). Use this, if possible.
 | 
						|
+	 */
 | 
						|
+	{ .compatible = "jedec,spi-nor" },
 | 
						|
+	{}
 | 
						|
+};
 | 
						|
+MODULE_DEVICE_TABLE(of, m25p_of_table);
 | 
						|
 
 | 
						|
 static struct spi_driver m25p80_driver = {
 | 
						|
 	.driver = {
 | 
						|
 		.name	= "m25p80",
 | 
						|
 		.owner	= THIS_MODULE,
 | 
						|
+		.of_match_table = m25p_of_table,
 | 
						|
 	},
 | 
						|
 	.id_table	= m25p_ids,
 | 
						|
 	.probe	= m25p_probe,
 | 
						|
--- a/drivers/mtd/spi-nor/spi-nor.c
 | 
						|
+++ b/drivers/mtd/spi-nor/spi-nor.c
 | 
						|
@@ -927,8 +927,11 @@ int spi_nor_scan(struct spi_nor *nor, co
 | 
						|
 	if (ret)
 | 
						|
 		return ret;
 | 
						|
 
 | 
						|
-	id = spi_nor_match_id(name);
 | 
						|
+	if (name)
 | 
						|
+		id = spi_nor_match_id(name);
 | 
						|
 	if (!id)
 | 
						|
+		id = nor->read_id(nor);
 | 
						|
+	if (IS_ERR_OR_NULL(id))
 | 
						|
 		return -ENOENT;
 | 
						|
 
 | 
						|
 	info = (void *)id->driver_data;
 |