1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef RT2500USB_H
15 #define RT2500USB_H
16
17
18
19
20 #define RF2522 0x0000
21 #define RF2523 0x0001
22 #define RF2524 0x0002
23 #define RF2525 0x0003
24 #define RF2525E 0x0005
25 #define RF5222 0x0010
26
27
28
29
30 #define RT2570_VERSION_B 2
31 #define RT2570_VERSION_C 3
32 #define RT2570_VERSION_D 4
33
34
35
36
37
38 #define DEFAULT_RSSI_OFFSET 120
39
40
41
42
43 #define CSR_REG_BASE 0x0400
44 #define CSR_REG_SIZE 0x0100
45 #define EEPROM_BASE 0x0000
46 #define EEPROM_SIZE 0x006e
47 #define BBP_BASE 0x0000
48 #define BBP_SIZE 0x0060
49 #define RF_BASE 0x0004
50 #define RF_SIZE 0x0010
51
52
53
54
55 #define NUM_TX_QUEUES 2
56
57
58
59
60
61
62
63
64
65 #define MAC_CSR0 0x0400
66
67
68
69
70
71
72
73 #define MAC_CSR1 0x0402
74 #define MAC_CSR1_SOFT_RESET FIELD16(0x00000001)
75 #define MAC_CSR1_BBP_RESET FIELD16(0x00000002)
76 #define MAC_CSR1_HOST_READY FIELD16(0x00000004)
77
78
79
80
81 #define MAC_CSR2 0x0404
82 #define MAC_CSR2_BYTE0 FIELD16(0x00ff)
83 #define MAC_CSR2_BYTE1 FIELD16(0xff00)
84
85
86
87
88 #define MAC_CSR3 0x0406
89 #define MAC_CSR3_BYTE2 FIELD16(0x00ff)
90 #define MAC_CSR3_BYTE3 FIELD16(0xff00)
91
92
93
94
95 #define MAC_CSR4 0X0408
96 #define MAC_CSR4_BYTE4 FIELD16(0x00ff)
97 #define MAC_CSR4_BYTE5 FIELD16(0xff00)
98
99
100
101
102 #define MAC_CSR5 0x040a
103 #define MAC_CSR5_BYTE0 FIELD16(0x00ff)
104 #define MAC_CSR5_BYTE1 FIELD16(0xff00)
105
106
107
108
109 #define MAC_CSR6 0x040c
110 #define MAC_CSR6_BYTE2 FIELD16(0x00ff)
111 #define MAC_CSR6_BYTE3 FIELD16(0xff00)
112
113
114
115
116 #define MAC_CSR7 0x040e
117 #define MAC_CSR7_BYTE4 FIELD16(0x00ff)
118 #define MAC_CSR7_BYTE5 FIELD16(0xff00)
119
120
121
122
123 #define MAC_CSR8 0x0410
124 #define MAC_CSR8_MAX_FRAME_UNIT FIELD16(0x0fff)
125
126
127
128
129
130
131
132
133
134
135
136
137 #define MAC_CSR9 0x0412
138 #define MAC_CSR10 0x0414
139 #define MAC_CSR11 0x0416
140 #define MAC_CSR12 0x0418
141 #define MAC_CSR13 0x041a
142 #define MAC_CSR14 0x041c
143 #define MAC_CSR15 0x041e
144 #define MAC_CSR16 0x0420
145
146
147
148
149
150
151
152
153
154
155
156 #define MAC_CSR17 0x0422
157 #define MAC_CSR17_SET_STATE FIELD16(0x0001)
158 #define MAC_CSR17_BBP_DESIRE_STATE FIELD16(0x0006)
159 #define MAC_CSR17_RF_DESIRE_STATE FIELD16(0x0018)
160 #define MAC_CSR17_BBP_CURR_STATE FIELD16(0x0060)
161 #define MAC_CSR17_RF_CURR_STATE FIELD16(0x0180)
162 #define MAC_CSR17_PUT_TO_SLEEP FIELD16(0x0200)
163
164
165
166
167
168
169
170 #define MAC_CSR18 0x0424
171 #define MAC_CSR18_DELAY_AFTER_BEACON FIELD16(0x00ff)
172 #define MAC_CSR18_BEACONS_BEFORE_WAKEUP FIELD16(0x7f00)
173 #define MAC_CSR18_AUTO_WAKE FIELD16(0x8000)
174
175
176
177
178
179
180 #define MAC_CSR19 0x0426
181 #define MAC_CSR19_VAL0 FIELD16(0x0001)
182 #define MAC_CSR19_VAL1 FIELD16(0x0002)
183 #define MAC_CSR19_VAL2 FIELD16(0x0004)
184 #define MAC_CSR19_VAL3 FIELD16(0x0008)
185 #define MAC_CSR19_VAL4 FIELD16(0x0010)
186 #define MAC_CSR19_VAL5 FIELD16(0x0020)
187 #define MAC_CSR19_VAL6 FIELD16(0x0040)
188 #define MAC_CSR19_VAL7 FIELD16(0x0080)
189 #define MAC_CSR19_DIR0 FIELD16(0x0100)
190 #define MAC_CSR19_DIR1 FIELD16(0x0200)
191 #define MAC_CSR19_DIR2 FIELD16(0x0400)
192 #define MAC_CSR19_DIR3 FIELD16(0x0800)
193 #define MAC_CSR19_DIR4 FIELD16(0x1000)
194 #define MAC_CSR19_DIR5 FIELD16(0x2000)
195 #define MAC_CSR19_DIR6 FIELD16(0x4000)
196 #define MAC_CSR19_DIR7 FIELD16(0x8000)
197
198
199
200
201
202
203
204 #define MAC_CSR20 0x0428
205 #define MAC_CSR20_ACTIVITY FIELD16(0x0001)
206 #define MAC_CSR20_LINK FIELD16(0x0002)
207 #define MAC_CSR20_ACTIVITY_POLARITY FIELD16(0x0004)
208
209
210
211
212
213
214 #define MAC_CSR21 0x042a
215 #define MAC_CSR21_ON_PERIOD FIELD16(0x00ff)
216 #define MAC_CSR21_OFF_PERIOD FIELD16(0xff00)
217
218
219
220
221 #define MAC_CSR22 0x042c
222
223
224
225
226
227
228
229
230
231 #define TXRX_CSR0 0x0440
232 #define TXRX_CSR0_ALGORITHM FIELD16(0x0007)
233 #define TXRX_CSR0_IV_OFFSET FIELD16(0x01f8)
234 #define TXRX_CSR0_KEY_ID FIELD16(0x1e00)
235
236
237
238
239
240
241
242 #define TXRX_CSR1 0x0442
243 #define TXRX_CSR1_ACK_TIMEOUT FIELD16(0x00ff)
244 #define TXRX_CSR1_TSF_OFFSET FIELD16(0x7f00)
245 #define TXRX_CSR1_AUTO_SEQUENCE FIELD16(0x8000)
246
247
248
249
250
251
252
253
254
255
256
257
258
259 #define TXRX_CSR2 0x0444
260 #define TXRX_CSR2_DISABLE_RX FIELD16(0x0001)
261 #define TXRX_CSR2_DROP_CRC FIELD16(0x0002)
262 #define TXRX_CSR2_DROP_PHYSICAL FIELD16(0x0004)
263 #define TXRX_CSR2_DROP_CONTROL FIELD16(0x0008)
264 #define TXRX_CSR2_DROP_NOT_TO_ME FIELD16(0x0010)
265 #define TXRX_CSR2_DROP_TODS FIELD16(0x0020)
266 #define TXRX_CSR2_DROP_VERSION_ERROR FIELD16(0x0040)
267 #define TXRX_CSR2_DROP_MULTICAST FIELD16(0x0200)
268 #define TXRX_CSR2_DROP_BROADCAST FIELD16(0x0400)
269
270
271
272
273
274
275 #define TXRX_CSR3 0x0446
276 #define TXRX_CSR4 0x0448
277
278
279
280
281 #define TXRX_CSR5 0x044a
282 #define TXRX_CSR5_BBP_ID0 FIELD16(0x007f)
283 #define TXRX_CSR5_BBP_ID0_VALID FIELD16(0x0080)
284 #define TXRX_CSR5_BBP_ID1 FIELD16(0x7f00)
285 #define TXRX_CSR5_BBP_ID1_VALID FIELD16(0x8000)
286
287
288
289
290 #define TXRX_CSR6 0x044c
291 #define TXRX_CSR6_BBP_ID0 FIELD16(0x007f)
292 #define TXRX_CSR6_BBP_ID0_VALID FIELD16(0x0080)
293 #define TXRX_CSR6_BBP_ID1 FIELD16(0x7f00)
294 #define TXRX_CSR6_BBP_ID1_VALID FIELD16(0x8000)
295
296
297
298
299 #define TXRX_CSR7 0x044e
300 #define TXRX_CSR7_BBP_ID0 FIELD16(0x007f)
301 #define TXRX_CSR7_BBP_ID0_VALID FIELD16(0x0080)
302 #define TXRX_CSR7_BBP_ID1 FIELD16(0x7f00)
303 #define TXRX_CSR7_BBP_ID1_VALID FIELD16(0x8000)
304
305
306
307
308 #define TXRX_CSR8 0x0450
309 #define TXRX_CSR8_BBP_ID0 FIELD16(0x007f)
310 #define TXRX_CSR8_BBP_ID0_VALID FIELD16(0x0080)
311 #define TXRX_CSR8_BBP_ID1 FIELD16(0x7f00)
312 #define TXRX_CSR8_BBP_ID1_VALID FIELD16(0x8000)
313
314
315
316
317 #define TXRX_CSR9 0x0452
318
319
320
321
322 #define TXRX_CSR10 0x0454
323 #define TXRX_CSR10_AUTORESPOND_PREAMBLE FIELD16(0x0004)
324
325
326
327
328 #define TXRX_CSR11 0x0456
329
330
331
332
333 #define TXRX_CSR12 0x0458
334 #define TXRX_CSR13 0x045a
335 #define TXRX_CSR14 0x045c
336 #define TXRX_CSR15 0x045e
337 #define TXRX_CSR16 0x0460
338 #define TXRX_CSR17 0x0462
339
340
341
342
343 #define TXRX_CSR18 0x0464
344 #define TXRX_CSR18_OFFSET FIELD16(0x000f)
345 #define TXRX_CSR18_INTERVAL FIELD16(0xfff0)
346
347
348
349
350
351
352
353
354 #define TXRX_CSR19 0x0466
355 #define TXRX_CSR19_TSF_COUNT FIELD16(0x0001)
356 #define TXRX_CSR19_TSF_SYNC FIELD16(0x0006)
357 #define TXRX_CSR19_TBCN FIELD16(0x0008)
358 #define TXRX_CSR19_BEACON_GEN FIELD16(0x0010)
359
360
361
362
363
364
365 #define TXRX_CSR20 0x0468
366 #define TXRX_CSR20_OFFSET FIELD16(0x1fff)
367 #define TXRX_CSR20_BCN_EXPECT_WINDOW FIELD16(0xe000)
368
369
370
371
372 #define TXRX_CSR21 0x046a
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389 #define SEC_CSR0 0x0480
390 #define SEC_CSR1 0x0482
391 #define SEC_CSR2 0x0484
392 #define SEC_CSR3 0x0486
393 #define SEC_CSR4 0x0488
394 #define SEC_CSR5 0x048a
395 #define SEC_CSR6 0x048c
396 #define SEC_CSR7 0x048e
397
398
399
400
401
402
403
404
405
406
407
408 #define SEC_CSR8 0x0490
409 #define SEC_CSR9 0x0492
410 #define SEC_CSR10 0x0494
411 #define SEC_CSR11 0x0496
412 #define SEC_CSR12 0x0498
413 #define SEC_CSR13 0x049a
414 #define SEC_CSR14 0x049c
415 #define SEC_CSR15 0x049e
416
417
418
419
420
421
422
423
424
425
426
427 #define SEC_CSR16 0x04a0
428 #define SEC_CSR17 0x04a2
429 #define SEC_CSR18 0X04A4
430 #define SEC_CSR19 0x04a6
431 #define SEC_CSR20 0x04a8
432 #define SEC_CSR21 0x04aa
433 #define SEC_CSR22 0x04ac
434 #define SEC_CSR23 0x04ae
435
436
437
438
439
440
441
442
443
444
445
446 #define SEC_CSR24 0x04b0
447 #define SEC_CSR25 0x04b2
448 #define SEC_CSR26 0x04b4
449 #define SEC_CSR27 0x04b6
450 #define SEC_CSR28 0x04b8
451 #define SEC_CSR29 0x04ba
452 #define SEC_CSR30 0x04bc
453 #define SEC_CSR31 0x04be
454
455 #define KEY_ENTRY(__idx) \
456 ( SEC_CSR0 + ((__idx) * 16) )
457
458
459
460
461
462
463
464
465 #define PHY_CSR0 0x04c0
466
467
468
469
470 #define PHY_CSR1 0x04c2
471
472
473
474
475
476
477
478
479
480
481
482 #define PHY_CSR2 0x04c4
483 #define PHY_CSR2_LNA FIELD16(0x0002)
484 #define PHY_CSR2_LNA_MODE FIELD16(0x3000)
485
486
487
488
489 #define PHY_CSR3 0x04c6
490
491
492
493
494 #define PHY_CSR4 0x04c8
495 #define PHY_CSR4_LOW_RF_LE FIELD16(0x0001)
496
497
498
499
500
501 #define PHY_CSR5 0x04ca
502 #define PHY_CSR5_CCK FIELD16(0x0003)
503 #define PHY_CSR5_CCK_FLIP FIELD16(0x0004)
504
505
506
507
508
509 #define PHY_CSR6 0x04cc
510 #define PHY_CSR6_OFDM FIELD16(0x0003)
511 #define PHY_CSR6_OFDM_FLIP FIELD16(0x0004)
512
513
514
515
516
517
518
519 #define PHY_CSR7 0x04ce
520 #define PHY_CSR7_DATA FIELD16(0x00ff)
521 #define PHY_CSR7_REG_ID FIELD16(0x7f00)
522 #define PHY_CSR7_READ_CONTROL FIELD16(0x8000)
523
524
525
526
527
528 #define PHY_CSR8 0x04d0
529 #define PHY_CSR8_BUSY FIELD16(0x0001)
530
531
532
533
534
535 #define PHY_CSR9 0x04d2
536 #define PHY_CSR9_RF_VALUE FIELD16(0xffff)
537
538
539
540
541
542
543
544
545
546 #define PHY_CSR10 0x04d4
547 #define PHY_CSR10_RF_VALUE FIELD16(0x00ff)
548 #define PHY_CSR10_RF_NUMBER_OF_BITS FIELD16(0x1f00)
549 #define PHY_CSR10_RF_IF_SELECT FIELD16(0x2000)
550 #define PHY_CSR10_RF_PLL_LD FIELD16(0x4000)
551 #define PHY_CSR10_RF_BUSY FIELD16(0x8000)
552
553
554
555
556
557 #define STA_CSR0 0x04e0
558 #define STA_CSR0_FCS_ERROR FIELD16(0xffff)
559
560
561
562
563 #define STA_CSR1 0x04e2
564
565
566
567
568 #define STA_CSR2 0x04e4
569
570
571
572
573
574 #define STA_CSR3 0x04e6
575 #define STA_CSR3_FALSE_CCA_ERROR FIELD16(0xffff)
576
577
578
579
580 #define STA_CSR4 0x04e8
581
582
583
584
585 #define STA_CSR5 0x04ea
586
587
588
589
590 #define STA_CSR6 0x04ec
591 #define STA_CSR7 0x04ee
592 #define STA_CSR8 0x04f0
593 #define STA_CSR9 0x04f2
594 #define STA_CSR10 0x04f4
595
596
597
598
599
600
601
602
603
604 #define BBP_R2_TX_ANTENNA FIELD8(0x03)
605 #define BBP_R2_TX_IQ_FLIP FIELD8(0x04)
606
607
608
609
610 #define BBP_R14_RX_ANTENNA FIELD8(0x03)
611 #define BBP_R14_RX_IQ_FLIP FIELD8(0x04)
612
613
614
615
616
617
618
619
620 #define RF1_TUNER FIELD32(0x00020000)
621
622
623
624
625 #define RF3_TUNER FIELD32(0x00000100)
626 #define RF3_TXPOWER FIELD32(0x00003e00)
627
628
629
630
631
632
633
634
635 #define EEPROM_MAC_ADDR_0 0x0002
636 #define EEPROM_MAC_ADDR_BYTE0 FIELD16(0x00ff)
637 #define EEPROM_MAC_ADDR_BYTE1 FIELD16(0xff00)
638 #define EEPROM_MAC_ADDR1 0x0003
639 #define EEPROM_MAC_ADDR_BYTE2 FIELD16(0x00ff)
640 #define EEPROM_MAC_ADDR_BYTE3 FIELD16(0xff00)
641 #define EEPROM_MAC_ADDR_2 0x0004
642 #define EEPROM_MAC_ADDR_BYTE4 FIELD16(0x00ff)
643 #define EEPROM_MAC_ADDR_BYTE5 FIELD16(0xff00)
644
645
646
647
648
649
650
651
652
653
654
655 #define EEPROM_ANTENNA 0x000b
656 #define EEPROM_ANTENNA_NUM FIELD16(0x0003)
657 #define EEPROM_ANTENNA_TX_DEFAULT FIELD16(0x000c)
658 #define EEPROM_ANTENNA_RX_DEFAULT FIELD16(0x0030)
659 #define EEPROM_ANTENNA_LED_MODE FIELD16(0x01c0)
660 #define EEPROM_ANTENNA_DYN_TXAGC FIELD16(0x0200)
661 #define EEPROM_ANTENNA_HARDWARE_RADIO FIELD16(0x0400)
662 #define EEPROM_ANTENNA_RF_TYPE FIELD16(0xf800)
663
664
665
666
667
668
669
670 #define EEPROM_NIC 0x000c
671 #define EEPROM_NIC_CARDBUS_ACCEL FIELD16(0x0001)
672 #define EEPROM_NIC_DYN_BBP_TUNE FIELD16(0x0002)
673 #define EEPROM_NIC_CCK_TX_POWER FIELD16(0x000c)
674
675
676
677
678
679 #define EEPROM_GEOGRAPHY 0x000d
680 #define EEPROM_GEOGRAPHY_GEO FIELD16(0x0f00)
681
682
683
684
685 #define EEPROM_BBP_START 0x000e
686 #define EEPROM_BBP_SIZE 16
687 #define EEPROM_BBP_VALUE FIELD16(0x00ff)
688 #define EEPROM_BBP_REG_ID FIELD16(0xff00)
689
690
691
692
693 #define EEPROM_TXPOWER_START 0x001e
694 #define EEPROM_TXPOWER_SIZE 7
695 #define EEPROM_TXPOWER_1 FIELD16(0x00ff)
696 #define EEPROM_TXPOWER_2 FIELD16(0xff00)
697
698
699
700
701 #define EEPROM_BBPTUNE 0x0030
702 #define EEPROM_BBPTUNE_THRESHOLD FIELD16(0x00ff)
703
704
705
706
707 #define EEPROM_BBPTUNE_R24 0x0031
708 #define EEPROM_BBPTUNE_R24_LOW FIELD16(0x00ff)
709 #define EEPROM_BBPTUNE_R24_HIGH FIELD16(0xff00)
710
711
712
713
714 #define EEPROM_BBPTUNE_R25 0x0032
715 #define EEPROM_BBPTUNE_R25_LOW FIELD16(0x00ff)
716 #define EEPROM_BBPTUNE_R25_HIGH FIELD16(0xff00)
717
718
719
720
721 #define EEPROM_BBPTUNE_R61 0x0033
722 #define EEPROM_BBPTUNE_R61_LOW FIELD16(0x00ff)
723 #define EEPROM_BBPTUNE_R61_HIGH FIELD16(0xff00)
724
725
726
727
728 #define EEPROM_BBPTUNE_VGC 0x0034
729 #define EEPROM_BBPTUNE_VGCUPPER FIELD16(0x00ff)
730 #define EEPROM_BBPTUNE_VGCLOWER FIELD16(0xff00)
731
732
733
734
735 #define EEPROM_BBPTUNE_R17 0x0035
736 #define EEPROM_BBPTUNE_R17_LOW FIELD16(0x00ff)
737 #define EEPROM_BBPTUNE_R17_HIGH FIELD16(0xff00)
738
739
740
741
742 #define EEPROM_CALIBRATE_OFFSET 0x0036
743 #define EEPROM_CALIBRATE_OFFSET_RSSI FIELD16(0x00ff)
744
745
746
747
748 #define TXD_DESC_SIZE ( 5 * sizeof(__le32) )
749 #define RXD_DESC_SIZE ( 4 * sizeof(__le32) )
750
751
752
753
754
755
756
757
758 #define TXD_W0_PACKET_ID FIELD32(0x0000000f)
759 #define TXD_W0_RETRY_LIMIT FIELD32(0x000000f0)
760 #define TXD_W0_MORE_FRAG FIELD32(0x00000100)
761 #define TXD_W0_ACK FIELD32(0x00000200)
762 #define TXD_W0_TIMESTAMP FIELD32(0x00000400)
763 #define TXD_W0_OFDM FIELD32(0x00000800)
764 #define TXD_W0_NEW_SEQ FIELD32(0x00001000)
765 #define TXD_W0_IFS FIELD32(0x00006000)
766 #define TXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000)
767 #define TXD_W0_CIPHER FIELD32(0x20000000)
768 #define TXD_W0_KEY_ID FIELD32(0xc0000000)
769
770
771
772
773 #define TXD_W1_IV_OFFSET FIELD32(0x0000003f)
774 #define TXD_W1_AIFS FIELD32(0x000000c0)
775 #define TXD_W1_CWMIN FIELD32(0x00000f00)
776 #define TXD_W1_CWMAX FIELD32(0x0000f000)
777
778
779
780
781 #define TXD_W2_PLCP_SIGNAL FIELD32(0x000000ff)
782 #define TXD_W2_PLCP_SERVICE FIELD32(0x0000ff00)
783 #define TXD_W2_PLCP_LENGTH_LOW FIELD32(0x00ff0000)
784 #define TXD_W2_PLCP_LENGTH_HIGH FIELD32(0xff000000)
785
786
787
788
789 #define TXD_W3_IV FIELD32(0xffffffff)
790
791
792
793
794 #define TXD_W4_EIV FIELD32(0xffffffff)
795
796
797
798
799
800
801
802
803 #define RXD_W0_UNICAST_TO_ME FIELD32(0x00000002)
804 #define RXD_W0_MULTICAST FIELD32(0x00000004)
805 #define RXD_W0_BROADCAST FIELD32(0x00000008)
806 #define RXD_W0_MY_BSS FIELD32(0x00000010)
807 #define RXD_W0_CRC_ERROR FIELD32(0x00000020)
808 #define RXD_W0_OFDM FIELD32(0x00000040)
809 #define RXD_W0_PHYSICAL_ERROR FIELD32(0x00000080)
810 #define RXD_W0_CIPHER FIELD32(0x00000100)
811 #define RXD_W0_CIPHER_ERROR FIELD32(0x00000200)
812 #define RXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000)
813
814
815
816
817 #define RXD_W1_RSSI FIELD32(0x000000ff)
818 #define RXD_W1_SIGNAL FIELD32(0x0000ff00)
819
820
821
822
823 #define RXD_W2_IV FIELD32(0xffffffff)
824
825
826
827
828 #define RXD_W3_EIV FIELD32(0xffffffff)
829
830
831
832
833
834 #define MIN_TXPOWER 0
835 #define MAX_TXPOWER 31
836 #define DEFAULT_TXPOWER 24
837
838 #define TXPOWER_FROM_DEV(__txpower) \
839 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
840
841 #define TXPOWER_TO_DEV(__txpower) \
842 clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)
843
844 #endif