Message ID | f351754643dda5305f385ce23eb74ff2ee41e177.1712638210.git.Takahiro.Kuwano@infineon.com |
---|---|
State | New |
Delegated to: | Jagannadha Sutradharudu Teki |
Headers | show |
Series | mtd: spi-nor: Add support for S25FS-S family | expand |
On Tue, Apr 09 2024, tkuw584924@gmail.com wrote: > From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com> > > The correct 4KB erase opcode should be selected based on the address width > currently used. > > Fixes: 562d166a13 ("mtd: spi-nor-core: Add fixups for s25fs512s") > Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com> Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
On Apr 09, 2024 at 15:20:20 +0900, tkuw584924@gmail.com wrote: > From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com> > > The correct 4KB erase opcode should be selected based on the address width > currently used. > > Fixes: 562d166a13 ("mtd: spi-nor-core: Add fixups for s25fs512s") > Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com> > --- > drivers/mtd/spi/spi-nor-core.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c > index f86003ca8c..9620852817 100644 > --- a/drivers/mtd/spi/spi-nor-core.c > +++ b/drivers/mtd/spi/spi-nor-core.c > @@ -3299,8 +3299,10 @@ static int s25fs_s_quad_enable(struct spi_nor *nor) > > static int s25fs_s_erase_non_uniform(struct spi_nor *nor, loff_t addr) > { > + u8 opcode = nor->addr_width == 4 ? SPINOR_OP_BE_4K_4B : SPINOR_OP_BE_4K; > + > /* Support 8 x 4KB sectors at bottom */ > - return spansion_erase_non_uniform(nor, addr, SPINOR_OP_BE_4K_4B, 0, SZ_32K); > + return spansion_erase_non_uniform(nor, addr, opcode, 0, SZ_32K); Reviewed-by: Dhruva Gole <d-gole@ti.com>
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c index f86003ca8c..9620852817 100644 --- a/drivers/mtd/spi/spi-nor-core.c +++ b/drivers/mtd/spi/spi-nor-core.c @@ -3299,8 +3299,10 @@ static int s25fs_s_quad_enable(struct spi_nor *nor) static int s25fs_s_erase_non_uniform(struct spi_nor *nor, loff_t addr) { + u8 opcode = nor->addr_width == 4 ? SPINOR_OP_BE_4K_4B : SPINOR_OP_BE_4K; + /* Support 8 x 4KB sectors at bottom */ - return spansion_erase_non_uniform(nor, addr, SPINOR_OP_BE_4K_4B, 0, SZ_32K); + return spansion_erase_non_uniform(nor, addr, opcode, 0, SZ_32K); } static int s25fs_s_setup(struct spi_nor *nor, const struct flash_info *info,