diff --git a/target/linux/generic/patches-3.18/044-backport-m25p80-jedec-probe.patch b/target/linux/generic/patches-3.18/044-backport-m25p80-jedec-probe.patch new file mode 100644 index 0000000000..41b912d5d4 --- /dev/null +++ b/target/linux/generic/patches-3.18/044-backport-m25p80-jedec-probe.patch @@ -0,0 +1,39 @@ +--- 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;