1
2
3
4
5
6
7#ifndef __LINUX_MTD_SPI_NOR_H
8#define __LINUX_MTD_SPI_NOR_H
9
10#include <mtd.h>
11#include <linux/bitops.h>
12#include <linux/mtd/cfi.h>
13#include <linux/mtd/mtd.h>
14#include <spi-mem.h>
15
16
17
18
19
20
21
22#define SNOR_MFR_ATMEL CFI_MFR_ATMEL
23#define SNOR_MFR_GIGADEVICE 0xc8
24#define SNOR_MFR_INTEL CFI_MFR_INTEL
25#define SNOR_MFR_ST CFI_MFR_ST
26#define SNOR_MFR_MICRON CFI_MFR_MICRON
27#define SNOR_MFR_ISSI CFI_MFR_PMC
28#define SNOR_MFR_MACRONIX CFI_MFR_MACRONIX
29#define SNOR_MFR_SPANSION CFI_MFR_AMD
30#define SNOR_MFR_SST CFI_MFR_SST
31#define SNOR_MFR_WINBOND 0xef
32#define SNOR_MFR_CYPRESS 0x34
33
34
35
36
37
38
39
40
41
42
43#define SPINOR_OP_WREN 0x06
44#define SPINOR_OP_RDSR 0x05
45#define SPINOR_OP_WRSR 0x01
46#define SPINOR_OP_RDSR2 0x3f
47#define SPINOR_OP_WRSR2 0x3e
48#define SPINOR_OP_READ 0x03
49#define SPINOR_OP_READ_FAST 0x0b
50#define SPINOR_OP_READ_1_1_2 0x3b
51#define SPINOR_OP_READ_1_2_2 0xbb
52#define SPINOR_OP_READ_1_1_4 0x6b
53#define SPINOR_OP_READ_1_4_4 0xeb
54#define SPINOR_OP_READ_1_1_8 0x8b
55#define SPINOR_OP_READ_1_8_8 0xcb
56#define SPINOR_OP_PP 0x02
57#define SPINOR_OP_PP_1_1_4 0x32
58#define SPINOR_OP_PP_1_4_4 0x38
59#define SPINOR_OP_PP_1_1_8 0x82
60#define SPINOR_OP_PP_1_8_8 0xc2
61#define SPINOR_OP_BE_4K 0x20
62#define SPINOR_OP_BE_4K_PMC 0xd7
63#define SPINOR_OP_BE_32K 0x52
64#define SPINOR_OP_CHIP_ERASE 0xc7
65#define SPINOR_OP_SE 0xd8
66#define SPINOR_OP_RDID 0x9f
67#define SPINOR_OP_RDSFDP 0x5a
68#define SPINOR_OP_RDCR 0x35
69#define SPINOR_OP_RDFSR 0x70
70#define SPINOR_OP_CLFSR 0x50
71#define SPINOR_OP_RDEAR 0xc8
72#define SPINOR_OP_WREAR 0xc5
73#define SPINOR_OP_SRSTEN 0x66
74#define SPINOR_OP_SRST 0x99
75
76
77#define SPINOR_OP_READ_4B 0x13
78#define SPINOR_OP_READ_FAST_4B 0x0c
79#define SPINOR_OP_READ_1_1_2_4B 0x3c
80#define SPINOR_OP_READ_1_2_2_4B 0xbc
81#define SPINOR_OP_READ_1_1_4_4B 0x6c
82#define SPINOR_OP_READ_1_4_4_4B 0xec
83#define SPINOR_OP_READ_1_1_8_4B 0x7c
84#define SPINOR_OP_READ_1_8_8_4B 0xcc
85#define SPINOR_OP_PP_4B 0x12
86#define SPINOR_OP_PP_1_1_4_4B 0x34
87#define SPINOR_OP_PP_1_4_4_4B 0x3e
88#define SPINOR_OP_PP_1_1_8_4B 0x84
89#define SPINOR_OP_PP_1_8_8_4B 0x8e
90#define SPINOR_OP_BE_4K_4B 0x21
91#define SPINOR_OP_BE_32K_4B 0x5c
92#define SPINOR_OP_SE_4B 0xdc
93
94
95#define SPINOR_OP_READ_1_1_1_DTR 0x0d
96#define SPINOR_OP_READ_1_2_2_DTR 0xbd
97#define SPINOR_OP_READ_1_4_4_DTR 0xed
98
99#define SPINOR_OP_READ_1_1_1_DTR_4B 0x0e
100#define SPINOR_OP_READ_1_2_2_DTR_4B 0xbe
101#define SPINOR_OP_READ_1_4_4_DTR_4B 0xee
102
103
104#define SPINOR_OP_BP 0x02
105#define SPINOR_OP_WRDI 0x04
106#define SPINOR_OP_AAI_WP 0xad
107
108
109#define SPINOR_OP_READ_BPR 0x72
110#define SPINOR_OP_WRITE_BPR 0x42
111
112
113#define SPINOR_OP_XSE 0x50
114#define SPINOR_OP_XPP 0x82
115#define SPINOR_OP_XRDSR 0xd7
116
117#define XSR_PAGESIZE BIT(0)
118#define XSR_RDY BIT(7)
119
120
121#define SPINOR_OP_EN4B 0xb7
122#define SPINOR_OP_EX4B 0xe9
123#define SPINOR_OP_EN4B 0xb7
124#define SPINOR_OP_EX4B 0xe9
125#define SPINOR_OP_RD_CR2 0x71
126#define SPINOR_OP_WR_CR2 0x72
127#define SPINOR_OP_MXIC_DTR_RD 0xee
128#define SPINOR_REG_MXIC_CR2_MODE 0x00000000
129#define SPINOR_REG_MXIC_OPI_DTR_EN 0x2
130#define SPINOR_REG_MXIC_CR2_DC 0x00000300
131#define SPINOR_REG_MXIC_DC_20 0x0
132#define MXIC_MAX_DC 20
133
134
135#define SPINOR_OP_BRWR 0x17
136#define SPINOR_OP_BRRD 0x16
137#define SPINOR_OP_CLSR 0x30
138#define SPINOR_OP_EX4B_CYPRESS 0xB8
139#define SPINOR_OP_RDAR 0x65
140#define SPINOR_OP_WRAR 0x71
141#define SPINOR_REG_ADDR_STR1V 0x00800000
142#define SPINOR_REG_ADDR_CFR1V 0x00800002
143#define SPINOR_REG_ADDR_CFR3V 0x00800004
144#define SPINOR_REG_ADDR_ARCFN 0x00000006
145#define CFR3V_UNHYSA BIT(3)
146#define CFR3V_PGMBUF BIT(4)
147
148
149#define SPINOR_OP_RD_EVCR 0x65
150#define SPINOR_OP_WD_EVCR 0x61
151#define SPINOR_OP_MT_DTR_RD 0xfd
152#define SPINOR_OP_MT_RD_ANY_REG 0x85
153#define SPINOR_OP_MT_WR_ANY_REG 0x81
154#define SPINOR_REG_MT_CFR0V 0x00
155#define SPINOR_REG_MT_CFR1V 0x01
156#define SPINOR_MT_OCT_DTR 0xe7
157
158
159#define SR_WIP BIT(0)
160#define SR_WEL BIT(1)
161
162#define SR_BP0 BIT(2)
163#define SR_BP1 BIT(3)
164#define SR_BP2 BIT(4)
165#define SR_TB BIT(5)
166#define SR_SRWD BIT(7)
167
168#define SR_E_ERR BIT(5)
169#define SR_P_ERR BIT(6)
170
171#define SR_QUAD_EN_MX BIT(6)
172
173
174#define EVCR_QUAD_EN_MICRON BIT(7)
175
176
177#define FSR_READY BIT(7)
178#define FSR_E_ERR BIT(5)
179#define FSR_P_ERR BIT(4)
180#define FSR_PT_ERR BIT(1)
181
182
183#define CR_QUAD_EN_SPAN BIT(1)
184
185
186#define SR2_QUAD_EN_BIT7 BIT(7)
187
188
189#define SPINOR_OP_RD_ANY_REG 0x65
190#define SPINOR_OP_WR_ANY_REG 0x71
191#define SPINOR_OP_S28_SE_4K 0x21
192#define SPINOR_REG_CYPRESS_CFR2V 0x00800003
193#define SPINOR_REG_CYPRESS_CFR2_MEMLAT_11_24 0xb
194#define SPINOR_REG_CYPRESS_CFR3V 0x00800004
195#define SPINOR_REG_CYPRESS_CFR3_PGSZ BIT(4)
196#define SPINOR_REG_CYPRESS_CFR3_UNISECT BIT(3)
197#define SPINOR_REG_CYPRESS_CFR5V 0x00800006
198#define SPINOR_REG_CYPRESS_CFR5_BIT6 BIT(6)
199#define SPINOR_REG_CYPRESS_CFR5_DDR BIT(1)
200#define SPINOR_REG_CYPRESS_CFR5_OPI BIT(0)
201#define SPINOR_REG_CYPRESS_CFR5_OCT_DTR_EN \
202 (SPINOR_REG_CYPRESS_CFR5_BIT6 | SPINOR_REG_CYPRESS_CFR5_DDR | \
203 SPINOR_REG_CYPRESS_CFR5_OPI)
204#define SPINOR_OP_CYPRESS_RD_FAST 0xee
205
206
207#define SNOR_PROTO_INST_MASK GENMASK(23, 16)
208#define SNOR_PROTO_INST_SHIFT 16
209#define SNOR_PROTO_INST(_nbits) \
210 ((((unsigned long)(_nbits)) << SNOR_PROTO_INST_SHIFT) & \
211 SNOR_PROTO_INST_MASK)
212
213#define SNOR_PROTO_ADDR_MASK GENMASK(15, 8)
214#define SNOR_PROTO_ADDR_SHIFT 8
215#define SNOR_PROTO_ADDR(_nbits) \
216 ((((unsigned long)(_nbits)) << SNOR_PROTO_ADDR_SHIFT) & \
217 SNOR_PROTO_ADDR_MASK)
218
219#define SNOR_PROTO_DATA_MASK GENMASK(7, 0)
220#define SNOR_PROTO_DATA_SHIFT 0
221#define SNOR_PROTO_DATA(_nbits) \
222 ((((unsigned long)(_nbits)) << SNOR_PROTO_DATA_SHIFT) & \
223 SNOR_PROTO_DATA_MASK)
224
225#define SNOR_PROTO_IS_DTR BIT(24)
226
227#define SNOR_PROTO_STR(_inst_nbits, _addr_nbits, _data_nbits) \
228 (SNOR_PROTO_INST(_inst_nbits) | \
229 SNOR_PROTO_ADDR(_addr_nbits) | \
230 SNOR_PROTO_DATA(_data_nbits))
231#define SNOR_PROTO_DTR(_inst_nbits, _addr_nbits, _data_nbits) \
232 (SNOR_PROTO_IS_DTR | \
233 SNOR_PROTO_STR(_inst_nbits, _addr_nbits, _data_nbits))
234
235enum spi_nor_protocol {
236 SNOR_PROTO_1_1_1 = SNOR_PROTO_STR(1, 1, 1),
237 SNOR_PROTO_1_1_2 = SNOR_PROTO_STR(1, 1, 2),
238 SNOR_PROTO_1_1_4 = SNOR_PROTO_STR(1, 1, 4),
239 SNOR_PROTO_1_1_8 = SNOR_PROTO_STR(1, 1, 8),
240 SNOR_PROTO_1_2_2 = SNOR_PROTO_STR(1, 2, 2),
241 SNOR_PROTO_1_4_4 = SNOR_PROTO_STR(1, 4, 4),
242 SNOR_PROTO_1_8_8 = SNOR_PROTO_STR(1, 8, 8),
243 SNOR_PROTO_2_2_2 = SNOR_PROTO_STR(2, 2, 2),
244 SNOR_PROTO_4_4_4 = SNOR_PROTO_STR(4, 4, 4),
245 SNOR_PROTO_8_8_8 = SNOR_PROTO_STR(8, 8, 8),
246
247 SNOR_PROTO_1_1_1_DTR = SNOR_PROTO_DTR(1, 1, 1),
248 SNOR_PROTO_1_2_2_DTR = SNOR_PROTO_DTR(1, 2, 2),
249 SNOR_PROTO_1_4_4_DTR = SNOR_PROTO_DTR(1, 4, 4),
250 SNOR_PROTO_1_8_8_DTR = SNOR_PROTO_DTR(1, 8, 8),
251 SNOR_PROTO_8_8_8_DTR = SNOR_PROTO_DTR(8, 8, 8),
252};
253
254static inline bool spi_nor_protocol_is_dtr(enum spi_nor_protocol proto)
255{
256 return !!(proto & SNOR_PROTO_IS_DTR);
257}
258
259static inline u8 spi_nor_get_protocol_inst_nbits(enum spi_nor_protocol proto)
260{
261 return ((unsigned long)(proto & SNOR_PROTO_INST_MASK)) >>
262 SNOR_PROTO_INST_SHIFT;
263}
264
265static inline u8 spi_nor_get_protocol_addr_nbits(enum spi_nor_protocol proto)
266{
267 return ((unsigned long)(proto & SNOR_PROTO_ADDR_MASK)) >>
268 SNOR_PROTO_ADDR_SHIFT;
269}
270
271static inline u8 spi_nor_get_protocol_data_nbits(enum spi_nor_protocol proto)
272{
273 return ((unsigned long)(proto & SNOR_PROTO_DATA_MASK)) >>
274 SNOR_PROTO_DATA_SHIFT;
275}
276
277static inline u8 spi_nor_get_protocol_width(enum spi_nor_protocol proto)
278{
279 return spi_nor_get_protocol_data_nbits(proto);
280}
281
282#define SPI_NOR_MAX_CMD_SIZE 8
283enum spi_nor_ops {
284 SPI_NOR_OPS_READ = 0,
285 SPI_NOR_OPS_WRITE,
286 SPI_NOR_OPS_ERASE,
287 SPI_NOR_OPS_LOCK,
288 SPI_NOR_OPS_UNLOCK,
289};
290
291enum spi_nor_option_flags {
292 SNOR_F_USE_FSR = BIT(0),
293 SNOR_F_HAS_SR_TB = BIT(1),
294 SNOR_F_NO_OP_CHIP_ERASE = BIT(2),
295 SNOR_F_S3AN_ADDR_DEFAULT = BIT(3),
296 SNOR_F_READY_XSR_RDY = BIT(4),
297 SNOR_F_USE_CLSR = BIT(5),
298 SNOR_F_BROKEN_RESET = BIT(6),
299 SNOR_F_SOFT_RESET = BIT(7),
300 SNOR_F_IO_MODE_EN_VOLATILE = BIT(8),
301};
302
303struct spi_nor;
304
305
306
307
308
309
310struct spi_nor_hwcaps {
311 u32 mask;
312};
313
314
315
316
317
318
319
320
321#define SNOR_HWCAPS_READ_MASK GENMASK(15, 0)
322#define SNOR_HWCAPS_READ BIT(0)
323#define SNOR_HWCAPS_READ_FAST BIT(1)
324#define SNOR_HWCAPS_READ_1_1_1_DTR BIT(2)
325
326#define SNOR_HWCAPS_READ_DUAL GENMASK(6, 3)
327#define SNOR_HWCAPS_READ_1_1_2 BIT(3)
328#define SNOR_HWCAPS_READ_1_2_2 BIT(4)
329#define SNOR_HWCAPS_READ_2_2_2 BIT(5)
330#define SNOR_HWCAPS_READ_1_2_2_DTR BIT(6)
331
332#define SNOR_HWCAPS_READ_QUAD GENMASK(10, 7)
333#define SNOR_HWCAPS_READ_1_1_4 BIT(7)
334#define SNOR_HWCAPS_READ_1_4_4 BIT(8)
335#define SNOR_HWCAPS_READ_4_4_4 BIT(9)
336#define SNOR_HWCAPS_READ_1_4_4_DTR BIT(10)
337
338#define SNOR_HWCPAS_READ_OCTO GENMASK(15, 11)
339#define SNOR_HWCAPS_READ_1_1_8 BIT(11)
340#define SNOR_HWCAPS_READ_1_8_8 BIT(12)
341#define SNOR_HWCAPS_READ_8_8_8 BIT(13)
342#define SNOR_HWCAPS_READ_1_8_8_DTR BIT(14)
343#define SNOR_HWCAPS_READ_8_8_8_DTR BIT(15)
344
345
346
347
348
349
350
351
352
353
354#define SNOR_HWCAPS_PP_MASK GENMASK(23, 16)
355#define SNOR_HWCAPS_PP BIT(16)
356
357#define SNOR_HWCAPS_PP_QUAD GENMASK(19, 17)
358#define SNOR_HWCAPS_PP_1_1_4 BIT(17)
359#define SNOR_HWCAPS_PP_1_4_4 BIT(18)
360#define SNOR_HWCAPS_PP_4_4_4 BIT(19)
361
362#define SNOR_HWCAPS_PP_OCTO GENMASK(23, 20)
363#define SNOR_HWCAPS_PP_1_1_8 BIT(20)
364#define SNOR_HWCAPS_PP_1_8_8 BIT(21)
365#define SNOR_HWCAPS_PP_8_8_8 BIT(22)
366#define SNOR_HWCAPS_PP_8_8_8_DTR BIT(23)
367
368#define SNOR_HWCAPS_X_X_X (SNOR_HWCAPS_READ_2_2_2 | \
369 SNOR_HWCAPS_READ_4_4_4 | \
370 SNOR_HWCAPS_READ_8_8_8 | \
371 SNOR_HWCAPS_PP_4_4_4 | \
372 SNOR_HWCAPS_PP_8_8_8)
373
374#define SNOR_HWCAPS_X_X_X_DTR (SNOR_HWCAPS_READ_8_8_8_DTR | \
375 SNOR_HWCAPS_PP_8_8_8_DTR)
376
377#define SNOR_HWCAPS_DTR (SNOR_HWCAPS_READ_1_1_1_DTR | \
378 SNOR_HWCAPS_READ_1_2_2_DTR | \
379 SNOR_HWCAPS_READ_1_4_4_DTR | \
380 SNOR_HWCAPS_READ_1_8_8_DTR)
381
382#define SNOR_HWCAPS_ALL (SNOR_HWCAPS_READ_MASK | \
383 SNOR_HWCAPS_PP_MASK)
384
385struct spi_nor_read_command {
386 u8 num_mode_clocks;
387 u8 num_wait_states;
388 u8 opcode;
389 enum spi_nor_protocol proto;
390};
391
392struct spi_nor_pp_command {
393 u8 opcode;
394 enum spi_nor_protocol proto;
395};
396
397enum spi_nor_read_command_index {
398 SNOR_CMD_READ,
399 SNOR_CMD_READ_FAST,
400 SNOR_CMD_READ_1_1_1_DTR,
401
402
403 SNOR_CMD_READ_1_1_2,
404 SNOR_CMD_READ_1_2_2,
405 SNOR_CMD_READ_2_2_2,
406 SNOR_CMD_READ_1_2_2_DTR,
407
408
409 SNOR_CMD_READ_1_1_4,
410 SNOR_CMD_READ_1_4_4,
411 SNOR_CMD_READ_4_4_4,
412 SNOR_CMD_READ_1_4_4_DTR,
413
414
415 SNOR_CMD_READ_1_1_8,
416 SNOR_CMD_READ_1_8_8,
417 SNOR_CMD_READ_8_8_8,
418 SNOR_CMD_READ_1_8_8_DTR,
419 SNOR_CMD_READ_8_8_8_DTR,
420
421 SNOR_CMD_READ_MAX
422};
423
424enum spi_nor_pp_command_index {
425 SNOR_CMD_PP,
426
427
428 SNOR_CMD_PP_1_1_4,
429 SNOR_CMD_PP_1_4_4,
430 SNOR_CMD_PP_4_4_4,
431
432
433 SNOR_CMD_PP_1_1_8,
434 SNOR_CMD_PP_1_8_8,
435 SNOR_CMD_PP_8_8_8,
436 SNOR_CMD_PP_8_8_8_DTR,
437
438 SNOR_CMD_PP_MAX
439};
440
441struct spi_nor_flash_parameter {
442 u64 size;
443 u32 page_size;
444 u8 rdsr_dummy;
445 u8 rdsr_addr_nbytes;
446
447 struct spi_nor_hwcaps hwcaps;
448 struct spi_nor_read_command reads[SNOR_CMD_READ_MAX];
449 struct spi_nor_pp_command page_programs[SNOR_CMD_PP_MAX];
450
451 int (*quad_enable)(struct spi_nor *nor);
452};
453
454
455
456
457
458
459
460
461
462
463enum spi_nor_cmd_ext {
464 SPI_NOR_EXT_NONE = 0,
465 SPI_NOR_EXT_REPEAT,
466 SPI_NOR_EXT_INVERT,
467 SPI_NOR_EXT_HEX,
468};
469
470
471
472
473
474struct flash_info;
475
476
477
478
479
480
481
482
483#ifndef DT_PLAT_C
484#define spi_flash spi_nor
485#endif
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539struct spi_nor {
540 struct mtd_info mtd;
541 struct udevice *dev;
542 struct spi_slave *spi;
543 const struct flash_info *info;
544 u8 *manufacturer_sfdp;
545 u32 page_size;
546 u8 addr_width;
547 u8 erase_opcode;
548 u8 read_opcode;
549 u8 read_dummy;
550 u8 program_opcode;
551 u8 rdsr_dummy;
552 u8 rdsr_addr_nbytes;
553 u8 addr_mode_nbytes;
554#ifdef CONFIG_SPI_FLASH_BAR
555 u8 bank_read_cmd;
556 u8 bank_write_cmd;
557 u8 bank_curr;
558#endif
559 enum spi_nor_protocol read_proto;
560 enum spi_nor_protocol write_proto;
561 enum spi_nor_protocol reg_proto;
562 bool sst_write_second;
563 u32 flags;
564 u8 cmd_buf[SPI_NOR_MAX_CMD_SIZE];
565 enum spi_nor_cmd_ext cmd_ext_type;
566 struct spi_nor_fixups *fixups;
567
568 int (*setup)(struct spi_nor *nor, const struct flash_info *info,
569 const struct spi_nor_flash_parameter *params);
570 int (*prepare)(struct spi_nor *nor, enum spi_nor_ops ops);
571 void (*unprepare)(struct spi_nor *nor, enum spi_nor_ops ops);
572 int (*read_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len);
573 int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len);
574
575 ssize_t (*read)(struct spi_nor *nor, loff_t from,
576 size_t len, u_char *read_buf);
577 ssize_t (*write)(struct spi_nor *nor, loff_t to,
578 size_t len, const u_char *write_buf);
579 int (*erase)(struct spi_nor *nor, loff_t offs);
580
581 int (*flash_lock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
582 int (*flash_unlock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
583 int (*flash_is_unlocked)(struct spi_nor *nor, loff_t ofs, uint64_t len);
584 int (*quad_enable)(struct spi_nor *nor);
585 int (*octal_dtr_enable)(struct spi_nor *nor);
586 int (*ready)(struct spi_nor *nor);
587
588 struct {
589 struct spi_mem_dirmap_desc *rdesc;
590 struct spi_mem_dirmap_desc *wdesc;
591 } dirmap;
592
593 void *priv;
594 char mtd_name[MTD_NAME_SIZE(MTD_DEV_TYPE_NOR)];
595
596 const char *name;
597 u32 size;
598 u32 sector_size;
599 u32 erase_size;
600};
601
602#ifndef __UBOOT__
603static inline void spi_nor_set_flash_node(struct spi_nor *nor,
604 const struct device_node *np)
605{
606 mtd_set_of_node(&nor->mtd, np);
607}
608
609static inline const struct
610device_node *spi_nor_get_flash_node(struct spi_nor *nor)
611{
612 return mtd_get_of_node(&nor->mtd);
613}
614#endif
615
616
617
618
619
620
621
622
623void spi_nor_setup_op(const struct spi_nor *nor,
624 struct spi_mem_op *op,
625 const enum spi_nor_protocol proto);
626
627
628
629
630
631
632
633
634
635
636
637int spi_nor_scan(struct spi_nor *nor);
638
639#if CONFIG_IS_ENABLED(SPI_FLASH_TINY)
640static inline int spi_nor_remove(struct spi_nor *nor)
641{
642 return 0;
643}
644#else
645
646
647
648
649
650
651int spi_nor_remove(struct spi_nor *nor);
652#endif
653
654#endif
655