| /* |
| * Copyright (c) 2016 Intel Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @file |
| * |
| * @brief This file has the WinBond SPI flash private definitions |
| */ |
| |
| #ifndef __SPI_FLASH_W25QXXDV_DEFS_H__ |
| #define __SPI_FLASH_W25QXXDV_DEFS_H__ |
| |
| /* Status Registers |
| * S7 S6 S5 S4 S3 S2 S1 S0 |
| * +-------------------------------------------------------+ |
| * | SRP0 | SEC | TB | BP2 | BP1 | BP0 | WEL | BUSY | |
| * +-------------------------------------------------------+ |
| * |
| * BUSY - Erase/Write In Progress - 1 device is executing a command, 0 ready for command |
| * WEL - Write Enable Latch - 1 write enable is received, 0 completeion of |
| * a Write Disable, Page Program, Erase, Write Status Register |
| * |
| * S15 S14 S13 S12 S11 S10 S9 S8 |
| * +-------------------------------------------------------+ |
| * | SUS | CMP | LB3 | LB2 | LB1 | xxx | QE | SRP1 | |
| * +-------------------------------------------------------+ |
| * |
| * S23 S22 S21 S20 S19 S18 S17 S16 |
| * +----------------------------------------------------------+ |
| * | HOLD/RST | DRV1 | DRV0 | xxx | xxx | WPS | xxx | xxx | |
| * +----------------------------------------------------------+ |
| */ |
| |
| #define W25QXXDV_RDID_VALUE (0x00ef4015) |
| #define W25QXXDV_MAX_LEN_REG_CMD (6) |
| #define W25QXXDV_OPCODE_LEN (1) |
| #define W25QXXDV_ADDRESS_WIDTH (3) |
| #define W25QXXDV_LEN_CMD_ADDRESS (4) |
| #define W25QXXDV_LEN_CMD_AND_ID (4) |
| |
| /* relevant status register bits */ |
| #define W25QXXDV_WIP_BIT (0x1 << 0) |
| #define W25QXXDV_WEL_BIT (0x1 << 1) |
| #define W25QXXDV_SRWD_BIT (0x1 << 7) |
| #define W25QXXDV_TB_BIT (0x1 << 3) |
| #define W25QXXDV_SR_BP_OFFSET (2) |
| |
| /* relevant security register bits */ |
| #define W25QXXDV_SECR_WPSEL_BIT (0x1 << 7) |
| #define W25QXXDV_SECR_EFAIL_BIT (0x1 << 6) |
| #define W25QXXDV_SECR_PFAIL_BIT (0x1 << 5) |
| |
| /* supported erase size */ |
| #define W25QXXDV_SECTOR_SIZE (0x1000) |
| #define W25QXXDV_BLOCK32K_SIZE (0x8000) |
| #define W25QXXDV_BLOCK_SIZE (0x10000) |
| |
| #define W25QXXDV_SECTOR_MASK (0xFFF) |
| |
| /* ID comands */ |
| #define W25QXXDV_CMD_RDID 0x9F |
| #define W25QXXDV_CMD_RES 0xAB |
| #define W25QXXDV_CMD_REMS 0x90 |
| #define W25QXXDV_CMD_QPIID 0xAF |
| #define W25QXXDV_CMD_UNID 0x4B |
| |
| /*Register comands */ |
| #define W25QXXDV_CMD_WRSR 0x01 |
| #define W25QXXDV_CMD_RDSR 0x05 |
| #define W25QXXDV_CMD_RDSR2 0x35 |
| #define W25QXXDV_CMD_WRSCUR 0x2F |
| #define W25QXXDV_CMD_RDSCUR 0x48 |
| |
| /* READ comands */ |
| #define W25QXXDV_CMD_READ 0x03 |
| #define W25QXXDV_CMD_2READ 0xBB |
| #define W25QXXDV_CMD_4READ 0xEB |
| #define W25QXXDV_CMD_FASTREAD 0x0B |
| #define W25QXXDV_CMD_DREAD 0x3B |
| #define W25QXXDV_CMD_QREAD 0x6B |
| #define W25QXXDV_CMD_RDSFDP 0x5A |
| |
| /* Program comands */ |
| #define W25QXXDV_CMD_WREN 0x06 |
| #define W25QXXDV_CMD_WRDI 0x04 |
| #define W25QXXDV_CMD_PP 0x02 |
| #define W25QXXDV_CMD_4PP 0x32 |
| #define W25QXXDV_CMD_WRENVSR 0x50 |
| |
| /* Erase comands */ |
| #define W25QXXDV_CMD_SE 0x20 |
| #define W25QXXDV_CMD_BE32K 0x52 |
| #define W25QXXDV_CMD_BE 0xD8 |
| #define W25QXXDV_CMD_CE 0x60 |
| |
| /* Mode setting comands */ |
| #define W25QXXDV_CMD_DP 0xB9 |
| #define W25QXXDV_CMD_RDP 0xAB |
| |
| /* Reset comands */ |
| #define W25QXXDV_CMD_RSTEN 0x66 |
| #define W25QXXDV_CMD_RST 0x99 |
| #define W25QXXDV_CMD_RSTQIO 0xF5 |
| |
| /* Security comands */ |
| #define W25QXXDV_CMD_ERSR 0x44 |
| #define W25QXXDV_CMD_PRSR 0x42 |
| |
| /* Suspend/Resume comands */ |
| #define W25QXXDV_CMD_PGM_ERS_S 0x75 |
| #define W25QXXDV_CMD_PGM_ERS_R 0x7A |
| |
| #define W25QXXDV_CMD_NOP 0x00 |
| |
| #endif /*__SPI_FLASH_W25QXXDV_DEFS_H__*/ |