[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