2020#include <linux/spi/spi.h>
2121#include <linux/spi/spi-mem.h>
2222
23+ static struct spi_mem_op
24+ spinand_fill_reset_op (struct spinand_device * spinand )
25+ {
26+ return spinand -> op_templates -> reset ;
27+ }
28+
29+ static struct spi_mem_op
30+ spinand_fill_readid_op (struct spinand_device * spinand ,
31+ u8 naddr , u8 ndummy , void * buf , unsigned int len )
32+ {
33+ struct spi_mem_op op = spinand -> op_templates -> readid ;
34+
35+ op .addr .nbytes = naddr ;
36+ op .dummy .nbytes = ndummy ;
37+ op .data .buf .in = buf ;
38+ op .data .nbytes = len ;
39+
40+ return op ;
41+ }
42+
43+ struct spi_mem_op
44+ spinand_fill_wr_en_op (struct spinand_device * spinand )
45+ {
46+ return spinand -> op_templates -> wr_en ;
47+ }
48+
49+ static __maybe_unused struct spi_mem_op
50+ spinand_fill_wr_dis_op (struct spinand_device * spinand )
51+ {
52+ return spinand -> op_templates -> wr_dis ;
53+ }
54+
55+ struct spi_mem_op
56+ spinand_fill_set_feature_op (struct spinand_device * spinand , u64 reg , const void * valptr )
57+ {
58+ struct spi_mem_op op = spinand -> op_templates -> set_feature ;
59+
60+ op .addr .val = reg ;
61+ op .data .buf .out = valptr ;
62+
63+ return op ;
64+ }
65+
66+ struct spi_mem_op
67+ spinand_fill_get_feature_op (struct spinand_device * spinand , u64 reg , void * valptr )
68+ {
69+ struct spi_mem_op op = spinand -> op_templates -> get_feature ;
70+
71+ op .addr .val = reg ;
72+ op .data .buf .in = valptr ;
73+
74+ return op ;
75+ }
76+
77+ static struct spi_mem_op
78+ spinand_fill_blk_erase_op (struct spinand_device * spinand , u64 addr )
79+ {
80+ struct spi_mem_op op = spinand -> op_templates -> blk_erase ;
81+
82+ op .addr .val = addr ;
83+
84+ return op ;
85+ }
86+
87+ static struct spi_mem_op
88+ spinand_fill_page_read_op (struct spinand_device * spinand , u64 addr )
89+ {
90+ struct spi_mem_op op = spinand -> op_templates -> page_read ;
91+
92+ op .addr .val = addr ;
93+
94+ return op ;
95+ }
96+
97+ struct spi_mem_op
98+ spinand_fill_prog_exec_op (struct spinand_device * spinand , u64 addr )
99+ {
100+ struct spi_mem_op op = spinand -> op_templates -> prog_exec ;
101+
102+ op .addr .val = addr ;
103+
104+ return op ;
105+ }
106+
23107int spinand_read_reg_op (struct spinand_device * spinand , u8 reg , u8 * val )
24108{
25- struct spi_mem_op op = SPINAND_GET_FEATURE_1S_1S_1S_OP ( reg ,
26- spinand -> scratchbuf );
109+ struct spi_mem_op op = SPINAND_OP ( spinand , get_feature ,
110+ reg , spinand -> scratchbuf );
27111 int ret ;
28112
29113 ret = spi_mem_exec_op (spinand -> spimem , & op );
@@ -36,8 +120,8 @@ int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
36120
37121int spinand_write_reg_op (struct spinand_device * spinand , u8 reg , u8 val )
38122{
39- struct spi_mem_op op = SPINAND_SET_FEATURE_1S_1S_1S_OP ( reg ,
40- spinand -> scratchbuf );
123+ struct spi_mem_op op = SPINAND_OP ( spinand , set_feature ,
124+ reg , spinand -> scratchbuf );
41125
42126 * spinand -> scratchbuf = val ;
43127 return spi_mem_exec_op (spinand -> spimem , & op );
@@ -362,7 +446,7 @@ static void spinand_ondie_ecc_save_status(struct nand_device *nand, u8 status)
362446
363447int spinand_write_enable_op (struct spinand_device * spinand )
364448{
365- struct spi_mem_op op = SPINAND_WR_EN_1S_0_0_OP ;
449+ struct spi_mem_op op = SPINAND_OP ( spinand , wr_en ) ;
366450
367451 return spi_mem_exec_op (spinand -> spimem , & op );
368452}
@@ -372,7 +456,7 @@ static int spinand_load_page_op(struct spinand_device *spinand,
372456{
373457 struct nand_device * nand = spinand_to_nand (spinand );
374458 unsigned int row = nanddev_pos_to_row (nand , & req -> pos );
375- struct spi_mem_op op = SPINAND_PAGE_READ_1S_1S_0_OP ( row );
459+ struct spi_mem_op op = SPINAND_OP ( spinand , page_read , row );
376460
377461 return spi_mem_exec_op (spinand -> spimem , & op );
378462}
@@ -527,7 +611,7 @@ static int spinand_program_op(struct spinand_device *spinand,
527611{
528612 struct nand_device * nand = spinand_to_nand (spinand );
529613 unsigned int row = nanddev_pos_to_row (nand , & req -> pos );
530- struct spi_mem_op op = SPINAND_PROG_EXEC_1S_1S_0_OP ( row );
614+ struct spi_mem_op op = SPINAND_OP ( spinand , prog_exec , row );
531615
532616 return spi_mem_exec_op (spinand -> spimem , & op );
533617}
@@ -537,7 +621,7 @@ static int spinand_erase_op(struct spinand_device *spinand,
537621{
538622 struct nand_device * nand = spinand_to_nand (spinand );
539623 unsigned int row = nanddev_pos_to_row (nand , pos );
540- struct spi_mem_op op = SPINAND_BLK_ERASE_1S_1S_0_OP ( row );
624+ struct spi_mem_op op = SPINAND_OP ( spinand , blk_erase , row );
541625
542626 return spi_mem_exec_op (spinand -> spimem , & op );
543627}
@@ -557,8 +641,8 @@ static int spinand_erase_op(struct spinand_device *spinand,
557641int spinand_wait (struct spinand_device * spinand , unsigned long initial_delay_us ,
558642 unsigned long poll_delay_us , u8 * s )
559643{
560- struct spi_mem_op op = SPINAND_GET_FEATURE_1S_1S_1S_OP ( REG_STATUS ,
561- spinand -> scratchbuf );
644+ struct spi_mem_op op = SPINAND_OP ( spinand , get_feature ,
645+ REG_STATUS , spinand -> scratchbuf );
562646 u8 status ;
563647 int ret ;
564648
@@ -591,8 +675,8 @@ int spinand_wait(struct spinand_device *spinand, unsigned long initial_delay_us,
591675static int spinand_read_id_op (struct spinand_device * spinand , u8 naddr ,
592676 u8 ndummy , u8 * buf )
593677{
594- struct spi_mem_op op = SPINAND_READID_1S_1S_1S_OP (
595- naddr , ndummy , spinand -> scratchbuf , SPINAND_MAX_ID_LEN );
678+ struct spi_mem_op op = SPINAND_OP ( spinand , readid ,
679+ naddr , ndummy , spinand -> scratchbuf , SPINAND_MAX_ID_LEN );
596680 int ret ;
597681
598682 ret = spi_mem_exec_op (spinand -> spimem , & op );
@@ -604,7 +688,7 @@ static int spinand_read_id_op(struct spinand_device *spinand, u8 naddr,
604688
605689static int spinand_reset_op (struct spinand_device * spinand )
606690{
607- struct spi_mem_op op = SPINAND_RESET_1S_0_0_OP ;
691+ struct spi_mem_op op = SPINAND_OP ( spinand , reset ) ;
608692 int ret ;
609693
610694 ret = spi_mem_exec_op (spinand -> spimem , & op );
0 commit comments