From: Potin Lai <potin.lai@quantatw.com>
To: openbmc@lists.ozlabs.org, joel@jms.id.au
Cc: Tudor Ambarus <tudor.ambarus@microchip.com>
Subject: [PATCH linux dev-5.15 05/26] mtd: spi-nor: core: Introduce the late_init() hook
Date: Fri, 25 Feb 2022 10:42:00 +0800 [thread overview]
Message-ID: <20220225024221.19422-6-potin.lai@quantatw.com> (raw)
In-Reply-To: <20220225024221.19422-1-potin.lai@quantatw.com>
From: Tudor Ambarus <tudor.ambarus@microchip.com>
Flash parameters init is done in a spaghetti way right now.
There is the init based on the flash_info data, then there is the
default_init() hook, then SFDP init, an intermediary post_bft(),
then post_sfdp() and a spi_nor_late_init_params(). Each method can
overwrite previuosly initialized parameters.
We want to separate what is SFDP and non-SFDP specific. late_init()
will replace the default_init() hook and will be used only to initialize
flash parameters that are not declared in the JESD216 SFDP standard, or
where SFDP tables are not defined at all.
We cut a member in the chain of initializing parameters by getting rid
of the default_init() hook, and we make it clear that everything that is
in late_init() is not covered by the SFDP tables defined by the flash.
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Reviewed-by: Michael Walle <michael@walle.cc>
Reviewed-by: Pratyush Yadav <p.yadav@ti.com>
Link: https://lore.kernel.org/r/20211029172633.886453-6-tudor.ambarus@microchip.com
---
drivers/mtd/spi-nor/core.c | 17 +++++++++++++----
drivers/mtd/spi-nor/core.h | 4 ++++
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index 3ec0959ffc20..88dd0908d172 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -2666,11 +2666,19 @@ static void spi_nor_post_sfdp_fixups(struct spi_nor *nor)
* spi_nor_late_init_params() - Late initialization of default flash parameters.
* @nor: pointer to a 'struct spi_nor'
*
- * Used to set default flash parameters and settings when the ->default_init()
- * hook or the SFDP parser let voids.
+ * Used to initialize flash parameters that are not declared in the JESD216
+ * SFDP standard, or where SFDP tables are not defined at all.
+ * Will replace the spi_nor_manufacturer_init_params() method.
*/
static void spi_nor_late_init_params(struct spi_nor *nor)
{
+ if (nor->manufacturer && nor->manufacturer->fixups &&
+ nor->manufacturer->fixups->late_init)
+ nor->manufacturer->fixups->late_init(nor);
+
+ if (nor->info->fixups && nor->info->fixups->late_init)
+ nor->info->fixups->late_init(nor);
+
/*
* NOR protection support. When locking_ops are not provided, we pick
* the default ones.
@@ -2712,8 +2720,9 @@ static void spi_nor_late_init_params(struct spi_nor *nor)
* wrong).
* spi_nor_post_sfdp_fixups()
*
- * 5/ Late default flash parameters initialization, used when the
- * ->default_init() hook or the SFDP parser do not set specific params.
+ * 5/ Late flash parameters initialization, used to initialize flash
+ * parameters that are not declared in the JESD216 SFDP standard, or where SFDP
+ * tables are not defined at all.
* spi_nor_late_init_params()
*/
static int spi_nor_init_params(struct spi_nor *nor)
diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h
index 223a03769950..50bae06bc024 100644
--- a/drivers/mtd/spi-nor/core.h
+++ b/drivers/mtd/spi-nor/core.h
@@ -297,6 +297,9 @@ struct spi_nor_flash_parameter {
* parameters that could not be extracted by other means (i.e.
* when information provided by the SFDP/flash_info 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.
+ * Will replace the default_init() hook.
*
* Those hooks can be used to tweak the SPI NOR configuration when the SFDP
* table is broken or not available.
@@ -307,6 +310,7 @@ struct spi_nor_fixups {
const struct sfdp_parameter_header *bfpt_header,
const struct sfdp_bfpt *bfpt);
void (*post_sfdp)(struct spi_nor *nor);
+ void (*late_init)(struct spi_nor *nor);
};
struct flash_info {
--
2.17.1
next prev parent reply other threads:[~2022-02-25 2:46 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-25 2:41 [PATCH linux dev-5.15 00/26] Add w25q01jvq and convert flash_info format Potin Lai
2022-02-25 2:41 ` [PATCH linux dev-5.15 01/26] mtd: spi-nor: Enable locking for n25q128a13 Potin Lai
2022-02-25 2:41 ` [PATCH linux dev-5.15 02/26] mtd: spi-nor: core: Fix spi_nor_flash_parameter otp description Potin Lai
2022-02-25 2:41 ` [PATCH linux dev-5.15 03/26] mtd: spi-nor: core: Use container_of to get the pointer to struct spi_nor Potin Lai
2022-02-25 2:41 ` [PATCH linux dev-5.15 04/26] mtd: spi-nor: Get rid of nor->page_size Potin Lai
2022-02-25 2:42 ` Potin Lai [this message]
2022-02-25 2:42 ` [PATCH linux dev-5.15 06/26] mtd: spi-nor: atmel: Use flash late_init() for locking Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 07/26] mtd: spi-nor: sst: " Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 08/26] mtd: spi-nor: winbond: Use manufacturer late_init() for OTP ops Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 09/26] mtd: spi-nor: xilinx: Use manufacturer late_init() to set setup method Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 10/26] mtd: spi-nor: sst: Use manufacturer late_init() to set _write() Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 11/26] mtd: spi-nor: spansion: Use manufacturer late_init() Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 12/26] mtd: spi-nor: Fix mtd size for s3an flashes Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 13/26] mtd: spi-nor: core: Don't use mtd_info in the NOR's probe sequence of calls Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 14/26] mtd: spi-nor: Introduce spi_nor_set_mtd_info() Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 15/26] mtd: spi-nor: core: Call spi_nor_post_sfdp_fixups() only when SFDP is defined Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 16/26] mtd: spi-nor: core: Introduce flash_info mfr_flags Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 17/26] mtd: spi-nor: Rework the flash_info flags Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 18/26] mtd: spi-nor: Introduce spi_nor_init_flags() Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 19/26] mtd: spi-nor: Introduce spi_nor_init_fixup_flags() Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 20/26] mtd: spi-nor: core: Init all flash parameters based on SFDP where possible Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 21/26] mtd: spi-nor: core: Move spi_nor_set_addr_width() in spi_nor_setup() Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 22/26] mtd: spi-nor: winbond: w25q256jvm: Init flash based on SFDP Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 23/26] mtd: spi-nor: spansion: s25fl256s0: Skip SFDP parsing Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 24/26] mtd: spi-nor: gigadevice: gd25q256: Init flash based on SFDP Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 25/26] mtd: spi-nor: issi: is25lp256: " Potin Lai
2022-02-25 2:42 ` [PATCH linux dev-5.15 26/26] mtd: spi-nor: winbond: Add support for w25q01jvq Potin Lai
2022-02-25 4:01 ` [PATCH linux dev-5.15 00/26] Add w25q01jvq and convert flash_info format Joel Stanley
2022-02-25 4:19 ` Potin Lai (賴柏廷)
2022-02-25 4:24 ` Joel Stanley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220225024221.19422-6-potin.lai@quantatw.com \
--to=potin.lai@quantatw.com \
--cc=joel@jms.id.au \
--cc=openbmc@lists.ozlabs.org \
--cc=tudor.ambarus@microchip.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).