diff options
author | Alison Wang <b18965@freescale.com> | 2017-05-17 09:00:08 (GMT) |
---|---|---|
committer | Xie Xiaobo <xiaobo.xie@nxp.com> | 2017-09-25 07:25:31 (GMT) |
commit | 9ca93d4dbd605c66feded08145916619864313ec (patch) | |
tree | 6cb3e6442508cd1fb42f5105b57f4f40f714189a | |
parent | b69beae7b5f97108aedef1e6bd919214810b664e (diff) | |
download | linux-9ca93d4dbd605c66feded08145916619864313ec.tar.xz |
spi-nor: fslquad: add quad mode read for s25fs512s
Signed-off-by: Mingkai Hu <mingkai.hu@nxp.com>
Signed-off-by: Yunhui Cui <yunhui.cui@nxp.com>
Signed-off-by: Yuan Yao <yao.yuan@nxp.com>
Signed-off-by: Suresh Gupta <suresh.gupta@nxp.com>
-rw-r--r-- | drivers/mtd/spi-nor/fsl-quadspi.c | 25 | ||||
-rw-r--r-- | drivers/mtd/spi-nor/spi-nor.c | 1 |
2 files changed, 20 insertions, 6 deletions
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 8301bcc..6e1168b 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -435,12 +435,25 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) LUT1(FSL_READ, PAD1, rxfifo), base + QUADSPI_LUT(lut_base + 1)); } else if (nor->flash_read == SPI_NOR_QUAD) { - qspi_writel(q, LUT0(CMD, PAD1, read_op) | - LUT1(ADDR, PAD1, addrlen), - base + QUADSPI_LUT(lut_base)); - qspi_writel(q, LUT0(DUMMY, PAD1, read_dm) | - LUT1(FSL_READ, PAD4, rxfifo), - base + QUADSPI_LUT(lut_base + 1)); + if (q->nor_size == 0x4000000) { + read_op = 0xEC; + qspi_writel(q, + LUT0(CMD, PAD1, read_op) | LUT1(ADDR, PAD4, addrlen), + base + QUADSPI_LUT(lut_base)); + qspi_writel(q, + LUT0(MODE, PAD4, 0xff) | LUT1(DUMMY, PAD4, read_dm), + base + QUADSPI_LUT(lut_base + 1)); + qspi_writel(q, + LUT0(FSL_READ, PAD4, rxfifo), + base + QUADSPI_LUT(lut_base + 2)); + } else { + qspi_writel(q, LUT0(CMD, PAD1, read_op) | + LUT1(ADDR, PAD1, addrlen), + base + QUADSPI_LUT(lut_base)); + qspi_writel(q, LUT0(DUMMY, PAD1, read_dm) | + LUT1(FSL_READ, PAD4, rxfifo), + base + QUADSPI_LUT(lut_base + 1)); + } } else if (nor->flash_read == SPI_NOR_DDR_QUAD) { /* read mode : 1-4-4, such as Spansion s25fl128s. */ qspi_writel(q, LUT0(CMD, PAD1, read_op) diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index 3915f08..24949ab 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -907,6 +907,7 @@ static const struct flash_info spi_nor_ids[] = { { "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) }, { "s25fl128s", INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) }, { "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + { "s25fs512s", INFO6(0x010220, 0x4d0081, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)}, { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) }, { "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) }, |