Commit 0f6232801cee4f45dbdb0cec45f71172c9b617ca

Authored by Jagannadha Sutradharudu Teki
1 parent f4f51a8ff8

sf: probe: Add support for flag status polling

From Micron, 512MB onwards, flash requires to poll flag status
instead of read status- hence added E_FSR flag on spectific
flash parts.

Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>

Showing 2 changed files with 12 additions and 5 deletions Side-by-side Diff

drivers/mtd/spi/spi_flash_probe.c
... ... @@ -94,10 +94,10 @@
94 94 {"N25Q128A", 0x20bb18, 0x0, 64 * 1024, 256, SECT_4K},
95 95 {"N25Q256", 0x20ba19, 0x0, 64 * 1024, 512, SECT_4K},
96 96 {"N25Q256A", 0x20bb19, 0x0, 64 * 1024, 512, SECT_4K},
97   - {"N25Q512", 0x20ba20, 0x0, 64 * 1024, 1024, SECT_4K},
98   - {"N25Q512A", 0x20bb20, 0x0, 64 * 1024, 1024, SECT_4K},
99   - {"N25Q1024", 0x20ba21, 0x0, 64 * 1024, 2048, SECT_4K},
100   - {"N25Q1024A", 0x20bb21, 0x0, 64 * 1024, 2048, SECT_4K},
  97 + {"N25Q512", 0x20ba20, 0x0, 64 * 1024, 1024, E_FSR | SECT_4K},
  98 + {"N25Q512A", 0x20bb20, 0x0, 64 * 1024, 1024, E_FSR | SECT_4K},
  99 + {"N25Q1024", 0x20ba21, 0x0, 64 * 1024, 2048, E_FSR | SECT_4K},
  100 + {"N25Q1024A", 0x20bb21, 0x0, 64 * 1024, 2048, E_FSR | SECT_4K},
101 101 #endif
102 102 #ifdef CONFIG_SPI_FLASH_SST /* SST */
103 103 {"SST25VF040B", 0xbf258d, 0x0, 64 * 1024, 8, SECT_4K | SST_WP},
... ... @@ -187,7 +187,6 @@
187 187  
188 188 flash->spi = spi;
189 189 flash->name = params->name;
190   - flash->poll_cmd = CMD_READ_STATUS;
191 190  
192 191 /* Assign spi_flash ops */
193 192 flash->write = spi_flash_cmd_write_multi;
... ... @@ -214,6 +213,13 @@
214 213 flash->erase_cmd = CMD_ERASE_64K;
215 214 flash->erase_size = flash->sector_size;
216 215 }
  216 +
  217 + /* Poll cmd seclection */
  218 + flash->poll_cmd = CMD_READ_STATUS;
  219 +#ifdef CONFIG_SPI_FLASH_STMICRO
  220 + if (params->flags & E_FSR)
  221 + flash->poll_cmd = CMD_FLAG_STATUS;
  222 +#endif
217 223  
218 224 /* Flash powers up read-only, so clear BP# bits */
219 225 #if defined(CONFIG_SPI_FLASH_ATMEL) || \
... ... @@ -20,6 +20,7 @@
20 20 /* SECT flags */
21 21 #define SECT_4K (1 << 1)
22 22 #define SECT_32K (1 << 2)
  23 +#define E_FSR (1 << 3)
23 24  
24 25 /* SST specific macros */
25 26 #ifdef CONFIG_SPI_FLASH_SST