[PATCH v3 2/5] mtd: spi-nor: core: Hook manufacture by checking first byte ID

Jaime Liao jaimeliao.tw at gmail.com
Fri Aug 4 02:54:06 PDT 2023


From: JaimeLiao <jaimeliao at mxic.com.tw>

Patch ID for flash support is a thing that we keep striving to do.
Follow the optimization of software architecture, parse SFDP is
the mainstream in SPI-NOR subsystem.
Label "spi-nor-generic" to the flash which didn't include in ID table
but support SFDP, is a good way for flash support.
Building upon this fundation, achieve hooking the manufacturer using the
1st ID byte.
Consequently, extend support even for parts not descibed in SFDP.

Signed-off-by: JaimeLiao <jaimeliao at mxic.com.tw>
---
 drivers/mtd/spi-nor/core.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index 5f29fac8669a..eb0a09c06bf4 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -2036,10 +2036,13 @@ static const struct flash_info *spi_nor_match_id(struct spi_nor *nor,
 	for (i = 0; i < ARRAY_SIZE(manufacturers); i++) {
 		for (j = 0; j < manufacturers[i]->nparts; j++) {
 			part = &manufacturers[i]->parts[j];
-			if (part->id_len &&
-			    !memcmp(part->id, id, part->id_len)) {
-				nor->manufacturer = manufacturers[i];
-				return part;
+			if (part->id_len) {
+				/* Hook manufacturers when first byte (maf ID) is same as other IDs on ID table */
+				if (!nor->manufacturer && !memcmp(part->id, id, 1))
+					nor->manufacturer = manufacturers[i];
+
+				if (!memcmp(part->id, id, part->id_len))
+					return part;
 			}
 		}
 	}
-- 
2.25.1




More information about the linux-mtd mailing list