Message ID | 20210727045222.905056-2-tudor.ambarus@microchip.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mtd: spi-nor: Handle ID collisions and clean params init | expand |
On 27/07/21 07:51AM, Tudor Ambarus wrote: > 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>
Am 2021-07-27 06:51, schrieb Tudor Ambarus: > 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: Michael Walle <michael@walle.cc>
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index cc08bd707378..3d9f3698fb7b 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -2726,7 +2726,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 3348e1dd1445..55fceb0ec894 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -382,6 +382,10 @@ struct flash_info { * protection bits. Usually these will * power-up in a write-protected state. */ +#define SPI_NOR_PARSE_SFDP BIT(23) /* + * Flash initialized based on the SFDP + * tables. + */ const struct spi_nor_otp_organization otp_org;