imxrt-ral 0.6.2

Register access layer for all NXP i.MX RT microcontrollers
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
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
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
#[doc = "FlexSPI_FLR"]
#[repr(C)]
pub struct RegisterBlock {
    #[doc = "Module Control"]
    pub MODULE_CONTROL: crate::RWRegister<u32>,
    #[doc = "Read Command Control"]
    pub READ_COMMAND_CONTROL: crate::RWRegister<u32>,
    #[doc = "Read Register Command Setting"]
    pub READ_REGISTER_COMMAND0: crate::RWRegister<u32>,
    #[doc = "Read Command 1 setting"]
    pub READ_COMMAND1: crate::RWRegister<u32>,
    #[doc = "Read Command 2 setting"]
    pub READ_COMMAND2: crate::RWRegister<u32>,
    #[doc = "Write Command Control"]
    pub WRITE_COMMAND_CONTROL: crate::RWRegister<u32>,
    #[doc = "Write Register Command 0 Setting"]
    pub WRITE_REGISTER_COMMAND0: crate::RWRegister<u32>,
    #[doc = "Write Command 1 Setting"]
    pub WRITE_COMMAND1: crate::RWRegister<u32>,
    #[doc = "Write Command 2 Setting"]
    pub WRITE_COMMAND2: crate::RWRegister<u32>,
    #[doc = "Read Write Command Address Base"]
    pub RW_COMMAND_BASE: crate::RWRegister<u32>,
    #[doc = "Command Suit 1 Range"]
    pub CMD1_RANGE: crate::RWRegister<u32>,
    #[doc = "Command Suit 2 Range"]
    pub CMD2_RANGE: crate::RWRegister<u32>,
    #[doc = "Module Status"]
    pub MODULE_STATUS: crate::RORegister<u32>,
    #[doc = "SPI FLR interrupt"]
    pub MODULE_INT: crate::RWRegister<u32>,
    #[doc = "SPI FLR Interrupt Enable"]
    pub MODULE_INTEN: crate::RWRegister<u32>,
    #[doc = "SPI Mailbox control"]
    pub SPI_MAIL_CTRL: crate::RWRegister<u32>,
    #[doc = "SPI Mail Interrupt"]
    pub SPIMAIL: [crate::RORegister<u32>; 9usize],
}
#[doc = "Module Control"]
pub mod MODULE_CONTROL {
    #[doc = "Software Reset"]
    pub mod SWRESET {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Finished"]
            pub const FINISH: u32 = 0;
            #[doc = "Initiate"]
            pub const INITIATE: u32 = 0x01;
        }
    }
    #[doc = "SPI IO Mode Control"]
    pub mod IOMODE {
        pub const offset: u32 = 1;
        pub const mask: u32 = 0x03 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "SDR*4"]
            pub const SDRX4: u32 = 0;
            #[doc = "SDR*8"]
            pub const SDRX8: u32 = 0x01;
            #[doc = "DDR*4"]
            pub const DDRX4: u32 = 0x02;
            #[doc = "DDR*8"]
            pub const DDRX8: u32 = 0x03;
        }
    }
    #[doc = "DQS Stop Feature"]
    pub mod DQSSTOP {
        pub const offset: u32 = 3;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Disable"]
            pub const DISABLE: u32 = 0;
            #[doc = "Enable"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "Chip Select Mask"]
    pub mod CSMASK {
        pub const offset: u32 = 4;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Not masked"]
            pub const DISABLE: u32 = 0;
            #[doc = "Masked"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "Block Read"]
    pub mod BLKREAD {
        pub const offset: u32 = 5;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Allowed"]
            pub const ALLOW: u32 = 0;
            #[doc = "Blocked"]
            pub const BLOCK: u32 = 0x01;
        }
    }
    #[doc = "Block Write"]
    pub mod BLKWRITE {
        pub const offset: u32 = 6;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Allowed"]
            pub const ALLOW: u32 = 0;
            #[doc = "Blocked"]
            pub const BLOCK: u32 = 0x01;
        }
    }
    #[doc = "Block Next Write Command"]
    pub mod BLKNXTWR {
        pub const offset: u32 = 7;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Allowed"]
            pub const ALLOW: u32 = 0;
            #[doc = "Blocked"]
            pub const BLOCK: u32 = 0x01;
        }
    }
    #[doc = "Block Next Read"]
    pub mod BLKNXTRD {
        pub const offset: u32 = 8;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Allowed"]
            pub const ALLOW: u32 = 0;
            #[doc = "Blocked"]
            pub const BLOCK: u32 = 0x01;
        }
    }
    #[doc = "Allow One More Write"]
    pub mod ALLOWONEWR {
        pub const offset: u32 = 9;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Not allowed"]
            pub const DISABLE: u32 = 0;
            #[doc = "Allowed"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "Allow One More Read"]
    pub mod ALLOWONERD {
        pub const offset: u32 = 10;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Not allowed"]
            pub const DISABLE: u32 = 0;
            #[doc = "Allowed"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "AXI Command Range Base Update"]
    pub mod CMDRANGEBASEUPDATE {
        pub const offset: u32 = 11;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Not updated"]
            pub const UNCHANGED: u32 = 0;
            #[doc = "Updated"]
            pub const CHANGED: u32 = 0x01;
        }
    }
}
#[doc = "Read Command Control"]
pub mod READ_COMMAND_CONTROL {
    #[doc = "Read Fetch Size"]
    pub mod RDFETCHSIZE {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x03 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "256 bytes"]
            pub const SIZE256: u32 = 0;
            #[doc = "512 bytes"]
            pub const SIZE512: u32 = 0x01;
            #[doc = "1 KB"]
            pub const SIZE1K: u32 = 0x02;
            #[doc = "2 KB"]
            pub const SIZE2K: u32 = 0x03;
        }
    }
    #[doc = "Read Watermark Level"]
    pub mod RDWM {
        pub const offset: u32 = 2;
        pub const mask: u32 = 0x3f << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Read Outstanding"]
    pub mod RDOT {
        pub const offset: u32 = 8;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Send requests after previous leaders finish"]
            pub const DISABLE: u32 = 0;
            #[doc = "Send requests outstandingly"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "Read Water Mark Enable"]
    pub mod WMEN {
        pub const offset: u32 = 9;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Disable"]
            pub const DISABLE: u32 = 0;
            #[doc = "Enable"]
            pub const ENABLE: u32 = 0x01;
        }
    }
}
#[doc = "Read Register Command Setting"]
pub mod READ_REGISTER_COMMAND0 {
    #[doc = "Read Register Dummy Cycles"]
    pub mod DUMMYCYCLES {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Read Register Command Setting"]
    pub mod COMMANDSET {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Read Command 1 setting"]
pub mod READ_COMMAND1 {
    #[doc = "Read Command 1 Dummy Cycles"]
    pub mod DUMMYCYCLES {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Read Command 1 Setting"]
    pub mod COMMANDSET {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Read Command 2 setting"]
pub mod READ_COMMAND2 {
    #[doc = "Read Command 2 Dummy Cycles"]
    pub mod DUMMYCYCLES {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Read Command 2 Setting"]
    pub mod COMMANDSET {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Write Command Control"]
pub mod WRITE_COMMAND_CONTROL {
    #[doc = "Write Watermark"]
    pub mod WRWM {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x03 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "32 bytes"]
            pub const SIZE32: u32 = 0;
            #[doc = "64 bytes"]
            pub const SIZE64: u32 = 0x01;
            #[doc = "128 bytes"]
            pub const SIZE128: u32 = 0x02;
            #[doc = "256 bytes"]
            pub const SIZE256: u32 = 0x03;
        }
    }
}
#[doc = "Write Register Command 0 Setting"]
pub mod WRITE_REGISTER_COMMAND0 {
    #[doc = "Write Register Command Setting"]
    pub mod COMMANDSET {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Write Command 1 Setting"]
pub mod WRITE_COMMAND1 {
    #[doc = "Write Command 1 Setting"]
    pub mod COMMANDSET {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Write Command 2 Setting"]
pub mod WRITE_COMMAND2 {
    #[doc = "Write Command 2 Setting"]
    pub mod COMMANDSET {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Read Write Command Address Base"]
pub mod RW_COMMAND_BASE {
    #[doc = "Address Base 1"]
    pub mod ADDRBASE1 {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Address Base 2"]
    pub mod ADDRBASE2 {
        pub const offset: u32 = 16;
        pub const mask: u32 = 0xffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Command Suit 1 Range"]
pub mod CMD1_RANGE {
    #[doc = "Memory Range"]
    pub mod RANGE {
        pub const offset: u32 = 10;
        pub const mask: u32 = 0x003f_ffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Command Suit 2 Range"]
pub mod CMD2_RANGE {
    #[doc = "Memory Range"]
    pub mod RANGE {
        pub const offset: u32 = 10;
        pub const mask: u32 = 0x003f_ffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}
#[doc = "Module Status"]
pub mod MODULE_STATUS {
    #[doc = "Write in Progress"]
    pub mod WIP {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Not busy"]
            pub const IDLE: u32 = 0;
            #[doc = "Busy"]
            pub const BUSY: u32 = 0x01;
        }
    }
    #[doc = "AXI Read Leader Idle"]
    pub mod AXIREADIDLE {
        pub const offset: u32 = 1;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Busy"]
            pub const BUSY: u32 = 0;
            #[doc = "Idle"]
            pub const IDLE: u32 = 0x01;
        }
    }
    #[doc = "Register Read Write Idle"]
    pub mod REGRWIDLE {
        pub const offset: u32 = 2;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Busy"]
            pub const BUSY: u32 = 0;
            #[doc = "Idle"]
            pub const IDLE: u32 = 0x01;
        }
    }
    #[doc = "SEQ Controller Idle"]
    pub mod SEQIDLE {
        pub const offset: u32 = 3;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Busy"]
            pub const BUSY: u32 = 0;
            #[doc = "Idle"]
            pub const IDLE: u32 = 0x01;
        }
    }
    #[doc = "Read Out-of-Range Counter"]
    pub mod RDOFR {
        pub const offset: u32 = 4;
        pub const mask: u32 = 0x0f << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Write Out-of-Range Counter"]
    pub mod WROFR {
        pub const offset: u32 = 8;
        pub const mask: u32 = 0x0f << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
    #[doc = "Allow AXI Read Access"]
    pub mod ALLOWAXIRD {
        pub const offset: u32 = 12;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Denied"]
            pub const DENY: u32 = 0;
            #[doc = "Allowed"]
            pub const ALLOW: u32 = 0x01;
        }
    }
    #[doc = "Allow AXI Write Access"]
    pub mod ALLOWAXIWR {
        pub const offset: u32 = 13;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Denied"]
            pub const DENY: u32 = 0;
            #[doc = "Allowed"]
            pub const ALLOW: u32 = 0x01;
        }
    }
}
#[doc = "SPI FLR interrupt"]
pub mod MODULE_INT {
    #[doc = "Write Overflow Interrupt"]
    pub mod WOF {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Did not occur"]
            pub const NONE: u32 = 0;
            #[doc = "Occurred"]
            pub const OVERFLOW: u32 = 0x01;
        }
    }
    #[doc = "Read Underflow"]
    pub mod RUF {
        pub const offset: u32 = 1;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Did not occur"]
            pub const NONE: u32 = 0;
            #[doc = "Occurred"]
            pub const UNDERFLOW: u32 = 0x01;
        }
    }
    #[doc = "Error Command"]
    pub mod ERRCMD {
        pub const offset: u32 = 2;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Not received"]
            pub const NONE: u32 = 0;
            #[doc = "Received"]
            pub const ERROR: u32 = 0x01;
        }
    }
}
#[doc = "SPI FLR Interrupt Enable"]
pub mod MODULE_INTEN {
    #[doc = "Write Overflow Interrupt Enable"]
    pub mod WOFEN {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Disable"]
            pub const DISABLE: u32 = 0;
            #[doc = "Enable"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "Read Underflow Interrupt Enable"]
    pub mod RUFEN {
        pub const offset: u32 = 1;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Disable"]
            pub const DISABLE: u32 = 0;
            #[doc = "Enable"]
            pub const ENABLE: u32 = 0x01;
        }
    }
    #[doc = "Error Command Interrupt Enable"]
    pub mod ERRCMDEN {
        pub const offset: u32 = 2;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Disable"]
            pub const DISABLE: u32 = 0;
            #[doc = "Enable"]
            pub const ENABLE: u32 = 0x01;
        }
    }
}
#[doc = "SPI Mailbox control"]
pub mod SPI_MAIL_CTRL {
    #[doc = "Clear Interrupt"]
    pub mod CLRINT {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Do not clear"]
            pub const NONE: u32 = 0;
            #[doc = "Clear"]
            pub const CLEAR: u32 = 0x01;
        }
    }
    #[doc = "SPI Leader Interrupt Enable"]
    pub mod SPIINTEN {
        pub const offset: u32 = 1;
        pub const mask: u32 = 0x01 << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {
            #[doc = "Disable"]
            pub const DISABLE: u32 = 0;
            #[doc = "Enable"]
            pub const ENABLE: u32 = 0x01;
        }
    }
}
#[doc = "SPI Mail Interrupt"]
pub mod SPIMAIL {
    #[doc = "Specifies the use of MAILn for Inter-Processor Communication (IPC) protocol for SPI leader and follower communication"]
    pub mod MAILN {
        pub const offset: u32 = 0;
        pub const mask: u32 = 0xffff_ffff << offset;
        pub mod R {}
        pub mod W {}
        pub mod RW {}
    }
}