-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDocumentacion-Casera-RTK-8822CE.txt
More file actions
4225 lines (3452 loc) · 175 KB
/
Copy pathDocumentacion-Casera-RTK-8822CE.txt
File metadata and controls
4225 lines (3452 loc) · 175 KB
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
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# 📘 DOCUMENTACIÓN TÉCNICA COMPLETA: Realtek RTL8822CE
## Guía de Desarrollo de Drivers para Sistemas Operativos
---
## 📋 ÍNDICE
1. [Visión General del Chip](#1-vision-general)
2. [Identificación PCI / Hardware IDs](#2-identificacion-pci)
3. [Arquitectura del Hardware](#3-arquitectura)
4. [Interfaz de Bus PCIe](#4-interfaz-pcie)
5. [Mapa de Registros MMIO (Memory-Mapped I/O)](#5-mapa-registros)
6. [Secuencia de Power-On / Power-Off](#6-power-sequence)
7. [Firmware: Carga y Comunicación H2C/C2H](#7-firmware)
8. [Sistema de Transmisión (TX)](#8-tx)
9. [Sistema de Recepción (RX)](#9-rx)
10. [EFUSE / E-Fuse Map](#10-efuse)
11. [Gestión de Energía (Power Management)](#11-power-management)
12. [Coexistencia Bluetooth](#12-bt-coex)
13. [Calibración RF y PHY](#13-calibracion)
14. [Arquitectura de Driver (modelo rtw88)](#14-arquitectura-driver)
15. [Implementación Práctica Completa en C](#15-implementacion)
16. [Referencia de Archivos de Firmware](#16-firmware-files)
17. [Compilación y Despliegue](#17-compilacion)
---
## 1. VISIÓN GENERAL DEL CHIP
El RTL8822CE es un chipset de Realtek con configuración Tx/Rx 2T2R, que cumple con los estándares IEEE 802.11a, 802.11b, 802.11g, 802.11n y 802.11ac, con interfaz de bus PCI Express. Opera en rangos de frecuencia de 5.15–5.85 GHz (802.11a/ac) y 2.412–2.484 GHz (802.11bg).
RTL8822CE combina un WLAN MAC, un baseband WLAN de 2T2R y RF en un solo chip.
El RTL8822CE MAC soporta 802.11e para aplicaciones multimedia, 802.11i y WAPI para seguridad, y 802.11n/802.11ac para eficiencia mejorada del protocolo MAC.
Además, RTL8822CE proporciona STBC (Space-Time Block Code) de un stream espacial, Transmit Beamforming (TxBF) y Low Density Parity Check (LDPC) para extender el alcance de transmisión.
La interfaz cumple con PCI Express Base Specification Revision 2.1, y USB2.0 FS-mode para Bluetooth.
### Características principales:
| Parámetro | Valor |
|---|---|
| **Chipset** | Realtek RTL8822CE-CG |
| **Estándar WiFi** | 802.11a/b/g/n/ac (WiFi 5) |
| **Bluetooth** | BT 5.0 + BLE |
| **Configuración MIMO** | 2T2R (MU-MIMO) |
| **Ancho de banda** | 20/40/80 MHz |
| **Tasa máxima (5 GHz)** | 867 Mbps |
| **Tasa máxima (2.4 GHz)** | 300 Mbps |
| **Interfaz WLAN** | PCIe 2.1 (1 lane) |
| **Interfaz BT** | USB 2.0 FS |
| **Form Factor** | M.2 2230 (Key A/E) |
| **Tensión** | 3.3V / 1.5A |
| **Temp. operación** | 0°C a +70°C |
| **MTBF** | > 150,000 horas |
### Tasas de datos soportadas:
- **802.11a:** 6, 9, 12, 18, 24, 36, 48, 54 Mbps
- **802.11b:** 1, 2, 5.5, 11 Mbps
- **802.11g:** 6, 9, 12, 18, 24, 36, 48, 54 Mbps
- **802.11n (HT):** Hasta 300 Mbps (2x2, 40 MHz, Short GI)
- **802.11ac (VHT):** Hasta 867 Mbps (2x2, 80 MHz, Short GI)
---
## 2. IDENTIFICACIÓN PCI / HARDWARE IDs
El PCI ID del RTL8822CE es `10ec:c822`. El Vendor ID es `10ec` (Realtek Semiconductor Co., Ltd.) y el Device ID es `c822`.
También existe una variante con Device ID `c82f` que igualmente corresponde al RTL8822CE.
### Tabla de Hardware IDs
| Campo | Valor |
|---|---|
| **PCI Vendor ID** | `0x10EC` |
| **PCI Device ID** | `0xC822` (principal) / `0xC82F` (variante) |
| **PCI Class Code** | `0x0280` (Network Controller: Wireless) |
| **PCI Revision** | `0x00` |
| **USB Vendor ID (BT)** | `0x0BDA` |
| **USB Device ID (BT)** | `0xC822` |
| **FCC ID** | TX2-RTL8822CE |
| **IC** | 6317A-RTL8822CE |
### Subsystem IDs conocidos:
Subsistemas conocidos incluyen AzureWave `1a3b:3750` (ASUS TUF), Hewlett-Packard `103c:85f7` (HP Stream), y Lenovo `17aa:c123` (ThinkBook 14).
```c
/* Constantes de identificación PCI */
#define RTW_PCI_VENDOR_ID_REALTEK 0x10EC
#define RTW_PCI_DEVICE_ID_8822CE 0xC822
#define RTW_PCI_DEVICE_ID_8822CE_2 0xC82F
#define RTW_PCI_CLASS_WIRELESS 0x028000
/* Tabla PCI ID para el driver */
static const struct pci_device_id rtw_8822ce_pci_ids[] = {
{ PCI_DEVICE(0x10EC, 0xC822), .driver_data = 0 },
{ PCI_DEVICE(0x10EC, 0xC82F), .driver_data = 0 },
{ /* sentinel */ }
};
```
---
## 3. ARQUITECTURA DEL HARDWARE
El chip implementa una solución Dual-Band MIMO 2x2 (11ac 2x2 MAC/BB/RF + PA) con controlador Bluetooth integrado.
### Diagrama de bloques funcional:
```
┌─────────────────────────────────────────────────────────────────┐
│ RTL8822CE SoC │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ PCIe 2.1 │ │ USB 2.0 │ │ GPIO / Misc │ │
│ │ (WLAN Bus) │ │ (BT Bus) │ │ Control Pins │ │
│ └──────┬───────┘ └──────┬───────┘ └──────────────────┘ │
│ │ │ │
│ ┌──────▼───────────────────▼──────────────────────────────┐ │
│ │ System Function (SYS) │ │
│ │ Power Management / Clock / Reset │ │
│ │ EFUSE Controller / LDO Regulators │ │
│ └──────────────┬──────────────────────┬───────────────────┘ │
│ │ │ │
│ ┌──────────────▼──────┐ ┌───────────▼───────────────┐ │
│ │ WLAN Subsystem │ │ Bluetooth Subsystem │ │
│ │ │ │ │ │
│ │ ┌──────────────┐ │ │ ┌─────────────────┐ │ │
│ │ │ MAC Layer │ │ │ │ BT Core + HCI │ │ │
│ │ │ (802.11 MAC) │ │ │ │ (BT 5.0 + BLE) │ │ │
│ │ └──────┬───────┘ │ │ └─────────────────┘ │ │
│ │ │ │ │ │ │
│ │ ┌──────▼───────┐ │ │ ┌─────────────────┐ │ │
│ │ │ Baseband │ │ │ │ BT Baseband │ │ │
│ │ │ Processor │ │ │ └─────────────────┘ │ │
│ │ │ (BB/PHY) │ │ │ │ │
│ │ └──────┬───────┘ │ └───────────┬───────────────┘ │
│ │ │ │ │ │
│ └─────────┼────────────┘ │ │
│ │ │ │
│ ┌─────────▼───────────────────────────▼───────────────────┐ │
│ │ RF Transceiver (2T2R) │ │
│ │ 2.4 GHz / 5 GHz Dual-Band │ │
│ │ with Integrated PA/LNA │ │
│ └─────────────────────┬───────────────────────────────────┘ │
│ │ │
└────────────────────────┼─────────────────────────────────────────┘
│
┌──────▼──────┐
│ 2x IPEX │
│ MHF4 │
│ Antenas │
└─────────────┘
```
### Subsistemas:
1. **SYS (System):** Control de power, clock, reset, EFUSE, reguladores
2. **MAC:** 802.11 MAC engine, TX/RX queues, encryption/decryption
3. **BB (Baseband):** OFDM/CCK/DSSS modulation, AGC, channel estimation
4. **RF:** Transceiver dual-band, synthesizer, PA, LNA
5. **BT:** Bluetooth 5.0 core con HCI sobre USB
6. **PCIe:** DMA engine, interrupt controller, bus mastering
---
## 4. INTERFAZ DE BUS PCIe
La interfaz PCIe incluye señales de PCI Express Transceiver Interface, Reference Clock Request Signal (también usado por L1 PM substates), y señal para solicitar el bus PCI Express.
La señal PCI Express Reset (PERST#) es activa baja. Cuando PERST# se activa en el estado de power-on, el RTL8822CE retorna a un estado de reset predefinido y queda listo para inicialización y configuración.
### 4.1 PCI Configuration Space (estándar 256 bytes)
```
Offset Tamaño Nombre Descripción
────── ────── ──────────────────────── ─────────────────────────────
0x00 2 Vendor ID 0x10EC (Realtek)
0x02 2 Device ID 0xC822
0x04 2 Command Bus Master, Memory Space, I/O Space
0x06 2 Status Capabilities list
0x08 1 Revision ID 0x00
0x09 3 Class Code 0x028000
0x0C 1 Cache Line Size System-dependent
0x0D 1 Latency Timer 0x00
0x0E 1 Header Type 0x00
0x0F 1 BIST 0x00
0x10 4 BAR0 (I/O) I/O port base (256 bytes)
0x14 8 BAR1 (Memory 64-bit) MMIO base (64 KB)
0x1C 4 BAR2 Not used
0x2C 2 Subsystem Vendor ID Varía por OEM
0x2E 2 Subsystem Device ID Varía por OEM
0x30 4 Expansion ROM 0x00
0x34 1 Capabilities Pointer → Power Management Cap
0x3C 1 Interrupt Line Asignado por BIOS/OS
0x3D 1 Interrupt Pin INTA#
```
### 4.2 PCIe Extended Capabilities
```
Offset Capability
────── ──────────────────────────────────
0x40 Power Management (PM)
0x50 MSI (Message Signaled Interrupts)
0x70 PCI Express Capability
0x100 Advanced Error Reporting (AER)
0x148 L1 PM Substates
0x158 Latency Tolerance Reporting (LTR)
```
### 4.3 BAR (Base Address Registers)
Los recursos de hardware del RTL8822CE típicamente incluyen puertos I/O (256 bytes) y memoria MMIO de 64KB. Por ejemplo, un dispositivo puede reportar: "I/O ports at 2000 [size=256]" y "Memory at c0700000 (64-bit, non-prefetchable) [size=64K]".
```c
/* BAR Layout */
#define RTW_BAR0_IO_SIZE 256 /* I/O port space */
#define RTW_BAR1_MMIO_SIZE 0x10000 /* 64 KB Memory-Mapped I/O */
/* Acceso a registros */
static inline u8 rtw_read8(struct rtw_dev *rtwdev, u32 addr)
{
return readb(rtwdev->mmio_base + addr);
}
static inline u16 rtw_read16(struct rtw_dev *rtwdev, u32 addr)
{
return readw(rtwdev->mmio_base + addr);
}
static inline u32 rtw_read32(struct rtw_dev *rtwdev, u32 addr)
{
return readl(rtwdev->mmio_base + addr);
}
static inline void rtw_write8(struct rtw_dev *rtwdev, u32 addr, u8 val)
{
writeb(val, rtwdev->mmio_base + addr);
}
static inline void rtw_write16(struct rtw_dev *rtwdev, u32 addr, u16 val)
{
writew(val, rtwdev->mmio_base + addr);
}
static inline void rtw_write32(struct rtw_dev *rtwdev, u32 addr, u32 val)
{
writel(val, rtwdev->mmio_base + addr);
}
/* Escritura con máscara de bits */
static inline void rtw_write32_mask(struct rtw_dev *rtwdev, u32 addr,
u32 mask, u32 data)
{
u32 shift = __ffs(mask);
u32 orig = rtw_read32(rtwdev, addr);
u32 set = (orig & ~mask) | ((data << shift) & mask);
rtw_write32(rtwdev, addr, set);
}
```
---
## 5. MAPA DE REGISTROS MMIO (Memory-Mapped I/O)
> **NOTA:** Los registros a continuación están derivados del análisis del código fuente del kernel Linux (`rtw88/reg.h`) y documentación pública FCC/Realtek. Estos incluyen registros como `REG_TIMER0_SRC_SEL` en `0x05B4`, `REG_MAR` en `0x0620`, `REG_USTIME_EDCA` en `0x0638`, `REG_ACKTO_CCK` en `0x0639`, `REG_RESP_SIFS_CCK` en `0x063C`, `REG_RESP_SIFS_OFDM` en `0x063E`, `REG_ACKTO` en `0x0640`, entre otros.
### 5.1 Registros del Sistema (SYS) — Offset `0x0000–0x00FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0000 REG_SYS_FUNC_EN 16 R/W Habilitación de funciones del sistema
BIT_FEN_BBRSTB BIT(0) Baseband Reset (activo alto)
BIT_FEN_BB_GLB_RST BIT(1) BB Global Reset
BIT_FEN_USBA BIT(2) USB Analog Enable
BIT_FEN_UPLL BIT(3) USB PLL Enable
BIT_FEN_USBD BIT(4) USB Digital Enable
BIT_FEN_DIO_PCIE BIT(5) PCIe Digital I/O Enable
BIT_FEN_PCIEA BIT(6) PCIe Analog Enable
BIT_FEN_PPLL BIT(7) PCIe PLL Enable
BIT_FEN_CPUEN BIT(10) CPU/Firmware Enable
BIT_FEN_ELDR BIT(12) EEPROM Loader Enable
BIT_FEN_HWPDN BIT(14) Hardware Power Down
BIT_FEN_MREGEN BIT(15) MAC Register Enable
0x0002 REG_SYS_PW_CTRL 16 R/W Control de alimentación del sistema
0x0004 REG_SYS_CLK_CTRL 16 R/W Control del reloj del sistema
BIT_MAC_CLK_EN BIT(11) MAC Clock Enable
BIT_ANA8M_EN BIT(10) Analog 8M Clock Enable
BIT_LOADER_CLK_EN BIT(5) Loader Clock Enable
0x0006 REG_SYS_EEPROM_CTRL 16 R/W Control EEPROM/EFUSE
BIT_AUTOLOAD_SUS BIT(5) Autoload Suspend
BIT_EERPOMSEL BIT(4) EEPROM/EFUSE Select
BIT_EEM_MASK 0x0003 EEPROM Mode Mask
0x0008 REG_EE_VPD 32 R/W EEPROM VPD Data
0x000C REG_SYS_SWR_CTRL1 32 R/W Switching Regulator Control 1
0x0010 REG_SYS_SWR_CTRL2 32 R/W Switching Regulator Control 2
0x0014 REG_SYS_SWR_CTRL3 32 R/W Switching Regulator Control 3
0x0018 REG_RSV_CTRL 16 R/W Reserved Control
BIT_WLOCK_ALL BIT(0) Write Lock All
BIT_WLOCK_08 BIT(1) Write Lock 0x08
BIT_WLOCK_04 BIT(2) Write Lock 0x04
BIT_WLOCK_00 BIT(3) Write Lock 0x00
BIT_R_DIS_PRST BIT(6) Disable Preset
0x001C REG_RF_CTRL 8 R/W RF Control
BIT_RF_EN BIT(0) RF Block Enable
BIT_RF_RSTB BIT(1) RF Reset (active low)
BIT_RF_SDM_RSTB BIT(2) RF SDM Reset
0x001E REG_AFE_CTRL1 16 R/W AFE (Analog Front End) Control 1
0x0020 REG_AFE_CTRL2 32 R/W AFE Control 2
0x0024 REG_AFE_CTRL3 32 R/W AFE Control 3
0x0028 REG_EFUSE_CTRL 32 R/W EFUSE Access Control
0x002C REG_LDO_EFUSE_CTRL 32 R/W LDO EFUSE Control
0x0030 REG_PWR_OPTION_CTRL 32 R/W Power Option Control
0x0038 REG_CAL_TIMER 32 R/W Calibration Timer
0x003C REG_ACLK_MON 32 R/W Clock Monitor
0x0040 REG_GPIO_MUXCFG 32 R/W GPIO Multiplexer Config
BIT_FSPI_EN BIT(19) Flash SPI Enable
BIT_EN_SIC BIT(12) Enable SIC Interface
BIT_BT_AOD_GPIO3 BIT(9) BT GPIO3 Control
BIT_BT_PAPE_CTRL BIT(4) BT PA/PE Control
0x0044 REG_GPIO_PIN_CTRL 32 R/W GPIO Pin Control
0x0048 REG_GPIO_INTM 32 R/W GPIO Interrupt Mask
0x004C REG_LED_CFG 32 R/W LED Configuration
BIT_LNAON_SEL_EN BIT(26) LNA ON Select Enable
BIT_PAPE_SEL_EN BIT(25) PA/PE Select Enable
BIT_GPIO13_14_WL_CTRL BIT(22) GPIO13/14 WLAN Control
0x0050 REG_FSIMR 32 R/W Function Specific Interrupt Mask
0x0054 REG_FSISR 32 R/C Function Specific Interrupt Status
0x0058 REG_HSIMR 32 R/W Host System Interrupt Mask
0x005C REG_HSISR 32 R/C Host System Interrupt Status
0x0060 REG_GPIO_EXT_CTRL 32 R/W Extended GPIO Control
0x0064 REG_PAD_CTRL1 32 R/W Pad Control 1
0x0068 REG_WL_BT_PWR_CTRL 32 R/W WLAN/BT Power Control
0x006C REG_SDM_DEBUG 32 R SDM Debug
0x0070 REG_SYS_SDIO_CTRL 32 R/W SDIO Control
0x0074 REG_HCI_OPT_CTRL 32 R/W HCI Option Control
0x0078 REG_AFE_CTRL4 32 R/W AFE Control 4
0x0080 REG_LDO_SWR_CTRL 32 R/W LDO/SWR Control
0x0084 REG_FW_CTRL 32 R/W Firmware Control
0x0090 REG_MCUFW_CTRL 32 R/W MCU Firmware Control
BIT_MCUFWDL_EN BIT(0) MCU Firmware Download Enable
BIT_MCUFWDL_RDY BIT(1) MCU Firmware Download Ready
BIT_FWDL_CHK_RPT BIT(2) FW Download Check Report
BIT_WINTINI_RDY BIT(6) WLAN Init Ready
BIT_RAM_DL_SEL BIT(7) RAM Download Select
BIT_ROM_DLEN BIT(19) ROM Download Enable
BIT_CPU_CLK_SEL GENMASK(15,12) CPU Clock Select
0x0094 REG_MCU_TST_CFG 32 R/W MCU Test Configuration
0x0098 REG_HMEBOX_E0_E1 32 R/W H2C Mailbox Extension 0/1
0x009C REG_HMEBOX_E2_E3 32 R/W H2C Mailbox Extension 2/3
0x00FC REG_SYS_CFG1 32 R System Configuration 1
BIT_RTL_ID BIT(23) RTL ID
BIT_SYS_CFG_SPSRAM BIT(22) SP-SRAM
BIT_SYS_CFG_CLK BIT(20) System Clock Config
BIT_CHIP_VER GENMASK(15,12) Chip Version
BIT_RF_TYPE_ID GENMASK(11,8) RF Type ID
BIT_VENDOR_ID GENMASK(7,4) Vendor ID
BIT_EXT_VENDOR_ID GENMASK(3,0) Extended Vendor ID
```
### 5.2 Registros del MAC TX — Offset `0x0200–0x03FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0200 REG_TXDMA_OFFSET_CHK 32 R/W TX DMA Offset Check
0x0204 REG_DBI_WDATA 32 R/W DBI Write Data
0x0208 REG_DBI_RDATA 32 R DBI Read Data
0x020C REG_DBI_ADDR_FLAG 32 R/W DBI Address/Flag
0x0210 REG_TXPKTBUF_BCNQ_BDNY 8 R/W Beacon Queue Boundary
0x0211 REG_TXPKTBUF_MGQ_BDNY 8 R/W Management Queue Boundary
0x0212 REG_LIFETIME_EN 8 R/W TX Lifetime Enable
BIT_LIFETIME_BK_EN BIT(0)
BIT_LIFETIME_BE_EN BIT(1)
BIT_LIFETIME_VI_EN BIT(2)
BIT_LIFETIME_VO_EN BIT(3)
0x0214 REG_MULTI_BCNQ_OFFSET 32 R/W Multi-Beacon Queue Offset
0x0218 REG_SPEC_SIFS 16 R/W Special SIFS Timing
0x021A REG_RL 16 R/W Retry Limit
BIT_SRL GENMASK(5,0) Short Retry Limit
BIT_LRL GENMASK(13,8) Long Retry Limit
0x021C REG_TXPKTBUF_WMAC_LBK_BF_HD 32 R/W TX Pkt Buf WMAC Loopback
0x0220 REG_DARFRC 32 R/W Data Auto Rate Fallback Count
0x0224 REG_RARFRC 32 R/W Response Auto Rate Fallback Count
0x0228 REG_RRSR 32 R/W Response Rate Set Register
BIT_RRSR_RSC GENMASK(22,21) Response SC
BIT_RRSR_RATE GENMASK(19,0) Response Rate Bitmap
0x022C REG_ARFR0 32 R/W Auto Rate Fallback Register 0
0x0230 REG_ARFR0_H 32 R/W ARFR0 High Part
0x0234 REG_ARFR1 32 R/W Auto Rate Fallback Register 1
0x0238 REG_ARFR1_H 32 R/W ARFR1 High Part
0x023C REG_CCK_CHECK 8 R/W CCK Check
0x0240 REG_AMPDU_MAX_TIME 8 R/W A-MPDU Max Time (μs)
0x0241 REG_BCNQ1_BDNY 8 R/W Beacon Queue 1 Boundary
0x0242 REG_AMPDU_MAX_LENGTH 32 R/W A-MPDU Maximum Length
0x0260 REG_FAST_EDCA_CTRL 32 R/W Fast EDCA Control
BIT_FAST_EDCA_VO GENMASK(7,0)
BIT_FAST_EDCA_VI GENMASK(15,8)
BIT_FAST_EDCA_BE GENMASK(23,16)
BIT_FAST_EDCA_BK GENMASK(31,24)
0x0280 REG_INIRTS_RATE_SEL 8 R/W Initial RTS Rate Select
0x0281 REG_POWER_STATUS 8 R Power Status
0x0290 REG_PKT_VO_VI_LIFE_TIME 32 R/W VO/VI Packet Lifetime
0x0294 REG_PKT_BE_BK_LIFE_TIME 32 R/W BE/BK Packet Lifetime
0x0298 REG_STBC_SETTING 32 R/W STBC Settings
0x029C REG_QUEUE_CTRL 32 R/W Queue Control
BIT_PTA_EDCCA_EN BIT(5)
BIT_PTA_WL_TX_EN BIT(4)
0x02F0 REG_RD_NAV_NXT 16 R/W Read NAV Next
0x02F2 REG_RD_RESP_PKT_TH 8 R/W Response Packet Threshold
0x02F4 REG_TXPAUSE 8 R/W TX Pause Control
BIT_STOP_BCN BIT(6)
BIT_STOP_MGT BIT(5)
BIT_STOP_BK BIT(4)
BIT_STOP_BE BIT(3)
BIT_STOP_VI BIT(2)
BIT_STOP_VO BIT(1)
BIT_STOP_HI BIT(0)
0x02F8 REG_DIS_TXREQ_CLR 32 R/W Disable TX Request Clear
0x02FC REG_RD_CTRL 16 R/W Read Control
```
### 5.3 Registros del MAC RX — Offset `0x0600–0x06FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0600 REG_RCR 32 R/W Receive Configuration Register
BIT_APP_FCS BIT(31) Append FCS
BIT_APP_MIC BIT(30) Append MIC
BIT_APP_ICV BIT(29) Append ICV
BIT_APP_PHYSTS BIT(28) Append PHY Status
BIT_APP_BASSN BIT(27) Append BA SSN
BIT_VHT_DACK BIT(26) VHT D-ACK
BIT_TCPOFLD_EN BIT(25) TCP Offload Enable
BIT_ENMBID BIT(24) Enable MBID
BIT_LSIGEN BIT(23) L-SIG Enable
BIT_MFBEN BIT(22) MFB Enable
BIT_DISCHKPPDLLEN BIT(21) Disable CHK PPDU Length
BIT_PKTCTL_DLEN BIT(20) Packet Control DLEN
BIT_TIM_PARSER_EN BIT(18) TIM Parser Enable
BIT_BC_MD_EN BIT(17) BC MD Enable
BIT_UC_MD_EN BIT(16) UC MD Enable
BIT_RXSK_PERPKT BIT(15) RX SK Per Packet
BIT_HTC_LOC_CTRL BIT(14) HTC LOC Control
BIT_RPFM_CAM_ENABLE BIT(12) RPFM CAM Enable
BIT_TA_BCN BIT(11) TA Beacon
BIT_RCR_ADF BIT(11) Accept Data Frame
BIT_DISDECMYPKT BIT(10) Disable Decrypt My Packet
BIT_AICV BIT(9) Accept ICV Error
BIT_ACRC32 BIT(8) Accept CRC32 Error
BIT_CBSSID_BCN BIT(7) Check BSSID Beacon
BIT_CBSSID_DATA BIT(6) Check BSSID Data
BIT_APWRMGT BIT(5) Accept Power Management
BIT_ADD3 BIT(4) Accept Address 3 Match
BIT_AB BIT(3) Accept Broadcast
BIT_AM BIT(2) Accept Multicast
BIT_APM BIT(1) Accept Physical Match (Unicast)
BIT_AAP BIT(0) Accept All Packets
0x0604 REG_RCR_EXT 32 R/W Extended Receive Configuration
0x0608 REG_RX_PKT_LIMIT 8 R/W RX Packet Size Limit
0x060C REG_RX_DLK_TIME 8 R/W RX Deadlock Time
0x0610 REG_RXPKTBUF_CTRL 32 R/W RX Packet Buffer Control
0x0614 REG_RXDMA_CTRL 8 R/W RX DMA Control
0x0618 REG_RXDMA_PRO 32 R/W RX DMA Protocol
0x0620 REG_MAR 64 R/W Multicast Address Register
[0x0620] REG_MAR_L Lower 32 bits
[0x0624] REG_MAR_H Upper 32 bits
0x0638 REG_USTIME_EDCA 8 R/W μs Time for EDCA
0x0639 REG_ACKTO_CCK 8 R/W ACK Timeout (CCK)
0x063A REG_MAC_SPEC_SIFS 16 R/W MAC Specific SIFS Time
0x063C REG_RESP_SIFS_CCK 8 R/W Response SIFS (CCK)
0x063D REG_RESP_SIFS_OFDM 8 R/W Response SIFS (OFDM)
0x063E REG_RESP_SIFS_OFDM 16 R/W Response SIFS (OFDM, 16-bit)
0x0640 REG_ACKTO 8 R/W ACK Timeout (OFDM)
0x0641 REG_CTS2TO 8 R/W CTS2Self Timeout
0x0642 REG_EIFS 16 R/W EIFS Duration
```
### 5.4 Registros EDCA (802.11e QoS) — Offset `0x0500–0x05FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0500 REG_EDCA_VO_PARAM 32 R/W EDCA VO Parameters
BIT_TXOPLIMIT_VO GENMASK(26,16) TXOP Limit VO
BIT_ECWIN_MAX_VO GENMASK(15,12) ECW max VO
BIT_ECWIN_MIN_VO GENMASK(11,8) ECW min VO
BIT_AIFS_VO GENMASK(7,0) AIFS VO
0x0504 REG_EDCA_VI_PARAM 32 R/W EDCA VI Parameters
0x0508 REG_EDCA_BE_PARAM 32 R/W EDCA BE Parameters
0x050C REG_EDCA_BK_PARAM 32 R/W EDCA BK Parameters
0x0510 REG_BCNTCFG 16 R/W Beacon Time Config
0x0512 REG_PIFS 8 R/W PIFS Duration
0x0514 REG_RDG_PIFS 16 R/W RDG PIFS
0x0516 REG_SIFS 16 R/W SIFS Duration
BIT_SIFS_CCK GENMASK(7,0) SIFS for CCK
BIT_SIFS_OFDM GENMASK(15,8) SIFS for OFDM
0x0518 REG_TSFTR_SYN_OFFSET 16 R/W TSF Timer Sync Offset
0x051A REG_AGGR_BREAK_TIME 8 R/W Aggregation Break Time
0x0520 REG_SLOT 8 R/W Slot Time (9μs o 20μs)
0x0524 REG_TX_PTCL_CTRL 32 R/W TX Protocol Control
0x0528 REG_TXPAUSE_TH 32 R/W TX Pause Threshold
0x052C REG_DIS_TXREQ 32 R/W Disable TX Request
0x0550 REG_TBTT_PROHIBIT 32 R/W TBTT Prohibit
0x0554 REG_RD_NAV_NXT 16 R/W RD NAV Next
0x0558 REG_NAV_PROT_LEN 16 R/W NAV Protection Length
0x055A REG_BCN_CTRL 8 R/W Beacon Control
BIT_DIS_TSF_UDT BIT(4) Disable TSF Update
BIT_EN_BCN_FUNCTION BIT(3) Enable Beacon Function
BIT_EN_TXBCN_RPT BIT(2) Enable TX Beacon Report
BIT_DIS_RX_BSSID_FIT BIT(1) Disable RX BSSID Fit
BIT_DIS_ATIM BIT(0) Disable ATIM Window
0x055C REG_BCN_CTRL_1 8 R/W Beacon Control 1 (port 1)
0x0560 REG_MBID_NUM 8 R/W Multi-BSSID Number
0x0562 REG_DUAL_TSF_RST 8 R/W Dual TSF Reset
0x0564 REG_BCN_INTERVAL 16 R/W Beacon Interval (TU)
0x0568 REG_DRVERLYINT 8 R/W Driver Early Interrupt
0x0569 REG_BCNDMATIM 8 R/W Beacon DMA Time
0x056A REG_ATIMWND 16 R/W ATIM Window
0x056C REG_USTIME_TSF 8 R/W μs Time for TSF
0x0570 REG_BCN_MAX_ERR 8 R/W Max Beacon Error
0x0578 REG_RXTSF_OFFSET_CCK 8 R/W RX TSF Offset (CCK)
0x057A REG_RXTSF_OFFSET_OFDM 8 R/W RX TSF Offset (OFDM)
0x0580 REG_TSFTR 64 R TSF Timer Register
[0x0580] REG_TSFTR_L Lower 32 bits
[0x0584] REG_TSFTR_H Upper 32 bits
0x0588 REG_TSFTR1 64 R TSF Timer 1 (Port 1)
0x0590 REG_ATIMWND_1 16 R/W ATIM Window 1
0x05A0 REG_CTWND 16 R/W Contention Window
0x05A4 REG_SECONDARY_CCA_CTRL 32 R/W Secondary CCA Control
0x05A7 REG_HIQ_NO_LMT_EN 8 R/W HI Queue No Limit Enable
BIT_HIQ_NO_LMT_EN_ROOT BIT(0)
0x05B4 REG_TIMER0_SRC_SEL 32 R/W Timer0 Source Select
BIT_TSFT_SEL_TIMER0 (BIT(4)|BIT(5)|BIT(6))
```
### 5.5 Registros de Control de Interrupciones — Offset `0x0300–0x03FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0300 REG_HIMR0 32 R/W Host Interrupt Mask Register 0
BIT_TXBCNOK BIT(25) TX Beacon OK
BIT_TXBCNERR BIT(24) TX Beacon Error
BIT_GTINT4_INT BIT(23) General Timer Int 4
BIT_GTINT3_INT BIT(22) General Timer Int 3
BIT_ATIMEND BIT(20) ATIM End
BIT_BCNDERR0 BIT(16) Beacon DMA Error 0
BIT_HSISR_IND BIT(15) HSISR Indicator
BIT_BCNDMAINT0 BIT(14) Beacon DMA Interrupt 0
BIT_BCNINT0 BIT(13) Beacon Interrupt 0
BIT_PSTIMEOUT BIT(12) PS Timeout
BIT_C2H_INT BIT(11) C2H Interrupt (FW → Host)
BIT_CPWM_INT BIT(10) CPWM Interrupt
BIT_CPWM2_INT BIT(9) CPWM2 Interrupt
BIT_HIGHDOK_INT BIT(7) HIGH Queue TX Done OK
BIT_MGTDOK_INT BIT(6) Management Queue TX Done OK
BIT_BKDOK_INT BIT(5) BK Queue TX Done OK
BIT_BEDOK_INT BIT(4) BE Queue TX Done OK
BIT_VIDOK_INT BIT(3) VI Queue TX Done OK
BIT_VODOK_INT BIT(2) VO Queue TX Done OK
BIT_RDU_INT BIT(1) RX Descriptor Unavailable
BIT_RXOK_INT BIT(0) RX OK
0x0304 REG_HISR0 32 R/C Host Interrupt Status Register 0
(mismos bits que HIMR0)
0x0308 REG_HIMR1 32 R/W Host Interrupt Mask Register 1
BIT_TXFOVW BIT(9) TX FIFO Overflow
BIT_FOVW BIT(8) RX FIFO Overflow
BIT_RXERR BIT(7) RX Error
BIT_TXERR BIT(6) TX Error
BIT_ATIM_CTW_END BIT(5) ATIM/CTW End
BIT_PSTIMEOUT1 BIT(4) PS Timeout 1
BIT_PSTIMEOUT2 BIT(3) PS Timeout 2
BIT_GTINT5 BIT(2) General Timer Int 5
BIT_GTINT6 BIT(1) General Timer Int 6
BIT_GTINT7 BIT(0) General Timer Int 7
0x030C REG_HISR1 32 R/C Host Interrupt Status Register 1
/* Registros de interrupción específicos de PCIe */
0x0350 REG_PCIE_HIMR0 32 R/W PCIe Host Interrupt Mask 0
0x0354 REG_PCIE_HISR0 32 R/C PCIe Host Interrupt Status 0
0x0358 REG_PCIE_HIMR1 32 R/W PCIe Host Interrupt Mask 1
0x035C REG_PCIE_HISR1 32 R/C PCIe Host Interrupt Status 1
```
### 5.6 Registros del Firmware Mailbox (H2C/C2H) — Offset `0x01D0–0x01FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x01D0 REG_HMEBOX0 32 W Host-to-Chip Mailbox 0
0x01D4 REG_HMEBOX1 32 W Host-to-Chip Mailbox 1
0x01D8 REG_HMEBOX2 32 W Host-to-Chip Mailbox 2
0x01DC REG_HMEBOX3 32 W Host-to-Chip Mailbox 3
0x01CC REG_HMETFR 32 R/W H2C Message Transfer
BIT_INT_BOX0 BIT(0) Mailbox 0 Interrupt
BIT_INT_BOX1 BIT(1) Mailbox 1 Interrupt
BIT_INT_BOX2 BIT(2) Mailbox 2 Interrupt
BIT_INT_BOX3 BIT(3) Mailbox 3 Interrupt
/* Extensiones de Mailbox */
0x0098 REG_HMEBOX_E0_E1 32 W Extended Mailbox 0/1
0x009C REG_HMEBOX_E2_E3 32 W Extended Mailbox 2/3
/* C2H (Chip-to-Host) Event Report via RX path */
/* Los eventos C2H se reciben como paquetes especiales en el RX ring */
```
### 5.7 Registros de Seguridad (Security Engine) — Offset `0x0680–0x06FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0680 REG_CAMCMD 32 R/W CAM (Content Addressable Memory) Command
BIT_CAM_POLLING BIT(31) CAM Polling/Busy
BIT_CAM_CLR BIT(30) Clear All CAM
BIT_CAM_WE BIT(16) Write Enable
BIT_CAM_ADDR GENMASK(7,0) CAM Address
0x0684 REG_CAMWRITE 32 W CAM Write Data
0x0688 REG_CAMREAD 32 R CAM Read Data
0x068C REG_CAMDBG 32 R/W CAM Debug
0x0690 REG_SECCFG 8 R/W Security Configuration
BIT_SEC_TX_DEC_EN BIT(0) TX Decryption Enable
BIT_SEC_RX_DEC_EN BIT(1) RX Decryption Enable
BIT_SEC_TX_ENC_EN BIT(2) TX Encryption Enable
BIT_SEC_RX_ENC_EN BIT(3) RX Encryption Enable
BIT_SEC_SKB_ADDR BIT(4) SK by Address
BIT_SEC_MC_SA BIT(5) MC by SA
BIT_SEC_BC_SA BIT(6) BC by SA
```
### 5.8 Registros WMAC — Offset `0x0400–0x04FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0400 REG_VOQ_INFO 32 R VO Queue Information
0x0404 REG_VIQ_INFO 32 R VI Queue Information
0x0408 REG_BEQ_INFO 32 R BE Queue Information
0x040C REG_BKQ_INFO 32 R BK Queue Information
0x0410 REG_MGQ_INFO 32 R Management Queue Information
0x0414 REG_HGQ_INFO 32 R HIGH Queue Information
0x0418 REG_BCNQ_INFO 32 R Beacon Queue Information
0x0420 REG_TXPKT_EMPTY 32 R TX Packet Empty Status
BIT_HQQ_EMPTY BIT(7)
BIT_MQQ_EMPTY BIT(6)
BIT_BKQ_EMPTY BIT(5)
BIT_BEQ_EMPTY BIT(4)
BIT_VIQ_EMPTY BIT(3)
BIT_VOQ_EMPTY BIT(2)
BIT_BCNQ_EMPTY BIT(1)
0x0430 REG_CPU_MGQ_INFO 32 R CPU Management Queue Info
0x0440 REG_FWHW_TXQ_CTRL 32 R/W FW/HW TX Queue Control
BIT_EN_BCNQ_DL BIT(22) Enable Beacon Queue Download
BIT_EN_WR_FREE_TAIL BIT(20) Enable Write Free Tail
0x0444 REG_HWSEQ_CTRL 32 R/W HW Sequence Control
0x0448 REG_TXPKTBUF_BCNQ1_BDNY 8 R/W BCN Queue 1 Boundary
0x044C REG_TXPKTBUF_HI1Q_BDNY 8 R/W HI Queue 1 Boundary
0x0460 REG_MACID 48 R/W MAC Address (Port 0)
[0x0460] REG_MACID_L Lower 32 bits
[0x0464] REG_MACID_H Upper 16 bits
0x0468 REG_BSSID 48 R/W BSSID (Port 0)
[0x0468] REG_BSSID_L Lower 32 bits
[0x046C] REG_BSSID_H Upper 16 bits
0x0470 REG_MACID1 48 R/W MAC Address (Port 1)
0x0478 REG_BSSID1 48 R/W BSSID (Port 1)
0x0480 REG_CR 32 R/W Command Register
BIT_HCI_TXDMA_EN BIT(0) HCI TX DMA Enable
BIT_HCI_RXDMA_EN BIT(1) HCI RX DMA Enable
BIT_TXDMA_EN BIT(2) TX DMA Enable
BIT_RXDMA_EN BIT(3) RX DMA Enable
BIT_PROTOCOL_EN BIT(4) Protocol Engine Enable
BIT_SCHEDULE_EN BIT(5) Scheduler Enable
BIT_MAC_TX_EN BIT(6) MAC TX Enable
BIT_MAC_RX_EN BIT(7) MAC RX Enable
BIT_ENSWBCN BIT(8) Enable SW Beacon
BIT_ENSEC BIT(9) Enable Security Engine
BIT_CALTMR_EN BIT(10) Calibration Timer Enable
0x0484 REG_PBP 8 R/W Page Size Configuration
BIT_PSTX GENMASK(7,4) TX Page Size
BIT_PSRX GENMASK(3,0) RX Page Size
0x0488 REG_TRXDMA_CTRL 16 R/W TRX DMA Control
0x048C REG_TRXFF_BNDY 16 R/W TRX FIFO Boundary
0x0490 REG_TRXFF_STATUS 16 R TRX FIFO Status
0x04A0 REG_RXFF_PTR 16 R RX FIFO Read Pointer
0x04A2 REG_RXFF_WTR 16 R RX FIFO Write Pointer
0x04C4 REG_RXPKTNUM 32 R RX Packet Number
0x04D8 REG_BCNQ_BDNY_V1 16 R/W Beacon Queue Boundary V1
0x04DE REG_FIFOPAGE_CTRL_2 32 R/W FIFO Page Control 2
0x04E0 REG_RQPN_CTRL_1 32 R/W Reserved Queue Page Number Ctrl 1
0x04E4 REG_RQPN_CTRL_2 32 R/W Reserved Queue Page Number Ctrl 2
```
### 5.9 Registros del Baseband (BB/PHY) — Offset `0x0800–0x0FFF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0800 REG_FPGA0_RFMOD 32 R/W FPGA0 RF Mode
BIT_CCKEN BIT(24) CCK Enable
BIT_OFDMEN BIT(25) OFDM Enable
0x0804 REG_FPGA0_TXINFO 32 R/W FPGA0 TX Info
0x0808 REG_FPGA0_PSD_FUNC 32 R/W PSD Function
0x080C REG_FPGA0_PSD_REPORT 32 R PSD Report
0x0824 REG_FPGA0_XA_HSSI_PARM1 32 R/W Path A HSSI Parameter 1
0x0828 REG_FPGA0_XA_HSSI_PARM2 32 R/W Path A HSSI Parameter 2
0x082C REG_FPGA0_XB_HSSI_PARM1 32 R/W Path B HSSI Parameter 1
0x0830 REG_FPGA0_XB_HSSI_PARM2 32 R/W Path B HSSI Parameter 2
0x0838 REG_FPGA0_XA_LSSI_PARM 32 R/W Path A LSSI Parameter (RF write)
0x083C REG_FPGA0_XB_LSSI_PARM 32 R/W Path B LSSI Parameter (RF write)
0x0840 REG_FPGA0_RFMOD_EX 32 R/W RF Mode Extension
0x0844 REG_FPGA0_XA_RF_OE 32 R/W Path A RF Output Enable
0x0848 REG_FPGA0_XB_RF_OE 32 R/W Path B RF Output Enable
0x08A0 REG_CCK0_SYSTEM 32 R/W CCK System
0x08A4 REG_CCK0_AFE_SET 32 R/W CCK AFE Setting
0x08B4 REG_CCK0_CCA 32 R/W CCK CCA
0x0900 REG_OFDM0_TRX_PATH_EN 32 R/W OFDM TRX Path Enable
0x0904 REG_OFDM0_TR_MUX_PAR 32 R/W OFDM TR Mux Parameter
0x090C REG_OFDM0_FA_RSTC 32 R/W OFDM FA Reset Counter
0x0910 REG_OFDM0_FA_HOLDQ 32 R/W OFDM FA Hold Count
0x0914 REG_OFDM0_XAAGC_CORE1 32 R/W Path A AGC Core 1
0x0918 REG_OFDM0_XAAGC_CORE2 32 R/W Path A AGC Core 2
0x091C REG_OFDM0_XBAGC_CORE1 32 R/W Path B AGC Core 1
0x0920 REG_OFDM0_XBAGC_CORE2 32 R/W Path B AGC Core 2
0x0950 REG_OFDM0_AGC_PARM1 32 R/W AGC Parameter 1
0x0954 REG_OFDM0_AGC_RSSITAB 32 R/W AGC RSSI Table
0x0C00 REG_OFDM1_LSTF 32 R/W OFDM1 L-STF
0x0C04 REG_OFDM1_TRX_PATH_EN 32 R/W OFDM1 TRX Path Enable
0x0C14 REG_OFDM1_CSI_FIX1 32 R/W CSI Fix Register 1
0x0C18 REG_OFDM1_CSI_FIX2 32 R/W CSI Fix Register 2
0x0C50 REG_OFDM_FA_TYPE1_CNT 32 R OFDM FA Type 1 Count
0x0C54 REG_OFDM_FA_TYPE2_CNT 32 R OFDM FA Type 2 Count
0x0C58 REG_OFDM_FA_TYPE3_CNT 32 R OFDM FA Type 3 Count
0x0C5C REG_OFDM_FA_TYPE4_CNT 32 R OFDM FA Type 4 Count
0x0D00 REG_OFDM1_AGC_TABLE 32 R/W OFDM AGC Table Entry
```
### 5.10 Registros de RF (acceso indirecto) — Offset `0x0840–0x087F`
Los registros RF se acceden **indirectamente** a través de los registros LSSI/HSSI del Baseband.
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0838 REG_RF_PATH_A_WRITE 32 W RF Path A Write (LSSI)
BIT_RF_ADDR GENMASK(27,20) RF Register Address
BIT_RF_DATA GENMASK(19,0) RF Register Data
0x083C REG_RF_PATH_B_WRITE 32 W RF Path B Write (LSSI)
0x08A0 REG_RF_PATH_A_READ 32 R RF Path A Read
BIT_RF_DATA_RD GENMASK(19,0) RF Register Read Data
/* RF Register Map (acceso indirecto) */
RF_REG Nombre Descripción
──────── ─────────────────────── ──────────────────────────────
0x00 RF_CTRL RF Control/Mode
0x08 RF_TXLOK TX LO Leakage Calibration
0x0B RF_PLL_MON PLL Monitor
0x0D RF_DPK_TXAGC DPK TX AGC
0x18 RF_CHANNEL Channel Number / Band
0x1A RF_RX_G1 RX Gain 1
0x1C RF_RX_G2 RX Gain 2
0x1E RF_RXA_MIX_GAIN RXA Mixer Gain
0x2B RF_XTAL_CTRL Crystal Control
0x30 RF_TX_GAIN TX Gain Index
0x33 RF_TXA_PAD TXA PA Driver
0x3C RF_RX_BB_GAIN RX Baseband Gain
0x3F RF_TX_POWER_TRIM TX Power Trim
0x43 RF_IQK IQ Calibration
0x51 RF_AGC_TABLE_A AGC Table A
0x52 RF_AGC_TABLE_B AGC Table B
0x55 RF_RFE_TYPE RFE Type
0x57 RF_LNA_OPT LNA Optimization
0x58 RF_WLSEL WLAN Selection
0x63 RF_PA_TANK_TUNE PA Tank Tuning
0x65 RF_PA_BIAS PA Bias
0x7C RF_DPK Digital Pre-Distortion (DPK)
0x7F RF_DBG RF Debug
0x85 RF_TX_TRACK_CTRL TX Tracking Control
0x8F RF_TSSI TSSI (TX Signal Strength Indicator)
0xB0 RF_SYNTH_CTRL Synthesizer Control
0xDE RF_T_METER Temperature Meter
0xDF RF_THERMAL Thermal Sensor
0xEF RF_ACCESS_CTRL Access Control (mode select)
```
### 5.11 Registros de Coexistencia BT — Offset `0x0764–0x07FF`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
0x0764 REG_BT_COEX_TABLE0 32 R/W BT Coex Table 0
0x0768 REG_BT_COEX_TABLE1 32 R/W BT Coex Table 1
0x076C REG_BT_COEX_BRK_TABLE 32 R/W BT Coex Break Table
0x0770 REG_BT_COEX_TABLE_H 32 R/W BT Coex Table High
0x0774 REG_BT_COEX_V2 32 R/W BT Coex V2
0x0778 REG_BT_STAT_CTRL 32 R/W BT Status Control
0x077C REG_BT_PATCH_STATUS 32 R BT Patch Status
0x0790 REG_BT_TDMA_TIME 32 R/W BT TDMA Timing
0x0794 REG_BT_ACT_STATS 32 R BT Activity Statistics
0x0798 REG_LTR_IDLE_LATENCY 32 R/W LTR Idle Latency
0x079C REG_LTR_ACTIVE_LATENCY 32 R/W LTR Active Latency
0x07A4 REG_LTR_CTRL_BASIC 32 R/W LTR Basic Control
0x07C0 REG_BT_ACT_REG 32 R/W BT Activity Register
0x07C4 REG_OBFF_CTRL 32 R/W OBFF Control
0x07D0 REG_WMAC_OPTION_FUNCTION 32 R/W WMAC Option Function
0x07D4 REG_WMAC_OPTION_FUNCTION_1 32 R/W WMAC Option Function 1
/* LTE Coex */
0x07C8 REG_LTE_COEX_CTRL 32 R/W LTE Coex Control
BIT_LTE_COEX_EN BIT(7) LTE Coex Enable
```
### 5.12 Registros DMA / PCIe específicos — Offset `0x0300–0x033F`
```
Offset Nombre Bits R/W Descripción
──────── ─────────────────────── ───── ──── ──────────────────────────────────
/* TX DMA Ring Addresses (cada ring = base + length) */
0x0300 REG_PCIE_CTRL 32 R/W PCIe Control Register
0x0304 REG_INT_MIG 32 R/W Interrupt Mitigation
0x0308 REG_PCIE_MULTIFET_CTRL 32 R/W Multi-Fetch Control
/* TX Queue Ring Descriptors */
0x0310 REG_VOQ_TXBD_DESA 32 R/W VO Queue TX BD Descriptor Addr (Low)
0x0314 REG_VOQ_TXBD_DESA_H 32 R/W VO Queue TX BD Descriptor Addr (High)
0x0318 REG_VOQ_TXBD_NUM 16 R/W VO Queue TX BD Count
0x0320 REG_VIQ_TXBD_DESA 32 R/W VI Queue TX BD Descriptor Addr (Low)
0x0324 REG_VIQ_TXBD_DESA_H 32 R/W VI Queue TX BD Descriptor Addr (High)
0x0328 REG_VIQ_TXBD_NUM 16 R/W VI Queue TX BD Count
0x0330 REG_BEQ_TXBD_DESA 32 R/W BE Queue TX BD Descriptor Addr
0x0334 REG_BEQ_TXBD_DESA_H 32 R/W (High 32-bit)
0x0338 REG_BEQ_TXBD_NUM 16 R/W BE Queue TX BD Count
0x0340 REG_BKQ_TXBD_DESA 32 R/W BK Queue TX BD Descriptor Addr
0x0344 REG_BKQ_TXBD_DESA_H 32 R/W (High 32-bit)
0x0348 REG_BKQ_TXBD_NUM 16 R/W BK Queue TX BD Count
0x0350 REG_MGQ_TXBD_DESA 32 R/W Management Queue TX BD Addr
0x0354 REG_MGQ_TXBD_DESA_H 32 R/W (High 32-bit)
0x0358 REG_MGQ_TXBD_NUM 16 R/W MGT Queue TX BD Count
0x0360 REG_RXQ_RXBD_DESA 32 R/W RX Queue RX BD Descriptor Addr
0x0364 REG_RXQ_RXBD_DESA_H 32 R/W (High 32-bit)
0x0368 REG_RXQ_RXBD_NUM 16 R/W RX Queue RX BD Count
0x0370 REG_HIQ_TXBD_DESA 32 R/W HI Queue TX BD Addr
0x0374 REG_HIQ_TXBD_DESA_H 32 R/W (High 32-bit)
0x0378 REG_HIQ_TXBD_NUM 16 R/W HI Queue TX BD Count
0x0380 REG_BCNQ_TXBD_DESA 32 R/W Beacon Queue TX BD Addr
0x0384 REG_BCNQ_TXBD_DESA_H 32 R/W (High 32-bit)
/* TX/RX Ring Read/Write Pointers */
0x03B8 REG_VOQ_TXBD_IDX 32 R/W VO Queue HW/SW Index
0x03BC REG_VIQ_TXBD_IDX 32 R/W VI Queue HW/SW Index
0x03C0 REG_BEQ_TXBD_IDX 32 R/W BE Queue HW/SW Index
0x03C4 REG_BKQ_TXBD_IDX 32 R/W BK Queue HW/SW Index
0x03C8 REG_MGQ_TXBD_IDX 32 R/W MGT Queue HW/SW Index
0x03CC REG_RXQ_RXBD_IDX 32 R/W RX Queue HW/SW Index
0x03D0 REG_HIQ_TXBD_IDX 32 R/W HI Queue HW/SW Index
0x03D4 REG_BCNQ_TXBD_IDX 32 R/W Beacon Queue HW/SW Index
/* DMA Control */
0x03F0 REG_PCIE_DMA_STOP 32 R/W PCIe DMA Stop Control
0x03F2 REG_PCIE_HRPWM 8 W Host Request Power Mode
0x03F3 REG_PCIE_HCPWM 8 R Host Confirm Power Mode
0x03F4 REG_PCIE_CTRL2 32 R/W PCIe Control 2
0x03F8 REG_PCIE_HRPWM2 16 W Host Request Power Mode 2
0x03FA REG_PCIE_HCPWM2 16 R Host Confirm Power Mode 2
```
---
## 6. SECUENCIA DE POWER-ON / POWER-OFF
Existe una secuencia definida para Power On del RTL8822CE sobre PCIe y USB Bus, con parámetros de timing de PCIE PERST# específicos.
También existe una secuencia de Power Off definida para RTL8822CE-CG con parámetros de timing específicos.
### 6.1 Secuencia de Power On
```c
int rtw8822ce_power_on(struct rtw_dev *rtwdev)
{
int ret;
/* ============================================= */
/* PASO 1: Verificar estado actual del chip */
/* ============================================= */
/* Verificar que el chip responde */
u32 val = rtw_read32(rtwdev, REG_SYS_CFG1); /* 0x00FC */
if (val == 0xFFFFFFFF)
return -ENODEV; /* Chip no responde */
/* ============================================= */
/* PASO 2: Pre-power on: Preparar reguladores */
/* ============================================= */
/* Habilitar XTAL (cristal) */
rtw_write8(rtwdev, REG_AFE_CTRL1 + 1, 0x82); /* 0x001F */
/* Configurar switching regulator */
rtw_write32_mask(rtwdev, REG_SYS_SWR_CTRL1, 0x00C00000, 0x01); /* 0x000C */
/* Habilitar LDO */
rtw_write8(rtwdev, REG_LDO_SWR_CTRL, 0x01); /* 0x0080 */
/* ============================================= */
/* PASO 3: Power on sequence */
/* ============================================= */
/* 3a. Habilitar funciones del sistema */
u16 sys_func = rtw_read16(rtwdev, REG_SYS_FUNC_EN); /* 0x0000 */
sys_func |= BIT_FEN_MREGEN; /* BIT(15) - MAC Register Enable */
rtw_write16(rtwdev, REG_SYS_FUNC_EN, sys_func);