@@ -1008,6 +1008,44 @@ static int flash_flexspi_nor_check_jedec(struct flash_flexspi_nor_data *data,
10081008 /* Device uses bit 1 of status reg 2 for QE */
10091009 return flash_flexspi_nor_quad_enable (data , flexspi_lut ,
10101010 JESD216_DW15_QER_VAL_S2B1v5 );
1011+ case 0x60ef :
1012+ if ((vendor_id & 0xFFFFFF ) != 0x2060ef ) {
1013+ /*
1014+ * This is not the correct flash chip, and will not
1015+ * support the LUT table. Return here
1016+ */
1017+ return - ENOTSUP ;
1018+ }
1019+ /* W25Q512NW-IQ/IN flash, use 4 byte read/write */
1020+ flexspi_lut [READ ][0 ] = FLEXSPI_LUT_SEQ (
1021+ kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , SPI_NOR_CMD_4READ_4B ,
1022+ kFLEXSPI_Command_RADDR_SDR , kFLEXSPI_4PAD , 32 );
1023+ /* Flash needs 8 dummy cycles (at 133MHz) */
1024+ flexspi_lut [READ ][1 ] = FLEXSPI_LUT_SEQ (
1025+ kFLEXSPI_Command_DUMMY_SDR , kFLEXSPI_4PAD , 8 ,
1026+ kFLEXSPI_Command_READ_SDR , kFLEXSPI_4PAD , 0x04 );
1027+ /* Only 1S-1S-4S page program supported */
1028+ flexspi_lut [PAGE_PROGRAM ][0 ] = FLEXSPI_LUT_SEQ (
1029+ kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , SPI_NOR_CMD_PP_1_1_4_4B ,
1030+ kFLEXSPI_Command_RADDR_SDR , kFLEXSPI_1PAD , 32 );
1031+ flexspi_lut [PAGE_PROGRAM ][1 ] = FLEXSPI_LUT_SEQ (
1032+ kFLEXSPI_Command_WRITE_SDR , kFLEXSPI_4PAD , 0x4 ,
1033+ kFLEXSPI_Command_STOP , kFLEXSPI_1PAD , 0x0 );
1034+ /* Update ERASE commands for 4 byte mode */
1035+ flexspi_lut [ERASE_SECTOR ][0 ] = FLEXSPI_LUT_SEQ (
1036+ kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , SPI_NOR_CMD_SE_4B ,
1037+ kFLEXSPI_Command_RADDR_SDR , kFLEXSPI_1PAD , 32 );
1038+ flexspi_lut [ERASE_BLOCK ][0 ] = FLEXSPI_LUT_SEQ (
1039+ kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , 0xDC ,
1040+ kFLEXSPI_Command_RADDR_SDR , kFLEXSPI_1PAD , 32 ),
1041+ /* Read instruction used for polling is 0x05 */
1042+ data -> legacy_poll = true;
1043+ flexspi_lut [READ_STATUS_REG ][0 ] = FLEXSPI_LUT_SEQ (
1044+ kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , SPI_NOR_CMD_RDSR ,
1045+ kFLEXSPI_Command_READ_SDR , kFLEXSPI_1PAD , 0x01 );
1046+ /* Device uses bit 1 of status reg 2 for QE */
1047+ return flash_flexspi_nor_quad_enable (data , flexspi_lut ,
1048+ JESD216_DW15_QER_VAL_S2B1v5 );
10111049 case 0x25C2 :
10121050 /* MX25 flash, use 4 byte read/write */
10131051 flexspi_lut [READ ][0 ] = FLEXSPI_LUT_SEQ (
0 commit comments