blob: 42d489fe85d108bc78d26b3a85e171d2c8cee818 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001
2#ifndef _SPI_NOR_H
3#define _SPI_NOR_H
4
5#include "spi_flash.h"
6
7#define STATUS1_BUSY (0x1)
8#define STATUS1_WEL (0x1 << 1)
9#define STATUS1_BP0 (0x1 << 2)
10#define STATUS1_BP1 (0x1 << 3)
11#define STATUS1_BP2 (0x1 << 4)
12#define STATUS1_TB (0x1 << 5)
13#define STATUS1_SEC (0x1 << 6)
14#define STATUS1_SRP0 (0x1 << 7)
15
16#define STATUS2_SRP1 (0x1)
17#define STATUS2_QE (0x1 << 1)
18#define STATUS2_LB1 (0x1 << 3)
19#define STATUS2_LB2 (0x1 << 4)
20#define STATUS2_LB3 (0x1 << 5)
21#define STATUS2_CMP (0x1 << 6)
22#define STATUS2_SUS (0x1 << 7)
23
24//#define QSPINOR_ENABLE_QPI_MODE
25
26/*SPI Nor chip options*/
27#define SPINOR_NEED_PLANE_SELECT (1 << 0)
28#define SPINOR_NEED_DIE_SELECT (1 << 1)
29#define SPINOR_QE_USE_BIT6 (1 << 2)
30#define SPINOR_HAVE_WRITE_STATUS2 (1 << 3)
31#define SPINOR_WRITE_STATUS1_1BYTE (1 << 4)
32
33#define SPINOR_MFR_MICRON 0x2C
34#define SPINOR_MAX_ID_LEN 3
35
36struct spi_nor_info {
37 char *name;
38 uint8_t mfr_id;
39 uint16_t dev_id;
40 uint32_t page_size;
41 uint32_t pages_per_blk;
42 uint32_t total_size;
43 uint32_t options;
44 uint32_t max_mhz;
45 uint8_t quad_cmd_index;
46};
47
48#define SPI_NOR_INFO(nm, mid, did, pagesz, pg_per_blk, size, opts, _max_mhz, _cmd_index) \
49 { .name = (nm), .mfr_id = (mid), .dev_id = (did),\
50 .page_size = (pagesz), .pages_per_blk = (pg_per_blk),\
51 .total_size = (size), .options = (opts), \
52 .max_mhz = (_max_mhz), \
53 .quad_cmd_index = (_cmd_index),}
54
55struct spi_flash_chip *spi_nor_scan_ident(struct mtd_info *mtd);
56#endif