]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mtd: spi-nor: simplify spi_nor_get_flash_info()
authorMichael Walle <mwalle@kernel.org>
Mon, 3 Jun 2024 13:40:55 +0000 (15:40 +0200)
committerPratyush Yadav <pratyush@kernel.org>
Tue, 18 Jun 2024 09:42:19 +0000 (11:42 +0200)
Rework spi_nor_get_flash_info() to make it look more straight forward
and esp. don't return early. The latter is a preparation to check for
deprecated flashes.

Signed-off-by: Michael Walle <mwalle@kernel.org>
Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
Signed-off-by: Pratyush Yadav <pratyush@kernel.org>
Link: https://lore.kernel.org/r/20240603134055.1859863-1-mwalle@kernel.org
drivers/mtd/spi-nor/core.c

index 7128d45870d49fd37cb3d15419201084f7197cb3..e0c4efc424f498dcb6d25bd24c12d1f1040783f9 100644 (file)
@@ -3298,32 +3298,28 @@ static const struct flash_info *spi_nor_get_flash_info(struct spi_nor *nor,
 
        if (name)
                info = spi_nor_match_name(nor, name);
-       /* Try to auto-detect if chip name wasn't specified or not found */
-       if (!info)
-               return spi_nor_detect(nor);
-
        /*
-        * If caller has specified name of flash model that can normally be
-        * detected using JEDEC, let's verify it.
+        * Auto-detect if chip name wasn't specified or not found, or the chip
+        * has an ID. If the chip supposedly has an ID, we also do an
+        * auto-detection to compare it later.
         */
-       if (name && info->id) {
+       if (!info || info->id) {
                const struct flash_info *jinfo;
 
                jinfo = spi_nor_detect(nor);
-               if (IS_ERR(jinfo)) {
+               if (IS_ERR(jinfo))
                        return jinfo;
-               } else if (jinfo != info) {
-                       /*
-                        * JEDEC knows better, so overwrite platform ID. We
-                        * can't trust partitions any longer, but we'll let
-                        * mtd apply them anyway, since some partitions may be
-                        * marked read-only, and we don't want to loose that
-                        * information, even if it's not 100% accurate.
-                        */
+
+               /*
+                * If caller has specified name of flash model that can normally
+                * be detected using JEDEC, let's verify it.
+                */
+               if (info && jinfo != info)
                        dev_warn(nor->dev, "found %s, expected %s\n",
                                 jinfo->name, info->name);
-                       info = jinfo;
-               }
+
+               /* If info was set before, JEDEC knows better. */
+               info = jinfo;
        }
 
        return info;