]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mtd: spi-nor: Call spi_nor_post_sfdp_fixups() only after spi_nor_parse_sfdp()
authorTakahiro Kuwano <Takahiro.Kuwano@infineon.com>
Tue, 15 Oct 2024 04:08:35 +0000 (13:08 +0900)
committerTom Rini <trini@konsulko.com>
Tue, 15 Oct 2024 14:57:49 +0000 (08:57 -0600)
This patch follows the upstream linux commit:
5273cc6df984("mtd: spi-nor: core: Call spi_nor_post_sfdp_fixups() only
when SFDP is defined")

spi_nor_post_sfdp_fixups() was called regardless of if
spi_nor_parse_sfdp() had been called or not. late_init() should be
instead used to initialize the parameters that are not defined in SFDP.

Ideally spi_nor_post_sfdp_fixups() is called only after successful parse
of SFDP. However, in case SFDP support is disabled by .config, that can
break current functionality. Therefore, we would call it after
spi_nor_parse_sfdp() regardless of its return value.

Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
drivers/mtd/spi/spi-nor-core.c

index d076388223595cddd594e4191837ca3d42abb3eb..46af9b4fe4733854981850f54daac5f8696179bf 100644 (file)
@@ -195,11 +195,10 @@ struct sfdp_bfpt {
 /**
  * struct spi_nor_fixups - SPI NOR fixup hooks
  * @post_bfpt: called after the BFPT table has been parsed
- * @post_sfdp: called after SFDP has been parsed (is also called for SPI NORs
- *             that do not support RDSFDP). Typically used to tweak various
- *             parameters that could not be extracted by other means (i.e.
- *             when information provided by the SFDP/flash_info tables are
- *             incomplete or wrong).
+ * @post_sfdp: called after SFDP has been parsed. Typically used to tweak
+ *             various parameters that could not be extracted by other means
+ *             (i.e. when information provided by the SFDP tables are incomplete
+ *             or wrong).
  * @late_init: used to initialize flash parameters that are not declared in the
  *             JESD216 SFDP standard, or where SFDP tables not defined at all.
  *
@@ -3045,13 +3044,12 @@ static int spi_nor_parse_sfdp(struct spi_nor *nor,
 
 /**
  * spi_nor_post_sfdp_fixups() - Updates the flash's parameters and settings
- * after SFDP has been parsed (is also called for SPI NORs that do not
- * support RDSFDP).
+ * after SFDP has been parsed.
  * @nor:       pointer to a 'struct spi_nor'
  *
  * Typically used to tweak various parameters that could not be extracted by
- * other means (i.e. when information provided by the SFDP/flash_info tables
- * are incomplete or wrong).
+ * other means (i.e. when information provided by the SFDP tables are incomplete
+ * or wrong).
  */
 static void spi_nor_post_sfdp_fixups(struct spi_nor *nor,
                                     struct spi_nor_flash_parameter *params)
@@ -3193,6 +3191,8 @@ static int spi_nor_init_params(struct spi_nor *nor,
                } else {
                        memcpy(params, &sfdp_params, sizeof(*params));
                }
+
+               spi_nor_post_sfdp_fixups(nor, params);
        }
 #if CONFIG_IS_ENABLED(DM_SPI) && CONFIG_IS_ENABLED(SPI_ADVANCE)
        /*
@@ -3250,7 +3250,6 @@ static int spi_nor_init_params(struct spi_nor *nor,
                params->page_size <<= 1;
        }
 #endif
-       spi_nor_post_sfdp_fixups(nor, params);
        spi_nor_late_init_fixups(nor, params);
 
        return 0;