From: Tudor Ambarus <tudor.ambarus@microchip.com> To: <michael@walle.cc>, <vigneshr@ti.com>, <p.yadav@ti.com> Cc: macromorgan@hotmail.com, jaimeliao@mxic.com.tw, Tudor Ambarus <tudor.ambarus@microchip.com>, richard@nod.at, esben@geanix.com, linux@rasmusvillemoes.dk, knaerzche@gmail.com, nicolas.ferre@microchip.com, linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org, code@reto-schneider.ch, miquel.raynal@bootlin.com, heiko.thiery@gmail.com, sr@denx.de, mail@david-bauer.net, zhengxunli@mxic.com.tw Subject: [PATCH v3 17/25] mtd: spi-nor: core: Introduce SPI_NOR_PARSE_SFDP Date: Fri, 29 Oct 2021 20:26:25 +0300 [thread overview] Message-ID: <20211029172633.886453-18-tudor.ambarus@microchip.com> (raw) In-Reply-To: <20211029172633.886453-1-tudor.ambarus@microchip.com> SPI NOR flashes that statically declare one of the SPI_NOR_{DUAL, QUAD, OCTAL, OCTAL_DTR}_READ flags and do not support the RDSFDP command are gratuiously receiving the RDSFDP command in the attempt of parsing the SFDP tables. It is not desirable to issue commands that are not supported, so introduce a flag to help on this situation. New flash additions that support the SFDP standard should be declared using SPI_NOR_PARSE_SFDP. Support that can be discovered when parsing SFDP should not be duplicated by explicit flags at flash declaration. All the flash parameters will be discovered when parsing SFDP. Sometimes manufacturers wrongly define some fields in the SFDP tables. If that's the case, SFDP data can be amended with the fixups() hooks. It is not common, but if the SFDP tables are entirely wrong, and it does not worth the hassle to tweak the SFDP parameters by using the fixups hooks, or if the flash does not define the SFDP tables at all, then statically init the flash with the SPI_NOR_SKIP_SFDP flag and specify the rest of flash capabilities with the flash info flags. With time, we want to convert all flashes to SPI_NOR_PARSE_SFDP and stop triggering the SFDP parsing with the SPI_NOR_{DUAL, QUAD, OCTAL*}_READ flags. Getting rid of the SPI_NOR_{OCTAL, OCTAL_DTR}_READ trigger is easily achievable, the rest are a long term goal. Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Reviewed-by: Heiko Thiery <heiko.thiery@gmail.com> Reviewed-by: Pratyush Yadav <p.yadav@ti.com> Reviewed-by: Michael Walle <michael@walle.cc> --- drivers/mtd/spi-nor/core.c | 3 ++- drivers/mtd/spi-nor/core.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index 6f7978e7a46a..40d98ae300ca 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -2805,7 +2805,8 @@ static int spi_nor_init_params(struct spi_nor *nor) spi_nor_manufacturer_init_params(nor); - if ((nor->info->flags & (SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | + if ((nor->info->flags & (SPI_NOR_PARSE_SFDP | + SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_OCTAL_READ | SPI_NOR_OCTAL_DTR_READ)) && !(nor->info->flags & SPI_NOR_SKIP_SFDP)) spi_nor_sfdp_init_params(nor); diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h index 1fadd0e74103..9dd8ada65f0c 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -334,6 +334,7 @@ struct flash_info { u16 addr_width; u32 flags; +#define SPI_NOR_PARSE_SFDP BIT(0) /* Flash initialized based on SFDP. */ #define SPI_NOR_SKIP_SFDP BIT(1) /* Skip parsing of SFDP tables */ /* -- 2.25.1 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Tudor Ambarus <tudor.ambarus@microchip.com> To: <michael@walle.cc>, <vigneshr@ti.com>, <p.yadav@ti.com> Cc: macromorgan@hotmail.com, jaimeliao@mxic.com.tw, Tudor Ambarus <tudor.ambarus@microchip.com>, richard@nod.at, esben@geanix.com, linux@rasmusvillemoes.dk, knaerzche@gmail.com, linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org, code@reto-schneider.ch, miquel.raynal@bootlin.com, heiko.thiery@gmail.com, sr@denx.de, figgyc@figgyc.uk, mail@david-bauer.net, zhengxunli@mxic.com.tw Subject: [PATCH v3 17/25] mtd: spi-nor: core: Introduce SPI_NOR_PARSE_SFDP Date: Fri, 29 Oct 2021 20:26:25 +0300 [thread overview] Message-ID: <20211029172633.886453-18-tudor.ambarus@microchip.com> (raw) In-Reply-To: <20211029172633.886453-1-tudor.ambarus@microchip.com> SPI NOR flashes that statically declare one of the SPI_NOR_{DUAL, QUAD, OCTAL, OCTAL_DTR}_READ flags and do not support the RDSFDP command are gratuiously receiving the RDSFDP command in the attempt of parsing the SFDP tables. It is not desirable to issue commands that are not supported, so introduce a flag to help on this situation. New flash additions that support the SFDP standard should be declared using SPI_NOR_PARSE_SFDP. Support that can be discovered when parsing SFDP should not be duplicated by explicit flags at flash declaration. All the flash parameters will be discovered when parsing SFDP. Sometimes manufacturers wrongly define some fields in the SFDP tables. If that's the case, SFDP data can be amended with the fixups() hooks. It is not common, but if the SFDP tables are entirely wrong, and it does not worth the hassle to tweak the SFDP parameters by using the fixups hooks, or if the flash does not define the SFDP tables at all, then statically init the flash with the SPI_NOR_SKIP_SFDP flag and specify the rest of flash capabilities with the flash info flags. With time, we want to convert all flashes to SPI_NOR_PARSE_SFDP and stop triggering the SFDP parsing with the SPI_NOR_{DUAL, QUAD, OCTAL*}_READ flags. Getting rid of the SPI_NOR_{OCTAL, OCTAL_DTR}_READ trigger is easily achievable, the rest are a long term goal. Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Reviewed-by: Heiko Thiery <heiko.thiery@gmail.com> Reviewed-by: Pratyush Yadav <p.yadav@ti.com> Reviewed-by: Michael Walle <michael@walle.cc> --- drivers/mtd/spi-nor/core.c | 3 ++- drivers/mtd/spi-nor/core.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index 6f7978e7a46a..40d98ae300ca 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -2805,7 +2805,8 @@ static int spi_nor_init_params(struct spi_nor *nor) spi_nor_manufacturer_init_params(nor); - if ((nor->info->flags & (SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | + if ((nor->info->flags & (SPI_NOR_PARSE_SFDP | + SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_OCTAL_READ | SPI_NOR_OCTAL_DTR_READ)) && !(nor->info->flags & SPI_NOR_SKIP_SFDP)) spi_nor_sfdp_init_params(nor); diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h index 1fadd0e74103..9dd8ada65f0c 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -334,6 +334,7 @@ struct flash_info { u16 addr_width; u32 flags; +#define SPI_NOR_PARSE_SFDP BIT(0) /* Flash initialized based on SFDP. */ #define SPI_NOR_SKIP_SFDP BIT(1) /* Skip parsing of SFDP tables */ /* -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-10-29 18:15 UTC|newest] Thread overview: 156+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-29 17:26 [PATCH v3 00/25] mtd: spi-nor: Clean params init Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:26 ` [PATCH v3 01/25] mtd: spi-nor: core: Fix spi_nor_flash_parameter otp description Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 8:18 ` Michael Walle 2021-11-09 8:18 ` Michael Walle 2021-10-29 17:26 ` [PATCH v3 02/25] mtd: spi-nor: core: Use container_of to get the pointer to struct spi_nor Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 8:21 ` Michael Walle 2021-11-09 8:21 ` Michael Walle 2021-11-15 10:59 ` Pratyush Yadav 2021-11-15 10:59 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 03/25] mtd: spi-nor: Introduce spi_nor_set_mtd_info() Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 8:22 ` Michael Walle 2021-11-09 8:22 ` Michael Walle 2021-11-15 18:52 ` Pratyush Yadav 2021-11-15 18:52 ` Pratyush Yadav 2021-11-16 14:25 ` Tudor.Ambarus 2021-11-16 14:25 ` Tudor.Ambarus 2021-11-16 18:11 ` Pratyush Yadav 2021-11-16 18:11 ` Pratyush Yadav 2021-11-17 14:36 ` Tudor.Ambarus 2021-11-17 14:36 ` Tudor.Ambarus 2021-11-19 18:23 ` Pratyush Yadav 2021-11-19 18:23 ` Pratyush Yadav 2021-11-22 8:38 ` Tudor.Ambarus 2021-11-22 8:38 ` Tudor.Ambarus 2021-10-29 17:26 ` [PATCH v3 04/25] mtd: spi-nor: Get rid of nor->page_size Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 8:24 ` Michael Walle 2021-11-09 8:24 ` Michael Walle 2021-11-09 8:34 ` Tudor.Ambarus 2021-11-09 8:34 ` Tudor.Ambarus 2021-10-29 17:26 ` [PATCH v3 05/25] mtd: spi-nor: core: Introduce the late_init() hook Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:31 ` Michael Walle 2021-11-09 9:31 ` Michael Walle 2021-11-15 18:56 ` Pratyush Yadav 2021-11-15 18:56 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 06/25] mtd: spi-nor: atmel: Use flash late_init() for locking Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:31 ` Michael Walle 2021-11-09 9:31 ` Michael Walle 2021-11-15 18:59 ` Pratyush Yadav 2021-11-15 18:59 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 07/25] mtd: spi-nor: sst: " Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:34 ` Michael Walle 2021-11-09 9:34 ` Michael Walle 2021-11-15 19:00 ` Pratyush Yadav 2021-11-15 19:00 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 08/25] mtd: spi-nor: winbond: Use manufacturer late_init() for OTP ops Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:36 ` Michael Walle 2021-11-09 9:36 ` Michael Walle 2021-11-15 19:00 ` Pratyush Yadav 2021-11-15 19:00 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 09/25] mtd: spi-nor: xilinx: Use manufacturer late_init() to set setup method Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:43 ` Michael Walle 2021-11-09 9:43 ` Michael Walle 2021-11-15 19:01 ` Pratyush Yadav 2021-11-15 19:01 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 10/25] mtd: spi-nor: sst: Use manufacturer late_init() to set _write() Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:47 ` Michael Walle 2021-11-09 9:47 ` Michael Walle 2021-11-09 10:22 ` Tudor.Ambarus 2021-11-09 10:22 ` Tudor.Ambarus 2021-11-09 10:23 ` Tudor.Ambarus 2021-11-09 10:23 ` Tudor.Ambarus 2021-11-09 10:24 ` Michael Walle 2021-11-09 10:24 ` Michael Walle 2021-11-15 19:03 ` Pratyush Yadav 2021-11-15 19:03 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 11/25] mtd: spi-nor: spansion: Use manufacturer late_init() Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 9:48 ` Michael Walle 2021-11-09 9:48 ` Michael Walle 2021-11-15 19:06 ` Pratyush Yadav 2021-11-15 19:06 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 12/25] mtd: spi-nor: core: Call spi_nor_post_sfdp_fixups() only when SFDP is defined Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 10:18 ` Michael Walle 2021-11-09 10:18 ` Michael Walle 2021-10-29 17:26 ` [PATCH v3 13/25] mtd: spi-nor: sst: Get rid of SST_WRITE flash_info flag Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-09 12:21 ` Michael Walle 2021-11-09 12:21 ` Michael Walle 2021-11-09 12:31 ` Tudor.Ambarus 2021-11-09 12:31 ` Tudor.Ambarus 2021-11-12 21:28 ` Michael Walle 2021-11-12 21:28 ` Michael Walle 2021-10-29 17:26 ` [PATCH v3 14/25] mtd: spi-nor: Introduce flash_info flags masks Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-12 21:50 ` Michael Walle 2021-11-12 21:50 ` Michael Walle 2021-11-15 4:55 ` Tudor.Ambarus 2021-11-15 4:55 ` Tudor.Ambarus 2021-10-29 17:26 ` [PATCH v3 15/25] mtd: spi-nor: Introduce spi_nor_nonsfdp_init_flags() Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-15 19:12 ` Pratyush Yadav 2021-11-15 19:12 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 16/25] mtd: spi-nor: Introduce spi_nor_init_fixup_flags() Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-16 10:57 ` Pratyush Yadav 2021-11-16 10:57 ` Pratyush Yadav 2021-10-29 17:26 ` Tudor Ambarus [this message] 2021-10-29 17:26 ` [PATCH v3 17/25] mtd: spi-nor: core: Introduce SPI_NOR_PARSE_SFDP Tudor Ambarus 2021-10-29 17:26 ` [PATCH v3 18/25] mtd: spi-nor: core: Init flash params based on SFDP first for new flash additions Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-16 11:07 ` Pratyush Yadav 2021-11-16 11:07 ` Pratyush Yadav 2021-10-29 17:26 ` [PATCH v3 19/25] mtd: spi-nor: core: Move spi_nor_set_addr_width() in spi_nor_setup() Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-11-12 21:53 ` Michael Walle 2021-11-12 21:53 ` Michael Walle 2021-10-29 17:26 ` [PATCH v3 20/25] mtd: spi-nor: sst: sst26vf064b: Init flash based on SFDP Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:31 ` Tudor.Ambarus 2021-10-29 17:31 ` Tudor.Ambarus 2021-11-09 12:25 ` Michael Walle 2021-11-09 12:25 ` Michael Walle 2021-11-09 12:33 ` Tudor.Ambarus 2021-11-09 12:33 ` Tudor.Ambarus 2021-11-09 12:37 ` Michael Walle 2021-11-09 12:37 ` Michael Walle 2021-10-29 17:26 ` [PATCH v3 21/25] mtd: spi-nor: winbond: w25q256jvm: " Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:31 ` Tudor.Ambarus 2021-10-29 17:31 ` Tudor.Ambarus 2021-10-29 17:26 ` [PATCH v3 22/25] mtd: spi-nor: spansion: s25fl256s0: Skip SFDP parsing Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:26 ` [PATCH v3 23/25] mtd: spi-nor: gigadevice: gd25q256: Init flash based on SFDP Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:33 ` Tudor.Ambarus 2021-10-29 17:33 ` Tudor.Ambarus 2021-10-29 17:26 ` [PATCH v3 24/25] mtd: spi-nor: issi: is25lp256: " Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:33 ` Tudor.Ambarus 2021-10-29 17:33 ` Tudor.Ambarus 2021-10-29 17:26 ` [PATCH v3 25/25] mtd: spi-nor: macronix: mx25l25635e: " Tudor Ambarus 2021-10-29 17:26 ` Tudor Ambarus 2021-10-29 17:34 ` Tudor.Ambarus 2021-10-29 17:34 ` Tudor.Ambarus 2021-11-08 10:15 ` [PATCH v3 00/25] mtd: spi-nor: Clean params init Tudor.Ambarus 2021-11-08 10:15 ` Tudor.Ambarus 2021-11-08 10:31 ` Michael Walle 2021-11-08 10:31 ` Michael Walle 2021-11-16 11:36 ` Pratyush Yadav 2021-11-16 11:36 ` Pratyush Yadav 2021-11-16 11:56 ` Michael Walle 2021-11-16 11:56 ` Michael Walle 2021-11-17 13:17 ` (subset)[PATCH " Tudor Ambarus 2021-11-17 13:17 ` Tudor Ambarus
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=20211029172633.886453-18-tudor.ambarus@microchip.com \ --to=tudor.ambarus@microchip.com \ --cc=code@reto-schneider.ch \ --cc=esben@geanix.com \ --cc=heiko.thiery@gmail.com \ --cc=jaimeliao@mxic.com.tw \ --cc=knaerzche@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-mtd@lists.infradead.org \ --cc=linux@rasmusvillemoes.dk \ --cc=macromorgan@hotmail.com \ --cc=mail@david-bauer.net \ --cc=michael@walle.cc \ --cc=miquel.raynal@bootlin.com \ --cc=nicolas.ferre@microchip.com \ --cc=p.yadav@ti.com \ --cc=richard@nod.at \ --cc=sr@denx.de \ --cc=vigneshr@ti.com \ --cc=zhengxunli@mxic.com.tw \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.