Skip to content

Commit 99879eb

Browse files
Borislav Kerezievrtborg
authored andcommitted
drivers: flash: flash_mcux_flexspi_nor:Add support for W24W64JV
Add LUT for Winbond W25Q64JV NOR flash. Signed-off-by: Borislav Kereziev <[email protected]>
1 parent 5828ba5 commit 99879eb

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

drivers/flash/flash_mcux_flexspi_nor.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,6 +1194,39 @@ static int flash_flexspi_nor_check_jedec(struct flash_flexspi_nor_data *data,
11941194
/* Device uses bit 1 of status reg 2 for QE */
11951195
return flash_flexspi_nor_quad_enable(data, flexspi_lut,
11961196
JESD216_DW15_QER_VAL_S2B1v5);
1197+
case 0x1740EF:
1198+
/* W25Q64JV flash, use 3 byte read/write */
1199+
flexspi_lut[READ][0] = FLEXSPI_LUT_SEQ(
1200+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_4READ,
1201+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 24);
1202+
/* Flash needs 6 dummy cycles */
1203+
flexspi_lut[READ][1] = FLEXSPI_LUT_SEQ(
1204+
kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 6,
1205+
kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04);
1206+
/* Only 1S-1S-4S page program supported */
1207+
flexspi_lut[PAGE_PROGRAM][0] =
1208+
FLEXSPI_LUT_SEQ(
1209+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_PP_1_1_4,
1210+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 24);
1211+
flexspi_lut[PAGE_PROGRAM][1] = FLEXSPI_LUT_SEQ(
1212+
kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_4PAD, 0x3,
1213+
kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x0);
1214+
/* Update ERASE commands for 3 byte mode */
1215+
flexspi_lut[ERASE_SECTOR][0] = FLEXSPI_LUT_SEQ(
1216+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_SE,
1217+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 24);
1218+
/* 64 KB (0x10000) block erase 0xD8 */
1219+
flexspi_lut[ERASE_BLOCK][0] = FLEXSPI_LUT_SEQ(
1220+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_BE,
1221+
kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 24),
1222+
/* Read instruction used for polling is 0x05 */
1223+
data->legacy_poll = true;
1224+
flexspi_lut[READ_STATUS_REG][0] = FLEXSPI_LUT_SEQ(
1225+
kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, SPI_NOR_CMD_RDSR,
1226+
kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x01);
1227+
/* Device uses bit 1 of status reg 2 for QE */
1228+
return flash_flexspi_nor_quad_enable(data, flexspi_lut,
1229+
JESD216_DW15_QER_VAL_S2B1v5);
11971230
case 0x3A25C2:
11981231
/* MX25U51245G flash, use 4 byte read/write */
11991232
flexspi_lut[READ][0] = FLEXSPI_LUT_SEQ(

0 commit comments

Comments
 (0)