openwrt/target/linux/generic/pending-3.18/044-backport-m25p80-jedec-p...

40 lines
1004 B
Diff
Raw Normal View History

--- 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;