summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakahiro Kuwano <[email protected]>2024-10-15 13:08:35 +0900
committerTom Rini <[email protected]>2024-10-15 08:57:49 -0600
commit20f1383bad59996aeb62e92e296f9ee445ff71b6 (patch)
tree8bd1b99e145bbb70da7ed1244cc5766abf6053ba
parent0267cfa8570c6d10e99be24aaa4f82a0ca5eeb53 (diff)
mtd: spi-nor: Call spi_nor_post_sfdp_fixups() only after spi_nor_parse_sfdp()
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 <[email protected]> Signed-off-by: Takahiro Kuwano <[email protected]>
-rw-r--r--drivers/mtd/spi/spi-nor-core.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index d0763882235..46af9b4fe47 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -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;