|
|
|
@ -775,7 +775,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
{ "w25q32", INFO(0xef4016, 0, 64 * 1024, 64, SECT_4K) },
|
|
|
|
|
{
|
|
|
|
|
"w25q32dw", INFO(0xef6016, 0, 64 * 1024, 64,
|
|
|
|
|
@@ -1197,6 +1226,53 @@ static const struct flash_info *spi_nor_
|
|
|
|
|
@@ -1202,6 +1231,53 @@ static const struct flash_info *spi_nor_
|
|
|
|
|
id[0], id[1], id[2]);
|
|
|
|
|
return ERR_PTR(-ENODEV);
|
|
|
|
|
}
|
|
|
|
@ -829,7 +829,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
|
|
|
|
|
static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
|
|
|
|
|
size_t *retlen, u_char *buf)
|
|
|
|
|
@@ -1416,7 +1492,7 @@ static int macronix_quad_enable(struct s
|
|
|
|
|
@@ -1421,7 +1497,7 @@ static int macronix_quad_enable(struct s
|
|
|
|
|
* Write status Register and configuration register with 2 bytes
|
|
|
|
|
* The first byte will be written to the status register, while the
|
|
|
|
|
* second byte will be written to the configuration register.
|
|
|
|
@ -838,7 +838,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
*/
|
|
|
|
|
static int write_sr_cr(struct spi_nor *nor, u16 val)
|
|
|
|
|
{
|
|
|
|
|
@@ -1464,6 +1540,24 @@ static int spansion_quad_enable(struct s
|
|
|
|
|
@@ -1469,6 +1545,24 @@ static int spansion_quad_enable(struct s
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -863,7 +863,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
static int set_quad_mode(struct spi_nor *nor, const struct flash_info *info)
|
|
|
|
|
{
|
|
|
|
|
int status;
|
|
|
|
|
@@ -1610,9 +1704,25 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
@@ -1615,9 +1709,25 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
write_sr(nor, 0);
|
|
|
|
|
spi_nor_wait_till_ready(nor);
|
|
|
|
|
}
|
|
|
|
@ -889,7 +889,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
mtd->priv = nor;
|
|
|
|
|
mtd->type = MTD_NORFLASH;
|
|
|
|
|
mtd->writesize = 1;
|
|
|
|
|
@@ -1646,6 +1756,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
@@ -1651,6 +1761,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
nor->flags |= SNOR_F_USE_FSR;
|
|
|
|
|
if (info->flags & SPI_NOR_HAS_TB)
|
|
|
|
|
nor->flags |= SNOR_F_HAS_SR_TB;
|
|
|
|
@ -898,7 +898,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
|
|
|
|
|
/* prefer "small sector" erase if possible */
|
|
|
|
|
@@ -1685,9 +1797,15 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
@@ -1690,9 +1802,15 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
/* Some devices cannot do fast-read, no matter what DT tells us */
|
|
|
|
|
if (info->flags & SPI_NOR_NO_FR)
|
|
|
|
|
nor->flash_read = SPI_NOR_NORMAL;
|
|
|
|
@ -917,7 +917,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
|
|
|
|
ret = set_quad_mode(nor, info);
|
|
|
|
|
if (ret) {
|
|
|
|
|
dev_err(dev, "quad mode not supported\n");
|
|
|
|
|
@@ -1700,6 +1818,9 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
@@ -1705,6 +1823,9 @@ int spi_nor_scan(struct spi_nor *nor, co
|
|
|
|
|
|
|
|
|
|
/* Default commands */
|
|
|
|
|
switch (nor->flash_read) {
|
|
|
|
|