[PATCH v2 2/6] mtd: spi-nor: add erase die (chip) capability

Fabio Estevam festevam at denx.de
Wed Nov 1 09:17:32 PDT 2023


Hi Tudor,

On 01/11/2023 13:04, Tudor Ambarus wrote:

> this is wrong, it should have been
> 	bool multi_die = nor->mtd.size != die_size;


I applied the following changes on top of v2:

--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -1067,12 +1067,17 @@ static int spi_nor_read_sr2(struct spi_nor *nor, 
u8 *sr2)
   */
  static int spi_nor_erase_die(struct spi_nor *nor, loff_t addr, size_t 
die_size)
  {
-       bool multi_die = nor->mtd.size == die_size;
+       bool multi_die = nor->mtd.size != die_size;
         int ret;

-       dev_dbg(nor->dev, " %lldKiB\n", (long long)(die_size >> 10));
+       dev_info(nor->dev, " %lldKiB\n", (long long)(die_size >> 10));

         if (nor->spimem) {
+               dev_info(nor->dev, "***** nor->params->die_erase_opcode: 
0x%x\n", nor->params->die_erase_opcode);
+               dev_info(nor->dev, "***** nor->addr_nbytes: %d\n", 
nor->addr_nbytes);
+               dev_info(nor->dev, "***** addr 0x%llx\n", addr);
+               dev_info(nor->dev, "***** multi_die: %d\n", multi_die);
+
                 struct spi_mem_op op =
                         
SPI_NOR_DIE_ERASE_OP(nor->params->die_erase_opcode,
                                              nor->addr_nbytes, addr, 
multi_die);
, but erase is still not working:


~# time flash_erase /dev/mtd0 0 0
Erasing 131072 Kibyte @ 0 --  0 [   14.733446] spi-nor spi0.0:  65536KiB
% complete [   14.739932] spi-nor spi0.0: ***** 
nor->params->die_erase_opcode: 0xc4
[   14.747311] spi-nor spi0.0: ***** nor->addr_nbytes: 4
[   14.752402] spi-nor spi0.0: ***** addr 0x0
[   14.756524] spi-nor spi0.0: ***** multi_die: 1
[   14.761121] spi-nor spi0.0:  65536KiB
[   14.764807] spi-nor spi0.0: ***** nor->params->die_erase_opcode: 0xc4
[   14.771289] spi-nor spi0.0: ***** nor->addr_nbytes: 4
[   14.776369] spi-nor spi0.0: ***** addr 0x4000000
[   14.781004] spi-nor spi0.0: ***** multi_die: 1
Erasing 131072 Kibyte @ 0 -- 100 % complete

real	0m0.061s
user	0m0.006s
sys	0m0.053s

~# hexdump -C /dev/mtd0
00000000  d4 a1 8c 16 ad 4d b2 df  3d 2a af c2 ae 0a 8a c1  
|.....M..=*......|
00000010  5f 2d 7a 17 9f c3 a4 46  cd f9 80 b8 1e 33 43 25  
|_-z....F.....3C%|
....

Thanks



More information about the linux-mtd mailing list