1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #pragma once
- #include "common.h"
- #define SPIFLASH_SECTOR_SIZE 4096 /* Erasable chunk */
- #define SPIFLASH_PAGE_SIZE 256 /* Programmable chunk */
- struct spz_stream;
- typedef struct spz_stream spz_stream;
- /* Set data and data_len if the data to be written is not from the spz */
- extern_c int spiflash_write_spz(spz_stream *spz,
- const void *data, unsigned int data_len);
- /* SPI flash command opcodes */
- enum romcmd {
- /* Standard SPI mode commands */
- ROM_WRITE_ENABLE = 0x06,
- ROM_VOLATILE_SR_WRITE_ENABLE = 0x50,
- ROM_WRITE_DISABLE = 0x04,
- ROM_RELEASE_POWERDOWN_ID = 0xab,
- ROM_MANUFACTURER_DEVICE_ID = 0x90,
- ROM_JEDEC_ID = 0x9f,
- ROM_READ_UNIQUE_ID = 0x4b,
- ROM_READ_DATA = 0x03, /* DO NOT USE */
- ROM_READ_DATA_32BIT = 0x13, /* DO NOT USE */
- ROM_FAST_READ = 0x0b,
- ROM_FAST_READ_32BIT = 0x0c,
- ROM_PAGE_PROGRAM = 0x02,
- ROM_PAGE_PROGRAM_32BIT = 0x12,
- ROM_ERASE_4K = 0x20,
- ROM_ERASE_4K_32BIT = 0x21,
- ROM_ERASE_32K = 0x52,
- ROM_ERASE_64K = 0xd8,
- ROM_ERASE_64K_32BIT = 0xdc,
- ROM_ERASE_ALL = 0xc7,
- ROM_READ_SR1 = 0x05,
- ROM_WRITE_SR1 = 0x01,
- ROM_READ_SR2 = 0x35,
- ROM_WRITE_SR2 = 0x31,
- ROM_READ_SR3 = 0x15,
- ROM_WRITE_SR3 = 0x11,
- ROM_READ_EAR = 0xc8, /* Extended address register */
- ROM_WRITE_EAR = 0xc5,
- ROM_READ_SFDP = 0x5a,
- ROM_ERASE_SECURITY = 0x44,
- ROM_PROGRAM_SECURITY = 0x42,
- ROM_READ_SECURITY = 0x48,
- ROM_GLOBAL_BLOCK_LOCK = 0x7e,
- ROM_GLOBAL_BLOCK_UNLOCK = 0x98,
- ROM_READ_BLOCK_LOCK = 0x3d,
- ROM_ONE_BLOCK_LOCK = 0x36,
- ROM_ONE_BLOCK_UNLOCK = 0x39,
- ROM_ERASE_PROGRAM_SUSPEND = 0x75,
- ROM_ERASE_PROGRAM_RESUME = 0x7a,
- ROM_POWER_DOWN = 0xb9,
- ROM_ENTER_32BIT = 0xb7,
- ROM_LEAVE_32BIT = 0xe9,
- ROM_ENTER_QPI = 0x48,
- ROM_ENABLE_RESET = 0x66,
- ROM_RESET = 0x99,
- /* Dual SPI commands */
- ROM_FAST_READ_DUAL = 0x3b,
- ROM_FAST_READ_DUAL_32BIT = 0x3c
- };
- #define SPIFLASH_SFDP_SIZE 256
- enum spiflash_addr_mode {
- SPIFLASH_ADDR_DYNAMIC, /* 24-bit for < 16 MB, otherwise 32 bit */
- SPIFLASH_ADDR_24BIT, /* 24-bit addressing only */
- SPIFLASH_ADDR_32BIT /* 32-bit addressing only */
- };
|