|
@@ -223,6 +223,8 @@ static int m25p_probe(struct spi_device *spi)
|
|
|
*/
|
|
|
if (data && data->type)
|
|
|
flash_name = data->type;
|
|
|
+ else if (!strcmp(spi->modalias, "nor-jedec"))
|
|
|
+ flash_name = NULL; /* auto-detect */
|
|
|
else
|
|
|
flash_name = spi->modalias;
|
|
|
|
|
@@ -247,9 +249,16 @@ static int m25p_remove(struct spi_device *spi)
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * XXX This needs to be kept in sync with spi_nor_ids. We can't share
|
|
|
- * it with spi-nor, because if this is built as a module then modpost
|
|
|
- * won't be able to read it and add appropriate aliases.
|
|
|
+ * Do NOT add to this array without reading the following:
|
|
|
+ *
|
|
|
+ * Historically, many flash devices are bound to this driver by their name. But
|
|
|
+ * since most of these flash are compatible to some extent, and their
|
|
|
+ * differences can often be differentiated by the JEDEC read-ID command, we
|
|
|
+ * encourage new users to add support to the spi-nor library, and simply bind
|
|
|
+ * against a generic string here (e.g., "nor-jedec").
|
|
|
+ *
|
|
|
+ * Many flash names are kept here in this list (as well as in spi-nor.c) to
|
|
|
+ * keep them available as module aliases for existing platforms.
|
|
|
*/
|
|
|
static const struct spi_device_id m25p_ids[] = {
|
|
|
{"at25fs010"}, {"at25fs040"}, {"at25df041a"}, {"at25df321a"},
|
|
@@ -291,6 +300,12 @@ static const struct spi_device_id m25p_ids[] = {
|
|
|
{"w25x64"}, {"w25q64"}, {"w25q80"}, {"w25q80bl"},
|
|
|
{"w25q128"}, {"w25q256"}, {"cat25c11"},
|
|
|
{"cat25c03"}, {"cat25c09"}, {"cat25c17"}, {"cat25128"},
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Generic support for SPI NOR that can be identified by the JEDEC READ
|
|
|
+ * ID opcode (0x9F). Use this, if possible.
|
|
|
+ */
|
|
|
+ {"nor-jedec"},
|
|
|
{ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(spi, m25p_ids);
|