Skip to content

Commit df8b970

Browse files
masahir0yBoris Brezillon
authored andcommitted
mtd: nand: denali: use BIT() and GENMASK() for register macros
Use BIT() and GENMASK() for register field macros. This will make it easier to compare the macros with the register description in the Denali User's Guide. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
1 parent 2b8c92b commit df8b970

File tree

1 file changed

+119
-125
lines changed

1 file changed

+119
-125
lines changed

drivers/mtd/nand/denali.h

Lines changed: 119 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -24,273 +24,267 @@
2424
#include <linux/mtd/nand.h>
2525

2626
#define DEVICE_RESET 0x0
27-
#define DEVICE_RESET__BANK0 0x0001
28-
#define DEVICE_RESET__BANK1 0x0002
29-
#define DEVICE_RESET__BANK2 0x0004
30-
#define DEVICE_RESET__BANK3 0x0008
27+
#define DEVICE_RESET__BANK(bank) BIT(bank)
3128

3229
#define TRANSFER_SPARE_REG 0x10
33-
#define TRANSFER_SPARE_REG__FLAG 0x0001
30+
#define TRANSFER_SPARE_REG__FLAG BIT(0)
3431

3532
#define LOAD_WAIT_CNT 0x20
36-
#define LOAD_WAIT_CNT__VALUE 0xffff
33+
#define LOAD_WAIT_CNT__VALUE GENMASK(15, 0)
3734

3835
#define PROGRAM_WAIT_CNT 0x30
39-
#define PROGRAM_WAIT_CNT__VALUE 0xffff
36+
#define PROGRAM_WAIT_CNT__VALUE GENMASK(15, 0)
4037

4138
#define ERASE_WAIT_CNT 0x40
42-
#define ERASE_WAIT_CNT__VALUE 0xffff
39+
#define ERASE_WAIT_CNT__VALUE GENMASK(15, 0)
4340

4441
#define INT_MON_CYCCNT 0x50
45-
#define INT_MON_CYCCNT__VALUE 0xffff
42+
#define INT_MON_CYCCNT__VALUE GENMASK(15, 0)
4643

4744
#define RB_PIN_ENABLED 0x60
48-
#define RB_PIN_ENABLED__BANK0 0x0001
49-
#define RB_PIN_ENABLED__BANK1 0x0002
50-
#define RB_PIN_ENABLED__BANK2 0x0004
51-
#define RB_PIN_ENABLED__BANK3 0x0008
45+
#define RB_PIN_ENABLED__BANK(bank) BIT(bank)
5246

5347
#define MULTIPLANE_OPERATION 0x70
54-
#define MULTIPLANE_OPERATION__FLAG 0x0001
48+
#define MULTIPLANE_OPERATION__FLAG BIT(0)
5549

5650
#define MULTIPLANE_READ_ENABLE 0x80
57-
#define MULTIPLANE_READ_ENABLE__FLAG 0x0001
51+
#define MULTIPLANE_READ_ENABLE__FLAG BIT(0)
5852

5953
#define COPYBACK_DISABLE 0x90
60-
#define COPYBACK_DISABLE__FLAG 0x0001
54+
#define COPYBACK_DISABLE__FLAG BIT(0)
6155

6256
#define CACHE_WRITE_ENABLE 0xa0
63-
#define CACHE_WRITE_ENABLE__FLAG 0x0001
57+
#define CACHE_WRITE_ENABLE__FLAG BIT(0)
6458

6559
#define CACHE_READ_ENABLE 0xb0
66-
#define CACHE_READ_ENABLE__FLAG 0x0001
60+
#define CACHE_READ_ENABLE__FLAG BIT(0)
6761

6862
#define PREFETCH_MODE 0xc0
69-
#define PREFETCH_MODE__PREFETCH_EN 0x0001
70-
#define PREFETCH_MODE__PREFETCH_BURST_LENGTH 0xfff0
63+
#define PREFETCH_MODE__PREFETCH_EN BIT(0)
64+
#define PREFETCH_MODE__PREFETCH_BURST_LENGTH GENMASK(15, 4)
7165

7266
#define CHIP_ENABLE_DONT_CARE 0xd0
73-
#define CHIP_EN_DONT_CARE__FLAG 0x01
67+
#define CHIP_EN_DONT_CARE__FLAG BIT(0)
7468

7569
#define ECC_ENABLE 0xe0
76-
#define ECC_ENABLE__FLAG 0x0001
70+
#define ECC_ENABLE__FLAG BIT(0)
7771

7872
#define GLOBAL_INT_ENABLE 0xf0
79-
#define GLOBAL_INT_EN_FLAG 0x01
73+
#define GLOBAL_INT_EN_FLAG BIT(0)
8074

8175
#define WE_2_RE 0x100
82-
#define WE_2_RE__VALUE 0x003f
76+
#define WE_2_RE__VALUE GENMASK(5, 0)
8377

8478
#define ADDR_2_DATA 0x110
85-
#define ADDR_2_DATA__VALUE 0x003f
79+
#define ADDR_2_DATA__VALUE GENMASK(5, 0)
8680

8781
#define RE_2_WE 0x120
88-
#define RE_2_WE__VALUE 0x003f
82+
#define RE_2_WE__VALUE GENMASK(5, 0)
8983

9084
#define ACC_CLKS 0x130
91-
#define ACC_CLKS__VALUE 0x000f
85+
#define ACC_CLKS__VALUE GENMASK(3, 0)
9286

9387
#define NUMBER_OF_PLANES 0x140
94-
#define NUMBER_OF_PLANES__VALUE 0x0007
88+
#define NUMBER_OF_PLANES__VALUE GENMASK(2, 0)
9589

9690
#define PAGES_PER_BLOCK 0x150
97-
#define PAGES_PER_BLOCK__VALUE 0xffff
91+
#define PAGES_PER_BLOCK__VALUE GENMASK(15, 0)
9892

9993
#define DEVICE_WIDTH 0x160
100-
#define DEVICE_WIDTH__VALUE 0x0003
94+
#define DEVICE_WIDTH__VALUE GENMASK(1, 0)
10195

10296
#define DEVICE_MAIN_AREA_SIZE 0x170
103-
#define DEVICE_MAIN_AREA_SIZE__VALUE 0xffff
97+
#define DEVICE_MAIN_AREA_SIZE__VALUE GENMASK(15, 0)
10498

10599
#define DEVICE_SPARE_AREA_SIZE 0x180
106-
#define DEVICE_SPARE_AREA_SIZE__VALUE 0xffff
100+
#define DEVICE_SPARE_AREA_SIZE__VALUE GENMASK(15, 0)
107101

108102
#define TWO_ROW_ADDR_CYCLES 0x190
109-
#define TWO_ROW_ADDR_CYCLES__FLAG 0x0001
103+
#define TWO_ROW_ADDR_CYCLES__FLAG BIT(0)
110104

111105
#define MULTIPLANE_ADDR_RESTRICT 0x1a0
112-
#define MULTIPLANE_ADDR_RESTRICT__FLAG 0x0001
106+
#define MULTIPLANE_ADDR_RESTRICT__FLAG BIT(0)
113107

114108
#define ECC_CORRECTION 0x1b0
115-
#define ECC_CORRECTION__VALUE 0x001f
109+
#define ECC_CORRECTION__VALUE GENMASK(4, 0)
116110

117111
#define READ_MODE 0x1c0
118-
#define READ_MODE__VALUE 0x000f
112+
#define READ_MODE__VALUE GENMASK(3, 0)
119113

120114
#define WRITE_MODE 0x1d0
121-
#define WRITE_MODE__VALUE 0x000f
115+
#define WRITE_MODE__VALUE GENMASK(3, 0)
122116

123117
#define COPYBACK_MODE 0x1e0
124-
#define COPYBACK_MODE__VALUE 0x000f
118+
#define COPYBACK_MODE__VALUE GENMASK(3, 0)
125119

126120
#define RDWR_EN_LO_CNT 0x1f0
127-
#define RDWR_EN_LO_CNT__VALUE 0x001f
121+
#define RDWR_EN_LO_CNT__VALUE GENMASK(4, 0)
128122

129123
#define RDWR_EN_HI_CNT 0x200
130-
#define RDWR_EN_HI_CNT__VALUE 0x001f
124+
#define RDWR_EN_HI_CNT__VALUE GENMASK(4, 0)
131125

132126
#define MAX_RD_DELAY 0x210
133-
#define MAX_RD_DELAY__VALUE 0x000f
127+
#define MAX_RD_DELAY__VALUE GENMASK(3, 0)
134128

135129
#define CS_SETUP_CNT 0x220
136-
#define CS_SETUP_CNT__VALUE 0x001f
130+
#define CS_SETUP_CNT__VALUE GENMASK(4, 0)
137131

138132
#define SPARE_AREA_SKIP_BYTES 0x230
139-
#define SPARE_AREA_SKIP_BYTES__VALUE 0x003f
133+
#define SPARE_AREA_SKIP_BYTES__VALUE GENMASK(5, 0)
140134

141135
#define SPARE_AREA_MARKER 0x240
142-
#define SPARE_AREA_MARKER__VALUE 0xffff
136+
#define SPARE_AREA_MARKER__VALUE GENMASK(15, 0)
143137

144138
#define DEVICES_CONNECTED 0x250
145-
#define DEVICES_CONNECTED__VALUE 0x0007
139+
#define DEVICES_CONNECTED__VALUE GENMASK(2, 0)
146140

147141
#define DIE_MASK 0x260
148-
#define DIE_MASK__VALUE 0x00ff
142+
#define DIE_MASK__VALUE GENMASK(7, 0)
149143

150144
#define FIRST_BLOCK_OF_NEXT_PLANE 0x270
151-
#define FIRST_BLOCK_OF_NEXT_PLANE__VALUE 0xffff
145+
#define FIRST_BLOCK_OF_NEXT_PLANE__VALUE GENMASK(15, 0)
152146

153147
#define WRITE_PROTECT 0x280
154-
#define WRITE_PROTECT__FLAG 0x0001
148+
#define WRITE_PROTECT__FLAG BIT(0)
155149

156150
#define RE_2_RE 0x290
157-
#define RE_2_RE__VALUE 0x003f
151+
#define RE_2_RE__VALUE GENMASK(5, 0)
158152

159153
#define MANUFACTURER_ID 0x300
160-
#define MANUFACTURER_ID__VALUE 0x00ff
154+
#define MANUFACTURER_ID__VALUE GENMASK(7, 0)
161155

162156
#define DEVICE_ID 0x310
163-
#define DEVICE_ID__VALUE 0x00ff
157+
#define DEVICE_ID__VALUE GENMASK(7, 0)
164158

165159
#define DEVICE_PARAM_0 0x320
166-
#define DEVICE_PARAM_0__VALUE 0x00ff
160+
#define DEVICE_PARAM_0__VALUE GENMASK(7, 0)
167161

168162
#define DEVICE_PARAM_1 0x330
169-
#define DEVICE_PARAM_1__VALUE 0x00ff
163+
#define DEVICE_PARAM_1__VALUE GENMASK(7, 0)
170164

171165
#define DEVICE_PARAM_2 0x340
172-
#define DEVICE_PARAM_2__VALUE 0x00ff
166+
#define DEVICE_PARAM_2__VALUE GENMASK(7, 0)
173167

174168
#define LOGICAL_PAGE_DATA_SIZE 0x350
175-
#define LOGICAL_PAGE_DATA_SIZE__VALUE 0xffff
169+
#define LOGICAL_PAGE_DATA_SIZE__VALUE GENMASK(15, 0)
176170

177171
#define LOGICAL_PAGE_SPARE_SIZE 0x360
178-
#define LOGICAL_PAGE_SPARE_SIZE__VALUE 0xffff
172+
#define LOGICAL_PAGE_SPARE_SIZE__VALUE GENMASK(15, 0)
179173

180174
#define REVISION 0x370
181-
#define REVISION__VALUE 0xffff
175+
#define REVISION__VALUE GENMASK(15, 0)
182176

183177
#define ONFI_DEVICE_FEATURES 0x380
184-
#define ONFI_DEVICE_FEATURES__VALUE 0x003f
178+
#define ONFI_DEVICE_FEATURES__VALUE GENMASK(5, 0)
185179

186180
#define ONFI_OPTIONAL_COMMANDS 0x390
187-
#define ONFI_OPTIONAL_COMMANDS__VALUE 0x003f
181+
#define ONFI_OPTIONAL_COMMANDS__VALUE GENMASK(5, 0)
188182

189183
#define ONFI_TIMING_MODE 0x3a0
190-
#define ONFI_TIMING_MODE__VALUE 0x003f
184+
#define ONFI_TIMING_MODE__VALUE GENMASK(5, 0)
191185

192186
#define ONFI_PGM_CACHE_TIMING_MODE 0x3b0
193-
#define ONFI_PGM_CACHE_TIMING_MODE__VALUE 0x003f
187+
#define ONFI_PGM_CACHE_TIMING_MODE__VALUE GENMASK(5, 0)
194188

195189
#define ONFI_DEVICE_NO_OF_LUNS 0x3c0
196-
#define ONFI_DEVICE_NO_OF_LUNS__NO_OF_LUNS 0x00ff
197-
#define ONFI_DEVICE_NO_OF_LUNS__ONFI_DEVICE 0x0100
190+
#define ONFI_DEVICE_NO_OF_LUNS__NO_OF_LUNS GENMASK(7, 0)
191+
#define ONFI_DEVICE_NO_OF_LUNS__ONFI_DEVICE BIT(8)
198192

199193
#define ONFI_DEVICE_NO_OF_BLOCKS_PER_LUN_L 0x3d0
200-
#define ONFI_DEVICE_NO_OF_BLOCKS_PER_LUN_L__VALUE 0xffff
194+
#define ONFI_DEVICE_NO_OF_BLOCKS_PER_LUN_L__VALUE GENMASK(15, 0)
201195

202196
#define ONFI_DEVICE_NO_OF_BLOCKS_PER_LUN_U 0x3e0
203-
#define ONFI_DEVICE_NO_OF_BLOCKS_PER_LUN_U__VALUE 0xffff
204-
205-
#define FEATURES 0x3f0
206-
#define FEATURES__N_BANKS 0x0003
207-
#define FEATURES__ECC_MAX_ERR 0x003c
208-
#define FEATURES__DMA 0x0040
209-
#define FEATURES__CMD_DMA 0x0080
210-
#define FEATURES__PARTITION 0x0100
211-
#define FEATURES__XDMA_SIDEBAND 0x0200
212-
#define FEATURES__GPREG 0x0400
213-
#define FEATURES__INDEX_ADDR 0x0800
197+
#define ONFI_DEVICE_NO_OF_BLOCKS_PER_LUN_U__VALUE GENMASK(15, 0)
198+
199+
#define FEATURES 0x3f0
200+
#define FEATURES__N_BANKS GENMASK(1, 0)
201+
#define FEATURES__ECC_MAX_ERR GENMASK(5, 2)
202+
#define FEATURES__DMA BIT(6)
203+
#define FEATURES__CMD_DMA BIT(7)
204+
#define FEATURES__PARTITION BIT(8)
205+
#define FEATURES__XDMA_SIDEBAND BIT(9)
206+
#define FEATURES__GPREG BIT(10)
207+
#define FEATURES__INDEX_ADDR BIT(11)
214208

215209
#define TRANSFER_MODE 0x400
216-
#define TRANSFER_MODE__VALUE 0x0003
210+
#define TRANSFER_MODE__VALUE GENMASK(1, 0)
217211

218-
#define INTR_STATUS(__bank) (0x410 + ((__bank) * 0x50))
219-
#define INTR_EN(__bank) (0x420 + ((__bank) * 0x50))
212+
#define INTR_STATUS(bank) (0x410 + (bank) * 0x50)
213+
#define INTR_EN(bank) (0x420 + (bank) * 0x50)
220214
/* bit[1:0] is used differently depending on IP version */
221-
#define INTR__ECC_UNCOR_ERR 0x0001 /* new IP */
222-
#define INTR__ECC_TRANSACTION_DONE 0x0001 /* old IP */
223-
#define INTR__ECC_ERR 0x0002 /* old IP */
224-
#define INTR__DMA_CMD_COMP 0x0004
225-
#define INTR__TIME_OUT 0x0008
226-
#define INTR__PROGRAM_FAIL 0x0010
227-
#define INTR__ERASE_FAIL 0x0020
228-
#define INTR__LOAD_COMP 0x0040
229-
#define INTR__PROGRAM_COMP 0x0080
230-
#define INTR__ERASE_COMP 0x0100
231-
#define INTR__PIPE_CPYBCK_CMD_COMP 0x0200
232-
#define INTR__LOCKED_BLK 0x0400
233-
#define INTR__UNSUP_CMD 0x0800
234-
#define INTR__INT_ACT 0x1000
235-
#define INTR__RST_COMP 0x2000
236-
#define INTR__PIPE_CMD_ERR 0x4000
237-
#define INTR__PAGE_XFER_INC 0x8000
238-
239-
#define PAGE_CNT(__bank) (0x430 + ((__bank) * 0x50))
240-
#define ERR_PAGE_ADDR(__bank) (0x440 + ((__bank) * 0x50))
241-
#define ERR_BLOCK_ADDR(__bank) (0x450 + ((__bank) * 0x50))
215+
#define INTR__ECC_UNCOR_ERR BIT(0) /* new IP */
216+
#define INTR__ECC_TRANSACTION_DONE BIT(0) /* old IP */
217+
#define INTR__ECC_ERR BIT(1) /* old IP */
218+
#define INTR__DMA_CMD_COMP BIT(2)
219+
#define INTR__TIME_OUT BIT(3)
220+
#define INTR__PROGRAM_FAIL BIT(4)
221+
#define INTR__ERASE_FAIL BIT(5)
222+
#define INTR__LOAD_COMP BIT(6)
223+
#define INTR__PROGRAM_COMP BIT(7)
224+
#define INTR__ERASE_COMP BIT(8)
225+
#define INTR__PIPE_CPYBCK_CMD_COMP BIT(9)
226+
#define INTR__LOCKED_BLK BIT(10)
227+
#define INTR__UNSUP_CMD BIT(11)
228+
#define INTR__INT_ACT BIT(12)
229+
#define INTR__RST_COMP BIT(13)
230+
#define INTR__PIPE_CMD_ERR BIT(14)
231+
#define INTR__PAGE_XFER_INC BIT(15)
232+
233+
#define PAGE_CNT(bank) (0x430 + (bank) * 0x50)
234+
#define ERR_PAGE_ADDR(bank) (0x440 + (bank) * 0x50)
235+
#define ERR_BLOCK_ADDR(bank) (0x450 + (bank) * 0x50)
242236

243237
#define ECC_THRESHOLD 0x600
244-
#define ECC_THRESHOLD__VALUE 0x03ff
238+
#define ECC_THRESHOLD__VALUE GENMASK(9, 0)
245239

246240
#define ECC_ERROR_BLOCK_ADDRESS 0x610
247-
#define ECC_ERROR_BLOCK_ADDRESS__VALUE 0xffff
241+
#define ECC_ERROR_BLOCK_ADDRESS__VALUE GENMASK(15, 0)
248242

249243
#define ECC_ERROR_PAGE_ADDRESS 0x620
250-
#define ECC_ERROR_PAGE_ADDRESS__VALUE 0x0fff
251-
#define ECC_ERROR_PAGE_ADDRESS__BANK 0xf000
244+
#define ECC_ERROR_PAGE_ADDRESS__VALUE GENMASK(11, 0)
245+
#define ECC_ERROR_PAGE_ADDRESS__BANK GENMASK(15, 12)
252246

253247
#define ECC_ERROR_ADDRESS 0x630
254-
#define ECC_ERROR_ADDRESS__OFFSET 0x0fff
255-
#define ECC_ERROR_ADDRESS__SECTOR_NR 0xf000
248+
#define ECC_ERROR_ADDRESS__OFFSET GENMASK(11, 0)
249+
#define ECC_ERROR_ADDRESS__SECTOR_NR GENMASK(15, 12)
256250

257251
#define ERR_CORRECTION_INFO 0x640
258-
#define ERR_CORRECTION_INFO__BYTEMASK 0x00ff
259-
#define ERR_CORRECTION_INFO__DEVICE_NR 0x0f00
260-
#define ERR_CORRECTION_INFO__ERROR_TYPE 0x4000
261-
#define ERR_CORRECTION_INFO__LAST_ERR_INFO 0x8000
252+
#define ERR_CORRECTION_INFO__BYTEMASK GENMASK(7, 0)
253+
#define ERR_CORRECTION_INFO__DEVICE_NR GENMASK(11, 8)
254+
#define ERR_CORRECTION_INFO__ERROR_TYPE BIT(14)
255+
#define ERR_CORRECTION_INFO__LAST_ERR_INFO BIT(15)
262256

263257
#define ECC_COR_INFO(bank) (0x650 + (bank) / 2 * 0x10)
264258
#define ECC_COR_INFO__SHIFT(bank) ((bank) % 2 * 8)
265-
#define ECC_COR_INFO__MAX_ERRORS 0x007f
266-
#define ECC_COR_INFO__UNCOR_ERR 0x0080
259+
#define ECC_COR_INFO__MAX_ERRORS GENMASK(6, 0)
260+
#define ECC_COR_INFO__UNCOR_ERR BIT(7)
267261

268262
#define DMA_ENABLE 0x700
269-
#define DMA_ENABLE__FLAG 0x0001
263+
#define DMA_ENABLE__FLAG BIT(0)
270264

271265
#define IGNORE_ECC_DONE 0x710
272-
#define IGNORE_ECC_DONE__FLAG 0x0001
266+
#define IGNORE_ECC_DONE__FLAG BIT(0)
273267

274268
#define DMA_INTR 0x720
275269
#define DMA_INTR_EN 0x730
276-
#define DMA_INTR__TARGET_ERROR 0x0001
277-
#define DMA_INTR__DESC_COMP_CHANNEL0 0x0002
278-
#define DMA_INTR__DESC_COMP_CHANNEL1 0x0004
279-
#define DMA_INTR__DESC_COMP_CHANNEL2 0x0008
280-
#define DMA_INTR__DESC_COMP_CHANNEL3 0x0010
281-
#define DMA_INTR__MEMCOPY_DESC_COMP 0x0020
270+
#define DMA_INTR__TARGET_ERROR BIT(0)
271+
#define DMA_INTR__DESC_COMP_CHANNEL0 BIT(1)
272+
#define DMA_INTR__DESC_COMP_CHANNEL1 BIT(2)
273+
#define DMA_INTR__DESC_COMP_CHANNEL2 BIT(3)
274+
#define DMA_INTR__DESC_COMP_CHANNEL3 BIT(4)
275+
#define DMA_INTR__MEMCOPY_DESC_COMP BIT(5)
282276

283277
#define TARGET_ERR_ADDR_LO 0x740
284-
#define TARGET_ERR_ADDR_LO__VALUE 0xffff
278+
#define TARGET_ERR_ADDR_LO__VALUE GENMASK(15, 0)
285279

286280
#define TARGET_ERR_ADDR_HI 0x750
287-
#define TARGET_ERR_ADDR_HI__VALUE 0xffff
281+
#define TARGET_ERR_ADDR_HI__VALUE GENMASK(15, 0)
288282

289283
#define CHNL_ACTIVE 0x760
290-
#define CHNL_ACTIVE__CHANNEL0 0x0001
291-
#define CHNL_ACTIVE__CHANNEL1 0x0002
292-
#define CHNL_ACTIVE__CHANNEL2 0x0004
293-
#define CHNL_ACTIVE__CHANNEL3 0x0008
284+
#define CHNL_ACTIVE__CHANNEL0 BIT(0)
285+
#define CHNL_ACTIVE__CHANNEL1 BIT(1)
286+
#define CHNL_ACTIVE__CHANNEL2 BIT(2)
287+
#define CHNL_ACTIVE__CHANNEL3 BIT(3)
294288

295289
#define FAIL 1 /*failed flag*/
296290
#define PASS 0 /*success flag*/

0 commit comments

Comments
 (0)