OpenWrt – Rev 1

Subversion Repositories:
Rev:
--- 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
@@ -934,8 +934,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;