Skip to content

Commit 44fb0ad

Browse files
committed
drivers: nxp : flexspi: add GD nor flash support
Fix a bug in quad bit enablement. Add LUT for Giga Device nor flash GD25Q256x. Signed-off-by: Raymond Lei <raymond.lei@nxp.com>
1 parent 72dc0e5 commit 44fb0ad

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

drivers/flash/flash_mcux_flexspi_nor.c

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -622,8 +622,8 @@ static int flash_flexspi_nor_quad_enable(struct flash_flexspi_nor_data *data,
622622
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_WRSR2,
623623
kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_1PAD, 0x1);
624624

625-
/* Set bit 7 of status register 2 */
626-
bit = BIT(7);
625+
/* Set bit 1 of status register 2 */
626+
bit = BIT(1);
627627
rd_size = 1;
628628
wr_size = 1;
629629
break;
@@ -1293,6 +1293,40 @@ static int flash_flexspi_nor_check_jedec(struct flash_flexspi_nor_data *data,
12931293
kFLEXSPI_Command_SDR, kFLEXSPI_8PAD, SPI_NOR_CMD_WREN,
12941294
kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0);
12951295
return 0;
1296+
case 0x1940C8: /* GD25Q256E */
1297+
flexspi_lut[READ][0] = FLEXSPI_LUT_SEQ(
1298+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_4READ_4B,
1299+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x20);
1300+
/* Flash needs 15 dummy cycles */
1301+
flexspi_lut[READ][1] = FLEXSPI_LUT_SEQ(
1302+
kFLEXSPI_Command_MODE8_SDR, kFLEXSPI_4PAD, 0xF0,
1303+
kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x04);
1304+
flexspi_lut[READ][2] = FLEXSPI_LUT_SEQ(
1305+
kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04,
1306+
kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00);
1307+
1308+
data->legacy_poll = true;
1309+
flexspi_lut[READ_STATUS_REG][0] = FLEXSPI_LUT_SEQ(
1310+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_RDSR,
1311+
kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04);
1312+
1313+
flexspi_lut[ERASE_SECTOR][0] = FLEXSPI_LUT_SEQ(
1314+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_SE_4B,
1315+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20);
1316+
1317+
flexspi_lut[ERASE_BLOCK][0] = FLEXSPI_LUT_SEQ(
1318+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_BE_4B,
1319+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20);
1320+
1321+
flexspi_lut[PAGE_PROGRAM][0] = FLEXSPI_LUT_SEQ(
1322+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_PP_1_1_4_4B,
1323+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20);
1324+
flexspi_lut[PAGE_PROGRAM][1] = FLEXSPI_LUT_SEQ(
1325+
kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_4PAD, 0x04,
1326+
kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00);
1327+
1328+
return flash_flexspi_nor_quad_enable(data, flexspi_lut,
1329+
JESD216_DW15_QER_VAL_S2B1v6);
12961330

12971331
default:
12981332
return -ENOTSUP;

0 commit comments

Comments
 (0)