Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  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
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
/* SPDX-License-Identifier: ISC */

#ifndef __MT7603_REGS_H
#define __MT7603_REGS_H

#define MT_HW_REV			0x1000
#define MT_HW_CHIPID			0x1008
#define MT_TOP_MISC2			0x1134

#define MT_MCU_BASE			0x2000
#define MT_MCU(ofs)			(MT_MCU_BASE + (ofs))

#define MT_MCU_PCIE_REMAP_1		MT_MCU(0x500)
#define MT_MCU_PCIE_REMAP_1_OFFSET	GENMASK(17, 0)
#define MT_MCU_PCIE_REMAP_1_BASE	GENMASK(31, 18)

#define MT_MCU_PCIE_REMAP_2		MT_MCU(0x504)
#define MT_MCU_PCIE_REMAP_2_OFFSET	GENMASK(18, 0)
#define MT_MCU_PCIE_REMAP_2_BASE	GENMASK(31, 19)

#define MT_HIF_BASE			0x4000
#define MT_HIF(ofs)			(MT_HIF_BASE + (ofs))

#define MT_INT_SOURCE_CSR		MT_HIF(0x200)
#define MT_INT_MASK_CSR			MT_HIF(0x204)
#define MT_DELAY_INT_CFG		MT_HIF(0x210)

#define MT_INT_RX_DONE(_n)		BIT(_n)
#define MT_INT_RX_DONE_ALL		GENMASK(1, 0)
#define MT_INT_TX_DONE_ALL		GENMASK(19, 4)
#define MT_INT_TX_DONE(_n)		BIT((_n) + 4)

#define MT_INT_RX_COHERENT		BIT(20)
#define MT_INT_TX_COHERENT		BIT(21)
#define MT_INT_MAC_IRQ3			BIT(27)

#define MT_INT_MCU_CMD			BIT(30)

#define MT_WPDMA_GLO_CFG		MT_HIF(0x208)
#define MT_WPDMA_GLO_CFG_TX_DMA_EN	BIT(0)
#define MT_WPDMA_GLO_CFG_TX_DMA_BUSY	BIT(1)
#define MT_WPDMA_GLO_CFG_RX_DMA_EN	BIT(2)
#define MT_WPDMA_GLO_CFG_RX_DMA_BUSY	BIT(3)
#define MT_WPDMA_GLO_CFG_DMA_BURST_SIZE	GENMASK(5, 4)
#define MT_WPDMA_GLO_CFG_TX_WRITEBACK_DONE	BIT(6)
#define MT_WPDMA_GLO_CFG_BIG_ENDIAN	BIT(7)
#define MT_WPDMA_GLO_CFG_HDR_SEG_LEN	GENMASK(15, 8)
#define MT_WPDMA_GLO_CFG_SW_RESET	BIT(24)
#define MT_WPDMA_GLO_CFG_FORCE_TX_EOF	BIT(25)
#define MT_WPDMA_GLO_CFG_CLK_GATE_DIS	BIT(30)
#define MT_WPDMA_GLO_CFG_RX_2B_OFFSET	BIT(31)

#define MT_WPDMA_RST_IDX		MT_HIF(0x20c)

#define MT_WPDMA_DEBUG			MT_HIF(0x244)
#define MT_WPDMA_DEBUG_VALUE		GENMASK(17, 0)
#define MT_WPDMA_DEBUG_SEL		BIT(27)
#define MT_WPDMA_DEBUG_IDX		GENMASK(31, 28)

#define MT_TX_RING_BASE			MT_HIF(0x300)
#define MT_RX_RING_BASE			MT_HIF(0x400)

#define MT_TXTIME_THRESH_BASE		MT_HIF(0x500)
#define MT_TXTIME_THRESH(n)		(MT_TXTIME_THRESH_BASE + ((n) * 4))

#define MT_PAGE_COUNT_BASE		MT_HIF(0x540)
#define MT_PAGE_COUNT(n)		(MT_PAGE_COUNT_BASE + ((n) * 4))

#define MT_SCH_1			MT_HIF(0x588)
#define MT_SCH_2			MT_HIF(0x58c)
#define MT_SCH_3			MT_HIF(0x590)

#define MT_SCH_4			MT_HIF(0x594)
#define MT_SCH_4_FORCE_QID		GENMASK(4, 0)
#define MT_SCH_4_BYPASS			BIT(5)
#define MT_SCH_4_RESET			BIT(8)

#define MT_GROUP_THRESH_BASE		MT_HIF(0x598)
#define MT_GROUP_THRESH(n)		(MT_GROUP_THRESH_BASE + ((n) * 4))

#define MT_QUEUE_PRIORITY_1		MT_HIF(0x580)
#define MT_QUEUE_PRIORITY_2		MT_HIF(0x584)

#define MT_BMAP_0			MT_HIF(0x5b0)
#define MT_BMAP_1			MT_HIF(0x5b4)
#define MT_BMAP_2			MT_HIF(0x5b8)

#define MT_HIGH_PRIORITY_1		MT_HIF(0x5bc)
#define MT_HIGH_PRIORITY_2		MT_HIF(0x5c0)

#define MT_PRIORITY_MASK		MT_HIF(0x5c4)

#define MT_RSV_MAX_THRESH		MT_HIF(0x5c8)

#define MT_PSE_BASE			0x8000
#define MT_PSE(ofs)			(MT_PSE_BASE + (ofs))

#define MT_MCU_DEBUG_RESET		MT_PSE(0x16c)
#define MT_MCU_DEBUG_RESET_PSE		BIT(0)
#define MT_MCU_DEBUG_RESET_PSE_S	BIT(1)
#define MT_MCU_DEBUG_RESET_QUEUES	GENMASK(6, 2)

#define MT_PSE_FC_P0			MT_PSE(0x120)
#define MT_PSE_FC_P0_MIN_RESERVE	GENMASK(11, 0)
#define MT_PSE_FC_P0_MAX_QUOTA		GENMASK(27, 16)

#define MT_PSE_FRP			MT_PSE(0x138)
#define MT_PSE_FRP_P0			GENMASK(2, 0)
#define MT_PSE_FRP_P1			GENMASK(5, 3)
#define MT_PSE_FRP_P2_RQ0		GENMASK(8, 6)
#define MT_PSE_FRP_P2_RQ1		GENMASK(11, 9)
#define MT_PSE_FRP_P2_RQ2		GENMASK(14, 12)

#define MT_FC_RSV_COUNT_0		MT_PSE(0x13c)
#define MT_FC_RSV_COUNT_0_P0		GENMASK(11, 0)
#define MT_FC_RSV_COUNT_0_P1		GENMASK(27, 16)

#define MT_FC_SP2_Q0Q1			MT_PSE(0x14c)
#define MT_FC_SP2_Q0Q1_SRC_COUNT_Q0	GENMASK(11, 0)
#define MT_FC_SP2_Q0Q1_SRC_COUNT_Q1	GENMASK(27, 16)

#define MT_PSE_FW_SHARED		MT_PSE(0x17c)

#define MT_PSE_RTA			MT_PSE(0x194)
#define MT_PSE_RTA_QUEUE_ID		GENMASK(4, 0)
#define MT_PSE_RTA_PORT_ID		GENMASK(6, 5)
#define MT_PSE_RTA_REDIRECT_EN		BIT(7)
#define MT_PSE_RTA_TAG_ID		GENMASK(15, 8)
#define MT_PSE_RTA_WRITE		BIT(16)
#define MT_PSE_RTA_BUSY			BIT(31)

#define MT_WF_PHY_BASE			0x10000
#define MT_WF_PHY_OFFSET		0x1000
#define MT_WF_PHY(ofs)			(MT_WF_PHY_BASE + (ofs))

#define MT_AGC_BASE			MT_WF_PHY(0x500)
#define MT_AGC(n)			(MT_AGC_BASE + ((n) * 4))

#define MT_AGC1_BASE			MT_WF_PHY(0x1500)
#define MT_AGC1(n)			(MT_AGC1_BASE + ((n) * 4))

#define MT_AGC_41_RSSI_0		GENMASK(23, 16)
#define MT_AGC_41_RSSI_1		GENMASK(7, 0)

#define MT_RXTD_BASE			MT_WF_PHY(0x600)
#define MT_RXTD(n)			(MT_RXTD_BASE + ((n) * 4))

#define MT_RXTD_6_ACI_TH		GENMASK(4, 0)
#define MT_RXTD_6_CCAED_TH		GENMASK(14, 8)

#define MT_RXTD_8_LOWER_SIGNAL		GENMASK(5, 0)

#define MT_RXTD_13_ACI_TH_EN		BIT(0)

#define MT_WF_PHY_CR_TSSI_BASE		MT_WF_PHY(0xd00)
#define MT_WF_PHY_CR_TSSI(phy, n)	(MT_WF_PHY_CR_TSSI_BASE +	\
					 ((phy) * MT_WF_PHY_OFFSET) +	\
					 ((n) * 4))

#define MT_PHYCTRL_BASE			MT_WF_PHY(0x4100)
#define MT_PHYCTRL(n)			(MT_PHYCTRL_BASE + ((n) * 4))

#define MT_PHYCTRL_2_STATUS_RESET	BIT(6)
#define MT_PHYCTRL_2_STATUS_EN		BIT(7)

#define MT_PHYCTRL_STAT_PD		MT_PHYCTRL(3)
#define MT_PHYCTRL_STAT_PD_OFDM		GENMASK(31, 16)
#define MT_PHYCTRL_STAT_PD_CCK		GENMASK(15, 0)

#define MT_PHYCTRL_STAT_MDRDY		MT_PHYCTRL(8)
#define MT_PHYCTRL_STAT_MDRDY_OFDM	GENMASK(31, 16)
#define MT_PHYCTRL_STAT_MDRDY_CCK	GENMASK(15, 0)

#define MT_WF_AGG_BASE			0x21200
#define MT_WF_AGG(ofs)			(MT_WF_AGG_BASE + (ofs))

#define MT_AGG_ARCR			MT_WF_AGG(0x010)
#define MT_AGG_ARCR_INIT_RATE1		BIT(0)
#define MT_AGG_ARCR_FB_SGI_DISABLE	BIT(1)
#define MT_AGG_ARCR_RATE8_DOWN_WRAP	BIT(2)
#define MT_AGG_ARCR_RTS_RATE_THR	GENMASK(12, 8)
#define MT_AGG_ARCR_RATE_DOWN_RATIO	GENMASK(17, 16)
#define MT_AGG_ARCR_RATE_DOWN_RATIO_EN	BIT(19)
#define MT_AGG_ARCR_RATE_UP_EXTRA_TH	GENMASK(22, 20)
#define MT_AGG_ARCR_SPE_DIS_TH		GENMASK(27, 24)

#define MT_AGG_ARUCR			MT_WF_AGG(0x014)
#define MT_AGG_ARDCR			MT_WF_AGG(0x018)
#define MT_AGG_ARxCR_LIMIT_SHIFT(_n)	(4 * (_n))
#define MT_AGG_ARxCR_LIMIT(_n)		GENMASK(2 + \
						MT_AGG_ARxCR_LIMIT_SHIFT(_n), \
						MT_AGG_ARxCR_LIMIT_SHIFT(_n))

#define MT_AGG_LIMIT			MT_WF_AGG(0x040)
#define MT_AGG_LIMIT_1			MT_WF_AGG(0x044)
#define MT_AGG_LIMIT_AC(_n)		GENMASK(((_n) + 1) * 8 - 1, (_n) * 8)

#define MT_AGG_BA_SIZE_LIMIT_0		MT_WF_AGG(0x048)
#define MT_AGG_BA_SIZE_LIMIT_1		MT_WF_AGG(0x04c)
#define MT_AGG_BA_SIZE_LIMIT_SHIFT	8

#define MT_AGG_PCR			MT_WF_AGG(0x050)
#define MT_AGG_PCR_MM			BIT(16)
#define MT_AGG_PCR_GF			BIT(17)
#define MT_AGG_PCR_BW40			BIT(18)
#define MT_AGG_PCR_RIFS			BIT(19)
#define MT_AGG_PCR_BW80			BIT(20)
#define MT_AGG_PCR_BW160		BIT(21)
#define MT_AGG_PCR_ERP			BIT(22)

#define MT_AGG_PCR_RTS			MT_WF_AGG(0x054)
#define MT_AGG_PCR_RTS_THR		GENMASK(19, 0)
#define MT_AGG_PCR_RTS_PKT_THR		GENMASK(31, 25)

#define MT_AGG_CONTROL			MT_WF_AGG(0x070)
#define MT_AGG_CONTROL_NO_BA_RULE	BIT(0)
#define MT_AGG_CONTROL_NO_BA_AR_RULE	BIT(1)
#define MT_AGG_CONTROL_CFEND_SPE_EN	BIT(3)
#define MT_AGG_CONTROL_CFEND_RATE	GENMASK(15, 4)
#define MT_AGG_CONTROL_BAR_SPE_EN	BIT(19)
#define MT_AGG_CONTROL_BAR_RATE		GENMASK(31, 20)

#define MT_AGG_TMP			MT_WF_AGG(0x0d8)

#define MT_AGG_BWCR			MT_WF_AGG(0x0ec)
#define MT_AGG_BWCR_BW			GENMASK(3, 2)

#define MT_AGG_RETRY_CONTROL		MT_WF_AGG(0x0f4)
#define MT_AGG_RETRY_CONTROL_RTS_LIMIT	GENMASK(11, 7)
#define MT_AGG_RETRY_CONTROL_BAR_LIMIT	GENMASK(15, 12)

#define MT_WF_DMA_BASE			0x21c00
#define MT_WF_DMA(ofs)			(MT_WF_DMA_BASE + (ofs))

#define MT_DMA_DCR0			MT_WF_DMA(0x000)
#define MT_DMA_DCR0_MAX_RX_LEN		GENMASK(15, 0)
#define MT_DMA_DCR0_DAMSDU		BIT(16)
#define MT_DMA_DCR0_RX_VEC_DROP		BIT(17)

#define MT_DMA_DCR1			MT_WF_DMA(0x004)

#define MT_DMA_FQCR0			MT_WF_DMA(0x008)
#define MT_DMA_FQCR0_TARGET_WCID	GENMASK(7, 0)
#define MT_DMA_FQCR0_TARGET_BSS		GENMASK(13, 8)
#define MT_DMA_FQCR0_TARGET_QID		GENMASK(20, 16)
#define MT_DMA_FQCR0_DEST_PORT_ID	GENMASK(23, 22)
#define MT_DMA_FQCR0_DEST_QUEUE_ID	GENMASK(28, 24)
#define MT_DMA_FQCR0_MODE		BIT(29)
#define MT_DMA_FQCR0_STATUS		BIT(30)
#define MT_DMA_FQCR0_BUSY		BIT(31)

#define MT_DMA_RCFR0			MT_WF_DMA(0x070)
#define MT_DMA_VCFR0			MT_WF_DMA(0x07c)

#define MT_DMA_TCFR0			MT_WF_DMA(0x080)
#define MT_DMA_TCFR1			MT_WF_DMA(0x084)
#define MT_DMA_TCFR_TXS_AGGR_TIMEOUT	GENMASK(27, 16)
#define MT_DMA_TCFR_TXS_QUEUE		BIT(14)
#define MT_DMA_TCFR_TXS_AGGR_COUNT	GENMASK(12, 8)
#define MT_DMA_TCFR_TXS_BIT_MAP		GENMASK(6, 0)

#define MT_DMA_TMCFR0			MT_WF_DMA(0x088)

#define MT_WF_ARB_BASE			0x21400
#define MT_WF_ARB(ofs)			(MT_WF_ARB_BASE + (ofs))

#define MT_WMM_AIFSN			MT_WF_ARB(0x020)
#define MT_WMM_AIFSN_MASK		GENMASK(3, 0)
#define MT_WMM_AIFSN_SHIFT(_n)		((_n) * 4)

#define MT_WMM_CWMAX_BASE		MT_WF_ARB(0x028)
#define MT_WMM_CWMAX(_n)		(MT_WMM_CWMAX_BASE + (((_n) / 2) << 2))
#define MT_WMM_CWMAX_SHIFT(_n)		(((_n) & 1) * 16)
#define MT_WMM_CWMAX_MASK		GENMASK(15, 0)

#define MT_WMM_CWMIN			MT_WF_ARB(0x040)
#define MT_WMM_CWMIN_MASK		GENMASK(7, 0)
#define MT_WMM_CWMIN_SHIFT(_n)		((_n) * 8)

#define MT_WF_ARB_RQCR			MT_WF_ARB(0x070)
#define MT_WF_ARB_RQCR_RX_START		BIT(0)
#define MT_WF_ARB_RQCR_RXV_START	BIT(4)
#define MT_WF_ARB_RQCR_RXV_R_EN		BIT(7)
#define MT_WF_ARB_RQCR_RXV_T_EN		BIT(8)

#define MT_ARB_SCR			MT_WF_ARB(0x080)
#define MT_ARB_SCR_BCNQ_OPMODE_MASK	GENMASK(1, 0)
#define MT_ARB_SCR_BCNQ_OPMODE_SHIFT(n)	((n) * 2)
#define MT_ARB_SCR_TX_DISABLE		BIT(8)
#define MT_ARB_SCR_RX_DISABLE		BIT(9)
#define MT_ARB_SCR_BCNQ_EMPTY_SKIP	BIT(28)
#define MT_ARB_SCR_TTTT_BTIM_PRIO	BIT(29)
#define MT_ARB_SCR_TBTT_BCN_PRIO	BIT(30)
#define MT_ARB_SCR_TBTT_BCAST_PRIO	BIT(31)

enum {
	MT_BCNQ_OPMODE_STA =	0,
	MT_BCNQ_OPMODE_AP =	1,
	MT_BCNQ_OPMODE_ADHOC =	2,
};

#define MT_WF_ARB_TX_START_0		MT_WF_ARB(0x100)
#define MT_WF_ARB_TX_START_1		MT_WF_ARB(0x104)
#define MT_WF_ARB_TX_FLUSH_0		MT_WF_ARB(0x108)
#define MT_WF_ARB_TX_FLUSH_1		MT_WF_ARB(0x10c)
#define MT_WF_ARB_TX_STOP_0		MT_WF_ARB(0x110)
#define MT_WF_ARB_TX_STOP_1		MT_WF_ARB(0x114)

#define MT_WF_ARB_BCN_START		MT_WF_ARB(0x118)
#define MT_WF_ARB_BCN_START_BSSn(n)	BIT(0 + (n))
#define MT_WF_ARB_BCN_START_T_PRE_TTTT	BIT(10)
#define MT_WF_ARB_BCN_START_T_TTTT	BIT(11)
#define MT_WF_ARB_BCN_START_T_PRE_TBTT	BIT(12)
#define MT_WF_ARB_BCN_START_T_TBTT	BIT(13)
#define MT_WF_ARB_BCN_START_T_SLOT_IDLE	BIT(14)
#define MT_WF_ARB_BCN_START_T_TX_START	BIT(15)
#define MT_WF_ARB_BCN_START_BSS0n(n)	BIT((n) ? 16 + ((n) - 1) : 0)

#define MT_WF_ARB_BCN_FLUSH		MT_WF_ARB(0x11c)
#define MT_WF_ARB_BCN_FLUSH_BSSn(n)	BIT(0 + (n))
#define MT_WF_ARB_BCN_FLUSH_BSS0n(n)	BIT((n) ? 16 + ((n) - 1) : 0)

#define MT_WF_ARB_CAB_START		MT_WF_ARB(0x120)
#define MT_WF_ARB_CAB_START_BSSn(n)	BIT(0 + (n))
#define MT_WF_ARB_CAB_START_BSS0n(n)	BIT((n) ? 16 + ((n) - 1) : 0)

#define MT_WF_ARB_CAB_FLUSH		MT_WF_ARB(0x124)
#define MT_WF_ARB_CAB_FLUSH_BSSn(n)	BIT(0 + (n))
#define MT_WF_ARB_CAB_FLUSH_BSS0n(n)	BIT((n) ? 16 + ((n) - 1) : 0)

#define MT_WF_ARB_CAB_COUNT(n)		MT_WF_ARB(0x128 + (n) * 4)
#define MT_WF_ARB_CAB_COUNT_SHIFT	4
#define MT_WF_ARB_CAB_COUNT_MASK	GENMASK(3, 0)
#define MT_WF_ARB_CAB_COUNT_B0_REG(n)	MT_WF_ARB_CAB_COUNT(((n) > 12 ? 2 : \
							     ((n) > 4 ? 1 : 0)))
#define MT_WF_ARB_CAB_COUNT_B0_SHIFT(n)	(((n) > 12 ? (n) - 12 : \
					 ((n) > 4 ? (n) - 4 : \
					  (n) ? (n) + 3 : 0)) * 4)

#define MT_TX_ABORT			MT_WF_ARB(0x134)
#define MT_TX_ABORT_EN			BIT(0)
#define MT_TX_ABORT_WCID		GENMASK(15, 8)

#define MT_WF_TMAC_BASE			0x21600
#define MT_WF_TMAC(ofs)			(MT_WF_TMAC_BASE + (ofs))

#define MT_TMAC_TCR			MT_WF_TMAC(0x000)
#define MT_TMAC_TCR_BLINK_SEL		GENMASK(7, 6)
#define MT_TMAC_TCR_PRE_RTS_GUARD	GENMASK(11, 8)
#define MT_TMAC_TCR_PRE_RTS_SEC_IDLE	GENMASK(13, 12)
#define MT_TMAC_TCR_RTS_SIGTA		BIT(14)
#define MT_TMAC_TCR_LDPC_OFS		BIT(15)
#define MT_TMAC_TCR_TX_STREAMS		GENMASK(17, 16)
#define MT_TMAC_TCR_SCH_IDLE_SEL	GENMASK(19, 18)
#define MT_TMAC_TCR_SCH_DET_PER_IOD	BIT(20)
#define MT_TMAC_TCR_DCH_DET_DISABLE	BIT(21)
#define MT_TMAC_TCR_TX_RIFS		BIT(22)
#define MT_TMAC_TCR_RX_RIFS_MODE	BIT(23)
#define MT_TMAC_TCR_TXOP_TBTT_CTL	BIT(24)
#define MT_TMAC_TCR_TBTT_TX_STOP_CTL	BIT(25)
#define MT_TMAC_TCR_TXOP_BURST_STOP	BIT(26)
#define MT_TMAC_TCR_RDG_RA_MODE		BIT(27)
#define MT_TMAC_TCR_RDG_RESP		BIT(29)
#define MT_TMAC_TCR_RDG_NO_PENDING	BIT(30)
#define MT_TMAC_TCR_SMOOTHING		BIT(31)

#define MT_WMM_TXOP_BASE		MT_WF_TMAC(0x010)
#define MT_WMM_TXOP(_n)			(MT_WMM_TXOP_BASE + \
					 ((((_n) / 2) ^ 0x1) << 2))
#define MT_WMM_TXOP_SHIFT(_n)		(((_n) & 1) * 16)
#define MT_WMM_TXOP_MASK		GENMASK(15, 0)

#define MT_TIMEOUT_CCK			MT_WF_TMAC(0x090)
#define MT_TIMEOUT_OFDM			MT_WF_TMAC(0x094)
#define MT_TIMEOUT_VAL_PLCP		GENMASK(15, 0)
#define MT_TIMEOUT_VAL_CCA		GENMASK(31, 16)

#define MT_TXREQ			MT_WF_TMAC(0x09c)
#define MT_TXREQ_CCA_SRC_SEL		GENMASK(31, 30)

#define MT_RXREQ			MT_WF_TMAC(0x0a0)
#define MT_RXREQ_DELAY			GENMASK(8, 0)

#define MT_IFS				MT_WF_TMAC(0x0a4)
#define MT_IFS_EIFS			GENMASK(8, 0)
#define MT_IFS_RIFS			GENMASK(14, 10)
#define MT_IFS_SIFS			GENMASK(22, 16)
#define MT_IFS_SLOT			GENMASK(30, 24)

#define MT_TMAC_PCR			MT_WF_TMAC(0x0b4)
#define MT_TMAC_PCR_RATE		GENMASK(8, 0)
#define MT_TMAC_PCR_RATE_FIXED		BIT(15)
#define MT_TMAC_PCR_ANT_ID		GENMASK(21, 16)
#define MT_TMAC_PCR_ANT_ID_SEL		BIT(22)
#define MT_TMAC_PCR_SPE_EN		BIT(23)
#define MT_TMAC_PCR_ANT_PRI		GENMASK(26, 24)
#define MT_TMAC_PCR_ANT_PRI_SEL		GENMASK(27)

#define MT_WF_RMAC_BASE			0x21800
#define MT_WF_RMAC(ofs)			(MT_WF_RMAC_BASE + (ofs))

#define MT_WF_RFCR			MT_WF_RMAC(0x000)
#define MT_WF_RFCR_DROP_STBC_MULTI	BIT(0)
#define MT_WF_RFCR_DROP_FCSFAIL		BIT(1)
#define MT_WF_RFCR_DROP_VERSION		BIT(3)
#define MT_WF_RFCR_DROP_PROBEREQ	BIT(4)
#define MT_WF_RFCR_DROP_MCAST		BIT(5)
#define MT_WF_RFCR_DROP_BCAST		BIT(6)
#define MT_WF_RFCR_DROP_MCAST_FILTERED	BIT(7)
#define MT_WF_RFCR_DROP_A3_MAC		BIT(8)
#define MT_WF_RFCR_DROP_A3_BSSID	BIT(9)
#define MT_WF_RFCR_DROP_A2_BSSID	BIT(10)
#define MT_WF_RFCR_DROP_OTHER_BEACON	BIT(11)
#define MT_WF_RFCR_DROP_FRAME_REPORT	BIT(12)
#define MT_WF_RFCR_DROP_CTL_RSV		BIT(13)
#define MT_WF_RFCR_DROP_CTS		BIT(14)
#define MT_WF_RFCR_DROP_RTS		BIT(15)
#define MT_WF_RFCR_DROP_DUPLICATE	BIT(16)
#define MT_WF_RFCR_DROP_OTHER_BSS	BIT(17)
#define MT_WF_RFCR_DROP_OTHER_UC	BIT(18)
#define MT_WF_RFCR_DROP_OTHER_TIM	BIT(19)
#define MT_WF_RFCR_DROP_NDPA		BIT(20)
#define MT_WF_RFCR_DROP_UNWANTED_CTL	BIT(21)

#define MT_BSSID0(idx)			MT_WF_RMAC(0x004 + (idx) * 8)
#define MT_BSSID1(idx)			MT_WF_RMAC(0x008 + (idx) * 8)
#define MT_BSSID1_VALID			BIT(16)

#define MT_MAC_ADDR0(idx)		MT_WF_RMAC(0x024 + (idx) * 8)
#define MT_MAC_ADDR1(idx)		MT_WF_RMAC(0x028 + (idx) * 8)
#define MT_MAC_ADDR1_ADDR		GENMASK(15, 0)
#define MT_MAC_ADDR1_VALID		BIT(16)

#define MT_BA_CONTROL_0			MT_WF_RMAC(0x068)
#define MT_BA_CONTROL_1			MT_WF_RMAC(0x06c)
#define MT_BA_CONTROL_1_ADDR		GENMASK(15, 0)
#define MT_BA_CONTROL_1_TID		GENMASK(19, 16)
#define MT_BA_CONTROL_1_IGNORE_TID	BIT(20)
#define MT_BA_CONTROL_1_IGNORE_ALL	BIT(21)
#define MT_BA_CONTROL_1_RESET		BIT(22)

#define MT_WF_RMACDR			MT_WF_RMAC(0x078)
#define MT_WF_RMACDR_TSF_PROBERSP_DIS	BIT(0)
#define MT_WF_RMACDR_TSF_TIM		BIT(4)
#define MT_WF_RMACDR_MBSSID_MASK	GENMASK(25, 24)
#define MT_WF_RMACDR_CHECK_HTC_BY_RATE	BIT(26)
#define MT_WF_RMACDR_MAXLEN_20BIT	BIT(30)

#define MT_WF_RMAC_RMCR			MT_WF_RMAC(0x080)
#define MT_WF_RMAC_RMCR_SMPS_MODE	GENMASK(21, 20)
#define MT_WF_RMAC_RMCR_RX_STREAMS	GENMASK(24, 22)
#define MT_WF_RMAC_RMCR_SMPS_RTS	BIT(25)

#define MT_WF_RMAC_CH_FREQ		MT_WF_RMAC(0x090)
#define MT_WF_RMAC_MAXMINLEN		MT_WF_RMAC(0x098)
#define MT_WF_RFCR1			MT_WF_RMAC(0x0a4)
#define MT_WF_RMAC_TMR_PA		MT_WF_RMAC(0x0e0)

#define MT_WF_SEC_BASE			0x21a00
#define MT_WF_SEC(ofs)			(MT_WF_SEC_BASE + (ofs))

#define MT_SEC_SCR			MT_WF_SEC(0x004)
#define MT_SEC_SCR_MASK_ORDER		GENMASK(1, 0)

#define MT_WTBL_OFF_BASE		0x23000
#define MT_WTBL_OFF(n)			(MT_WTBL_OFF_BASE + (n))

#define MT_WTBL_UPDATE			MT_WTBL_OFF(0x000)
#define MT_WTBL_UPDATE_WLAN_IDX		GENMASK(7, 0)
#define MT_WTBL_UPDATE_WTBL2		BIT(11)
#define MT_WTBL_UPDATE_ADM_COUNT_CLEAR	BIT(12)
#define MT_WTBL_UPDATE_RATE_UPDATE	BIT(13)
#define MT_WTBL_UPDATE_TX_COUNT_CLEAR	BIT(14)
#define MT_WTBL_UPDATE_RX_COUNT_CLEAR	BIT(15)
#define MT_WTBL_UPDATE_BUSY		BIT(16)

#define MT_WTBL_RMVTCR			MT_WTBL_OFF(0x008)
#define MT_WTBL_RMVTCR_RX_MV_MODE	BIT(23)

#define MT_LPON_BASE			0x24000
#define MT_LPON(n)			(MT_LPON_BASE + (n))

#define MT_LPON_T0CR			MT_LPON(0x010)
#define MT_LPON_T0CR_MODE		GENMASK(1, 0)

#define MT_LPON_UTTR0			MT_LPON(0x018)
#define MT_LPON_UTTR1			MT_LPON(0x01c)

#define MT_LPON_BTEIR			MT_LPON(0x020)
#define MT_LPON_BTEIR_MBSS_MODE		GENMASK(31, 29)

#define MT_PRE_TBTT			MT_LPON(0x030)
#define MT_PRE_TBTT_MASK		GENMASK(7, 0)
#define MT_PRE_TBTT_SHIFT		8

#define MT_TBTT				MT_LPON(0x034)
#define MT_TBTT_PERIOD			GENMASK(15, 0)
#define MT_TBTT_DTIM_PERIOD		GENMASK(23, 16)
#define MT_TBTT_TBTT_WAKE_PERIOD	GENMASK(27, 24)
#define MT_TBTT_DTIM_WAKE_PERIOD	GENMASK(30, 28)
#define MT_TBTT_CAL_ENABLE		BIT(31)

#define MT_TBTT_TIMER_CFG		MT_LPON(0x05c)

#define MT_LPON_SBTOR(n)		MT_LPON(0x0a0)
#define MT_LPON_SBTOR_SUB_BSS_EN	BIT(29)
#define MT_LPON_SBTOR_TIME_OFFSET	GENMASK(19, 0)

#define MT_INT_WAKEUP_BASE		0x24400
#define MT_INT_WAKEUP(n)		(MT_INT_WAKEUP_BASE + (n))

#define MT_HW_INT_STATUS(n)		MT_INT_WAKEUP(0x3c + (n) * 8)
#define MT_HW_INT_MASK(n)		MT_INT_WAKEUP(0x40 + (n) * 8)

#define MT_HW_INT3_TBTT0		BIT(15)
#define MT_HW_INT3_PRE_TBTT0		BIT(31)

#define MT_WTBL1_BASE			0x28000

#define MT_WTBL_ON_BASE			(MT_WTBL1_BASE + 0x2000)
#define MT_WTBL_ON(_n)			(MT_WTBL_ON_BASE + (_n))

#define MT_WTBL_RIUCR0			MT_WTBL_ON(0x200)

#define MT_WTBL_RIUCR1			MT_WTBL_ON(0x204)
#define MT_WTBL_RIUCR1_RATE0		GENMASK(11, 0)
#define MT_WTBL_RIUCR1_RATE1		GENMASK(23, 12)
#define MT_WTBL_RIUCR1_RATE2_LO		GENMASK(31, 24)

#define MT_WTBL_RIUCR2			MT_WTBL_ON(0x208)
#define MT_WTBL_RIUCR2_RATE2_HI		GENMASK(3, 0)
#define MT_WTBL_RIUCR2_RATE3		GENMASK(15, 4)
#define MT_WTBL_RIUCR2_RATE4		GENMASK(27, 16)
#define MT_WTBL_RIUCR2_RATE5_LO		GENMASK(31, 28)

#define MT_WTBL_RIUCR3			MT_WTBL_ON(0x20c)
#define MT_WTBL_RIUCR3_RATE5_HI		GENMASK(7, 0)
#define MT_WTBL_RIUCR3_RATE6		GENMASK(19, 8)
#define MT_WTBL_RIUCR3_RATE7		GENMASK(31, 20)

#define MT_MIB_BASE			0x2c000
#define MT_MIB(_n)			(MT_MIB_BASE + (_n))

#define MT_MIB_CTL			MT_MIB(0x00)
#define MT_MIB_CTL_PSCCA_TIME		GENMASK(13, 11)
#define MT_MIB_CTL_CCA_NAV_TX		GENMASK(16, 14)
#define MT_MIB_CTL_ED_TIME		GENMASK(30, 28)
#define MT_MIB_CTL_READ_CLR_DIS		BIT(31)

#define MT_MIB_STAT(_n)			MT_MIB(0x08 + (_n) * 4)

#define MT_MIB_STAT_CCA			MT_MIB_STAT(9)
#define MT_MIB_STAT_CCA_MASK		GENMASK(23, 0)

#define MT_MIB_STAT_PSCCA		MT_MIB_STAT(16)
#define MT_MIB_STAT_PSCCA_MASK		GENMASK(23, 0)

#define MT_MIB_STAT_ED			MT_MIB_STAT(18)
#define MT_MIB_STAT_ED_MASK		GENMASK(23, 0)

#define MT_PCIE_REMAP_BASE_1		0x40000
#define MT_PCIE_REMAP_BASE_2		0x80000

#define MT_TX_HW_QUEUE_MGMT		4
#define MT_TX_HW_QUEUE_MCU		5
#define MT_TX_HW_QUEUE_BCN		7
#define MT_TX_HW_QUEUE_BMC		8

#define MT_LED_BASE_PHYS		0x80024000
#define MT_LED_PHYS(_n)			(MT_LED_BASE_PHYS + (_n))

#define MT_LED_CTRL			MT_LED_PHYS(0x00)

#define MT_LED_CTRL_REPLAY(_n)		BIT(0 + (8 * (_n)))
#define MT_LED_CTRL_POLARITY(_n)	BIT(1 + (8 * (_n)))
#define MT_LED_CTRL_TX_BLINK_MODE(_n)	BIT(2 + (8 * (_n)))
#define MT_LED_CTRL_TX_MANUAL_BLINK(_n)	BIT(3 + (8 * (_n)))
#define MT_LED_CTRL_TX_OVER_BLINK(_n)	BIT(5 + (8 * (_n)))
#define MT_LED_CTRL_KICK(_n)		BIT(7 + (8 * (_n)))

#define MT_LED_STATUS_0(_n)		MT_LED_PHYS(0x10 + ((_n) * 8))
#define MT_LED_STATUS_1(_n)		MT_LED_PHYS(0x14 + ((_n) * 8))
#define MT_LED_STATUS_OFF_MASK		GENMASK(31, 24)
#define MT_LED_STATUS_OFF(_v)		(((_v) << \
					  __ffs(MT_LED_STATUS_OFF_MASK)) & \
					 MT_LED_STATUS_OFF_MASK)
#define MT_LED_STATUS_ON_MASK		GENMASK(23, 16)
#define MT_LED_STATUS_ON(_v)		(((_v) << \
					  __ffs(MT_LED_STATUS_ON_MASK)) & \
					 MT_LED_STATUS_ON_MASK)
#define MT_LED_STATUS_DURATION_MASK	GENMASK(15, 0)
#define MT_LED_STATUS_DURATION(_v)	(((_v) << \
					  __ffs(MT_LED_STATUS_DURATION_MASK)) &\
					 MT_LED_STATUS_DURATION_MASK)

#define MT_CLIENT_BASE_PHYS_ADDR	0x800c0000

#define MT_CLIENT_TMAC_INFO_TEMPLATE	0x040

#define MT_CLIENT_STATUS		0x06c

#define MT_CLIENT_RESET_TX		0x070
#define MT_CLIENT_RESET_TX_R_E_1	BIT(16)
#define MT_CLIENT_RESET_TX_R_E_2	BIT(17)
#define MT_CLIENT_RESET_TX_R_E_1_S	BIT(20)
#define MT_CLIENT_RESET_TX_R_E_2_S	BIT(21)

#define MT_EFUSE_BASE			0x81070000

#define MT_EFUSE_BASE_CTRL		0x000
#define MT_EFUSE_BASE_CTRL_EMPTY	BIT(30)

#define MT_EFUSE_CTRL			0x008
#define MT_EFUSE_CTRL_AOUT		GENMASK(5, 0)
#define MT_EFUSE_CTRL_MODE		GENMASK(7, 6)
#define MT_EFUSE_CTRL_LDO_OFF_TIME	GENMASK(13, 8)
#define MT_EFUSE_CTRL_LDO_ON_TIME	GENMASK(15, 14)
#define MT_EFUSE_CTRL_AIN		GENMASK(25, 16)
#define MT_EFUSE_CTRL_VALID		BIT(29)
#define MT_EFUSE_CTRL_KICK		BIT(30)
#define MT_EFUSE_CTRL_SEL		BIT(31)

#define MT_EFUSE_WDATA(_i)		(0x010 + ((_i) * 4))
#define MT_EFUSE_RDATA(_i)		(0x030 + ((_i) * 4))

#define MT_CLIENT_RXINF			0x068
#define MT_CLIENT_RXINF_RXSH_GROUPS	GENMASK(2, 0)

#define MT_PSE_BASE_PHYS_ADDR		0xa0000000

#define MT_PSE_WTBL_2_PHYS_ADDR		0xa5000000

#define MT_WTBL1_SIZE			(8 * 4)
#define MT_WTBL2_SIZE			(16 * 4)
#define MT_WTBL3_OFFSET			(MT7603_WTBL_SIZE * MT_WTBL2_SIZE)
#define MT_WTBL3_SIZE			(16 * 4)
#define MT_WTBL4_OFFSET			(MT7603_WTBL_SIZE * MT_WTBL3_SIZE + \
					 MT_WTBL3_OFFSET)
#define MT_WTBL4_SIZE			(8 * 4)

#define MT_WTBL1_W0_ADDR_HI		GENMASK(15, 0)
#define MT_WTBL1_W0_MUAR_IDX		GENMASK(21, 16)
#define MT_WTBL1_W0_RX_CHECK_A1		BIT(22)
#define MT_WTBL1_W0_KEY_IDX		GENMASK(24, 23)
#define MT_WTBL1_W0_RX_CHECK_KEY_IDX	BIT(25)
#define MT_WTBL1_W0_RX_KEY_VALID	BIT(26)
#define MT_WTBL1_W0_RX_IK_VALID		BIT(27)
#define MT_WTBL1_W0_RX_VALID		BIT(28)
#define MT_WTBL1_W0_RX_CHECK_A2		BIT(29)
#define MT_WTBL1_W0_RX_DATA_VALID	BIT(30)
#define MT_WTBL1_W0_WRITE_BURST		BIT(31)

#define MT_WTBL1_W1_ADDR_LO		GENMASK(31, 0)

#define MT_WTBL1_W2_MPDU_DENSITY	GENMASK(2, 0)
#define MT_WTBL1_W2_KEY_TYPE		GENMASK(6, 3)
#define MT_WTBL1_W2_EVEN_PN		BIT(7)
#define MT_WTBL1_W2_TO_DS		BIT(8)
#define MT_WTBL1_W2_FROM_DS		BIT(9)
#define MT_WTBL1_W2_HEADER_TRANS	BIT(10)
#define MT_WTBL1_W2_AMPDU_FACTOR	GENMASK(13, 11)
#define MT_WTBL1_W2_PWR_MGMT		BIT(14)
#define MT_WTBL1_W2_RDG			BIT(15)
#define MT_WTBL1_W2_RTS			BIT(16)
#define MT_WTBL1_W2_CFACK		BIT(17)
#define MT_WTBL1_W2_RDG_BA		BIT(18)
#define MT_WTBL1_W2_SMPS		BIT(19)
#define MT_WTBL1_W2_TXS_BAF_REPORT	BIT(20)
#define MT_WTBL1_W2_DYN_BW		BIT(21)
#define MT_WTBL1_W2_LDPC		BIT(22)
#define MT_WTBL1_W2_ITXBF		BIT(23)
#define MT_WTBL1_W2_ETXBF		BIT(24)
#define MT_WTBL1_W2_TXOP_PS		BIT(25)
#define MT_WTBL1_W2_MESH		BIT(26)
#define MT_WTBL1_W2_QOS			BIT(27)
#define MT_WTBL1_W2_HT			BIT(28)
#define MT_WTBL1_W2_VHT			BIT(29)
#define MT_WTBL1_W2_ADMISSION_CONTROL	BIT(30)
#define MT_WTBL1_W2_GROUP_ID		BIT(31)

#define MT_WTBL1_W3_WTBL2_FRAME_ID	GENMASK(10, 0)
#define MT_WTBL1_W3_WTBL2_ENTRY_ID	GENMASK(15, 11)
#define MT_WTBL1_W3_WTBL4_FRAME_ID	GENMASK(26, 16)
#define MT_WTBL1_W3_CHECK_PER		BIT(27)
#define MT_WTBL1_W3_KEEP_I_PSM		BIT(28)
#define MT_WTBL1_W3_I_PSM		BIT(29)
#define MT_WTBL1_W3_POWER_SAVE		BIT(30)
#define MT_WTBL1_W3_SKIP_TX		BIT(31)

#define MT_WTBL1_W4_WTBL3_FRAME_ID	GENMASK(10, 0)
#define MT_WTBL1_W4_WTBL3_ENTRY_ID	GENMASK(16, 11)
#define MT_WTBL1_W4_WTBL4_ENTRY_ID	GENMASK(22, 17)
#define MT_WTBL1_W4_PARTIAL_AID		GENMASK(31, 23)

#define MT_WTBL2_W0_PN_LO		GENMASK(31, 0)

#define MT_WTBL2_W1_PN_HI		GENMASK(15, 0)
#define MT_WTBL2_W1_NON_QOS_SEQNO	GENMASK(27, 16)

#define MT_WTBL2_W2_TID0_SN		GENMASK(11, 0)
#define MT_WTBL2_W2_TID1_SN		GENMASK(23, 12)
#define MT_WTBL2_W2_TID2_SN_LO		GENMASK(31, 24)

#define MT_WTBL2_W3_TID2_SN_HI		GENMASK(3, 0)
#define MT_WTBL2_W3_TID3_SN		GENMASK(15, 4)
#define MT_WTBL2_W3_TID4_SN		GENMASK(27, 16)
#define MT_WTBL2_W3_TID5_SN_LO		GENMASK(31, 28)

#define MT_WTBL2_W4_TID5_SN_HI		GENMASK(7, 0)
#define MT_WTBL2_W4_TID6_SN		GENMASK(19, 8)
#define MT_WTBL2_W4_TID7_SN		GENMASK(31, 20)

#define MT_WTBL2_W5_TX_COUNT_RATE1	GENMASK(15, 0)
#define MT_WTBL2_W5_FAIL_COUNT_RATE1	GENAMSK(31, 16)

#define MT_WTBL2_W6_TX_COUNT_RATE2	GENMASK(7, 0)
#define MT_WTBL2_W6_TX_COUNT_RATE3	GENMASK(15, 8)
#define MT_WTBL2_W6_TX_COUNT_RATE4	GENMASK(23, 16)
#define MT_WTBL2_W6_TX_COUNT_RATE5	GENMASK(31, 24)

#define MT_WTBL2_W7_TX_COUNT_CUR_BW	GENMASK(15, 0)
#define MT_WTBL2_W7_FAIL_COUNT_CUR_BW	GENMASK(31, 16)

#define MT_WTBL2_W8_TX_COUNT_OTHER_BW	GENMASK(15, 0)
#define MT_WTBL2_W8_FAIL_COUNT_OTHER_BW	GENMASK(31, 16)

#define MT_WTBL2_W9_POWER_OFFSET	GENMASK(4, 0)
#define MT_WTBL2_W9_SPATIAL_EXT		BIT(5)
#define MT_WTBL2_W9_ANT_PRIORITY	GENMASK(8, 6)
#define MT_WTBL2_W9_CC_BW_SEL		GENMASK(10, 9)
#define MT_WTBL2_W9_CHANGE_BW_RATE	GENMASK(13, 11)
#define MT_WTBL2_W9_BW_CAP		GENMASK(15, 14)
#define MT_WTBL2_W9_SHORT_GI_20		BIT(16)
#define MT_WTBL2_W9_SHORT_GI_40		BIT(17)
#define MT_WTBL2_W9_SHORT_GI_80		BIT(18)
#define MT_WTBL2_W9_SHORT_GI_160	BIT(19)
#define MT_WTBL2_W9_MPDU_FAIL_COUNT	GENMASK(25, 23)
#define MT_WTBL2_W9_MPDU_OK_COUNT	GENMASK(28, 26)
#define MT_WTBL2_W9_RATE_IDX		GENMASK(31, 29)

#define MT_WTBL2_W10_RATE1		GENMASK(11, 0)
#define MT_WTBL2_W10_RATE2		GENMASK(23, 12)
#define MT_WTBL2_W10_RATE3_LO		GENMASK(31, 24)

#define MT_WTBL2_W11_RATE3_HI		GENMASK(3, 0)
#define MT_WTBL2_W11_RATE4		GENMASK(15, 4)
#define MT_WTBL2_W11_RATE5		GENMASK(27, 16)
#define MT_WTBL2_W11_RATE6_LO		GENMASK(31, 28)

#define MT_WTBL2_W12_RATE6_HI		GENMASK(7, 0)
#define MT_WTBL2_W12_RATE7		GENMASK(19, 8)
#define MT_WTBL2_W12_RATE8		GENMASK(31, 20)

#define MT_WTBL2_W13_AVG_RCPI0		GENMASK(7, 0)
#define MT_WTBL2_W13_AVG_RCPI1		GENMASK(15, 8)
#define MT_WTBL2_W13_AVG_RCPI2		GENAMSK(23, 16)

#define MT_WTBL2_W14_CC_NOISE_1S	GENMASK(6, 0)
#define MT_WTBL2_W14_CC_NOISE_2S	GENMASK(13, 7)
#define MT_WTBL2_W14_CC_NOISE_3S	GENMASK(20, 14)
#define MT_WTBL2_W14_CHAN_EST_RMS	GENMASK(24, 21)
#define MT_WTBL2_W14_CC_NOISE_SEL	BIT(15)
#define MT_WTBL2_W14_ANT_SEL		GENMASK(31, 26)

#define MT_WTBL2_W15_BA_WIN_SIZE	GENMASK(2, 0)
#define MT_WTBL2_W15_BA_WIN_SIZE_SHIFT	3
#define MT_WTBL2_W15_BA_EN_TIDS		GENMASK(31, 24)

#define MT_WTBL1_OR			(MT_WTBL1_BASE + 0x2300)
#define MT_WTBL1_OR_PSM_WRITE		BIT(31)

enum mt7603_cipher_type {
	MT_CIPHER_NONE,
	MT_CIPHER_WEP40,
	MT_CIPHER_TKIP,
	MT_CIPHER_TKIP_NO_MIC,
	MT_CIPHER_AES_CCMP,
	MT_CIPHER_WEP104,
	MT_CIPHER_BIP_CMAC_128,
	MT_CIPHER_WEP128,
	MT_CIPHER_WAPI,
};

#endif