0001
0002
0003
0004
0005
0006
0007 #ifndef __LINUX_MTD_SFDP_H
0008 #define __LINUX_MTD_SFDP_H
0009
0010
0011 #define SFDP_JESD216_MAJOR 1
0012 #define SFDP_JESD216_MINOR 0
0013 #define SFDP_JESD216A_MINOR 5
0014 #define SFDP_JESD216B_MINOR 6
0015
0016
0017
0018
0019
0020
0021
0022 #define BFPT_DWORD(i) ((i) - 1)
0023 #define BFPT_DWORD_MAX 20
0024
0025 struct sfdp_bfpt {
0026 u32 dwords[BFPT_DWORD_MAX];
0027 };
0028
0029
0030 #define BFPT_DWORD_MAX_JESD216 9
0031 #define BFPT_DWORD_MAX_JESD216B 16
0032
0033
0034 #define BFPT_DWORD1_FAST_READ_1_1_2 BIT(16)
0035 #define BFPT_DWORD1_ADDRESS_BYTES_MASK GENMASK(18, 17)
0036 #define BFPT_DWORD1_ADDRESS_BYTES_3_ONLY (0x0UL << 17)
0037 #define BFPT_DWORD1_ADDRESS_BYTES_3_OR_4 (0x1UL << 17)
0038 #define BFPT_DWORD1_ADDRESS_BYTES_4_ONLY (0x2UL << 17)
0039 #define BFPT_DWORD1_DTR BIT(19)
0040 #define BFPT_DWORD1_FAST_READ_1_2_2 BIT(20)
0041 #define BFPT_DWORD1_FAST_READ_1_4_4 BIT(21)
0042 #define BFPT_DWORD1_FAST_READ_1_1_4 BIT(22)
0043
0044
0045 #define BFPT_DWORD5_FAST_READ_2_2_2 BIT(0)
0046 #define BFPT_DWORD5_FAST_READ_4_4_4 BIT(4)
0047
0048
0049 #define BFPT_DWORD11_PAGE_SIZE_SHIFT 4
0050 #define BFPT_DWORD11_PAGE_SIZE_MASK GENMASK(7, 4)
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085 #define BFPT_DWORD15_QER_MASK GENMASK(22, 20)
0086 #define BFPT_DWORD15_QER_NONE (0x0UL << 20)
0087 #define BFPT_DWORD15_QER_SR2_BIT1_BUGGY (0x1UL << 20)
0088 #define BFPT_DWORD15_QER_SR1_BIT6 (0x2UL << 20)
0089 #define BFPT_DWORD15_QER_SR2_BIT7 (0x3UL << 20)
0090 #define BFPT_DWORD15_QER_SR2_BIT1_NO_RD (0x4UL << 20)
0091 #define BFPT_DWORD15_QER_SR2_BIT1 (0x5UL << 20)
0092
0093 #define BFPT_DWORD16_SWRST_EN_RST BIT(12)
0094
0095 #define BFPT_DWORD18_CMD_EXT_MASK GENMASK(30, 29)
0096 #define BFPT_DWORD18_CMD_EXT_REP (0x0UL << 29)
0097 #define BFPT_DWORD18_CMD_EXT_INV (0x1UL << 29)
0098 #define BFPT_DWORD18_CMD_EXT_RES (0x2UL << 29)
0099 #define BFPT_DWORD18_CMD_EXT_16B (0x3UL << 29)
0100
0101 struct sfdp_parameter_header {
0102 u8 id_lsb;
0103 u8 minor;
0104 u8 major;
0105 u8 length;
0106 u8 parameter_table_pointer[3];
0107 u8 id_msb;
0108 };
0109
0110 int spi_nor_parse_sfdp(struct spi_nor *nor);
0111
0112 #endif