Lines Matching +full:0 +full:x261

54 	efuse->lna_type_2g = map->lna_type_2g[0];  in rtw8822b_read_efuse()
55 efuse->lna_type_5g = map->lna_type_5g[0]; in rtw8822b_read_efuse()
57 efuse->country_code[0] = map->country_code[0]; in rtw8822b_read_efuse()
60 efuse->regd = map->rf_board_option & 0x7; in rtw8822b_read_efuse()
64 for (i = 0; i < 4; i++) in rtw8822b_read_efuse()
82 return 0; in rtw8822b_read_efuse()
88 rtw_write32_mask(rtwdev, 0x64, BIT(29) | BIT(28), 0x3); in rtw8822b_phy_rfe_init()
89 rtw_write32_mask(rtwdev, 0x4c, BIT(26) | BIT(25), 0x0); in rtw8822b_phy_rfe_init()
90 rtw_write32_mask(rtwdev, 0x40, BIT(2), 0x1); in rtw8822b_phy_rfe_init()
93 rtw_write32_mask(rtwdev, 0x1990, 0x3f, 0x30); in rtw8822b_phy_rfe_init()
94 rtw_write32_mask(rtwdev, 0x1990, (BIT(11) | BIT(10)), 0x3); in rtw8822b_phy_rfe_init()
97 rtw_write32_mask(rtwdev, 0x974, 0x3f, 0x3f); in rtw8822b_phy_rfe_init()
98 rtw_write32_mask(rtwdev, 0x974, (BIT(11) | BIT(10)), 0x3); in rtw8822b_phy_rfe_init()
103 0x081, 0x088, 0x090, 0x099, 0x0a2, 0x0ac, 0x0b6, 0x0c0, 0x0cc, 0x0d8,
104 0x0e5, 0x0f2, 0x101, 0x110, 0x120, 0x131, 0x143, 0x156, 0x16a, 0x180,
105 0x197, 0x1af, 0x1c8, 0x1e3, 0x200, 0x21e, 0x23e, 0x261, 0x285, 0x2ab,
106 0x2d3, 0x2fe, 0x32b, 0x35c, 0x38e, 0x3c4, 0x3fe
111 u8 i = 0; in rtw8822b_get_swing_index()
114 swing = rtw_read32_mask(rtwdev, 0xc1c, 0xffe00000); in rtw8822b_get_swing_index()
115 for (i = 0; i < RTW_TXSCALE_SIZE; i++) { in rtw8822b_get_swing_index()
137 dm_info->delta_power_index[path] = 0; in rtw8822b_pwrtrack_init()
148 rtw_write32(rtwdev, 0x1C94, 0xAFFFAFFF); in rtw8822b_phy_bf_init()
169 crystal_cap = rtwdev->efuse.crystal_cap & 0x3F; in rtw8822b_phy_set_param()
170 rtw_write32_mask(rtwdev, 0x24, 0x7e000000, crystal_cap); in rtw8822b_phy_set_param()
171 rtw_write32_mask(rtwdev, 0x28, 0x7e, crystal_cap); in rtw8822b_phy_set_param()
187 #define WLAN_SLOT_TIME 0x09
188 #define WLAN_PIFS_TIME 0x19
189 #define WLAN_SIFS_CCK_CONT_TX 0xA
190 #define WLAN_SIFS_OFDM_CONT_TX 0xE
191 #define WLAN_SIFS_CCK_TRX 0x10
192 #define WLAN_SIFS_OFDM_TRX 0x10
193 #define WLAN_VO_TXOP_LIMIT 0x186 /* unit : 32us */
194 #define WLAN_VI_TXOP_LIMIT 0x3BC /* unit : 32us */
195 #define WLAN_RDG_NAV 0x05
196 #define WLAN_TXOP_NAV 0x1B
197 #define WLAN_CCK_RX_TSF 0x30
198 #define WLAN_OFDM_RX_TSF 0x30
199 #define WLAN_TBTT_PROHIBIT 0x04 /* unit : 32us */
200 #define WLAN_TBTT_HOLD_TIME 0x064 /* unit : 32us */
201 #define WLAN_DRV_EARLY_INT 0x04
202 #define WLAN_BCN_DMA_TIME 0x02
204 #define WLAN_RX_FILTER0 0x0FFFFFFF
205 #define WLAN_RX_FILTER2 0xFFFF
206 #define WLAN_RCR_CFG 0xE400220E
210 #define WLAN_AMPDU_MAX_TIME 0x70
211 #define WLAN_RTS_LEN_TH 0xFF
212 #define WLAN_RTS_TX_TIME_TH 0x08
213 #define WLAN_MAX_AGG_PKT_LIMIT 0x20
214 #define WLAN_RTS_MAX_AGG_PKT_LIMIT 0x20
215 #define FAST_EDCA_VO_TH 0x06
216 #define FAST_EDCA_VI_TH 0x06
217 #define FAST_EDCA_BE_TH 0x06
218 #define FAST_EDCA_BK_TH 0x06
219 #define WLAN_BAR_RETRY_LIMIT 0x01
220 #define WLAN_RA_TRY_RATE_AGG_LIMIT 0x08
222 #define WLAN_TX_FUNC_CFG1 0x30
223 #define WLAN_TX_FUNC_CFG2 0x30
224 #define WLAN_MAC_OPT_NORM_FUNC1 0x98
225 #define WLAN_MAC_OPT_LB_FUNC1 0x80
226 #define WLAN_MAC_OPT_FUNC2 0xb0810041
259 rtw_write16(rtwdev, REG_TXPAUSE, 0x0000); in rtw8822b_mac_init()
286 return 0; in rtw8822b_mac_init()
294 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x705770); in rtw8822b_set_channel_rfe_efem()
295 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x57); in rtw8822b_set_channel_rfe_efem()
296 rtw_write32s_mask(rtwdev, REG_RFECTL, BIT(4), 0); in rtw8822b_set_channel_rfe_efem()
298 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x177517); in rtw8822b_set_channel_rfe_efem()
299 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x75); in rtw8822b_set_channel_rfe_efem()
300 rtw_write32s_mask(rtwdev, REG_RFECTL, BIT(5), 0); in rtw8822b_set_channel_rfe_efem()
303 rtw_write32s_mask(rtwdev, REG_RFEINV, BIT(11) | BIT(10) | 0x3f, 0x0); in rtw8822b_set_channel_rfe_efem()
308 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa501); in rtw8822b_set_channel_rfe_efem()
311 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa500); in rtw8822b_set_channel_rfe_efem()
314 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa005); in rtw8822b_set_channel_rfe_efem()
324 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x745774); in rtw8822b_set_channel_rfe_ifem()
325 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x57); in rtw8822b_set_channel_rfe_ifem()
328 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x477547); in rtw8822b_set_channel_rfe_ifem()
329 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x75); in rtw8822b_set_channel_rfe_ifem()
332 rtw_write32s_mask(rtwdev, REG_RFEINV, BIT(11) | BIT(10) | 0x3f, 0x0); in rtw8822b_set_channel_rfe_ifem()
338 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa501); in rtw8822b_set_channel_rfe_ifem()
341 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa500); in rtw8822b_set_channel_rfe_ifem()
344 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa005); in rtw8822b_set_channel_rfe_ifem()
347 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa5a5); in rtw8822b_set_channel_rfe_ifem()
366 {0x75C97010, 0x75C97010, 0x75C97010, 0x75C97010}, /*Reg82C*/
367 {0x79a0eaaa, 0x79A0EAAC, 0x79a0eaaa, 0x79a0eaaa}, /*Reg830*/
368 {0x87765541, 0x87746341, 0x87765541, 0x87746341}, /*Reg838*/
372 {0x75B86010, 0x75B76010, 0x75B86010, 0x75B76010}, /*Reg82C*/
373 {0x79A0EAA8, 0x79A0EAAC, 0x79A0EAA8, 0x79a0eaaa}, /*Reg830*/
374 {0x87766451, 0x87766431, 0x87766451, 0x87766431}, /*Reg838*/
378 {0x75da8010, 0x75da8010, 0x75da8010, 0x75da8010}, /*Reg82C*/
379 {0x79a0eaaa, 0x97A0EAAC, 0x79a0eaaa, 0x79a0eaaa}, /*Reg830*/
380 {0x87765541, 0x86666341, 0x87765561, 0x86666361}, /*Reg838*/
475 reg830 = 0x79a0ea28; in rtw8822b_set_channel_cca()
483 rtw_write32_mask(rtwdev, REG_L1WT, MASKDWORD, 0x9194b2b9); in rtw8822b_set_channel_cca()
486 rtw_write32_mask(rtwdev, REG_CCA2ND, 0xf0, 0x4); in rtw8822b_set_channel_cca()
489 static const u8 low_band[15] = {0x7, 0x6, 0x6, 0x5, 0x0, 0x0, 0x7, 0xff, 0x6,
490 0x5, 0x0, 0x0, 0x7, 0x6, 0x6};
491 static const u8 middle_band[23] = {0x6, 0x5, 0x0, 0x0, 0x7, 0x6, 0x6, 0xff, 0x0,
492 0x0, 0x7, 0x6, 0x6, 0x5, 0x0, 0xff, 0x7, 0x6,
493 0x6, 0x5, 0x0, 0x0, 0x7};
494 static const u8 high_band[15] = {0x5, 0x5, 0x0, 0x7, 0x7, 0x6, 0x5, 0xff, 0x0,
495 0x7, 0x7, 0x6, 0x5, 0x5, 0x0};
500 #define RF18_BAND_2G (0) in rtw8822b_set_channel_rf()
515 rf_reg18 = rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK); in rtw8822b_set_channel_rf()
543 rf_reg_be = 0x0; in rtw8822b_set_channel_rf()
555 /* need to set 0xdf[18]=1 before writing RF18 when channel 144 */ in rtw8822b_set_channel_rf()
557 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTDBG, BIT(18), 0x1); in rtw8822b_set_channel_rf()
559 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTDBG, BIT(18), 0x0); in rtw8822b_set_channel_rf()
561 rtw_write_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK, rf_reg18); in rtw8822b_set_channel_rf()
563 rtw_write_rf(rtwdev, RF_PATH_B, 0x18, RFREG_MASK, rf_reg18); in rtw8822b_set_channel_rf()
565 rtw_write_rf(rtwdev, RF_PATH_A, RF_XTALX2, BIT(19), 0); in rtw8822b_set_channel_rf()
579 igi = rtw_read32_mask(rtwdev, REG_RXIGI_A, 0x7f); in rtw8822b_toggle_igi()
580 rtw_write32_mask(rtwdev, REG_RXIGI_A, 0x7f, igi - 2); in rtw8822b_toggle_igi()
581 rtw_write32_mask(rtwdev, REG_RXIGI_A, 0x7f, igi); in rtw8822b_toggle_igi()
582 rtw_write32_mask(rtwdev, REG_RXIGI_B, 0x7f, igi - 2); in rtw8822b_toggle_igi()
583 rtw_write32_mask(rtwdev, REG_RXIGI_B, 0x7f, igi); in rtw8822b_toggle_igi()
585 rtw_write32_mask(rtwdev, REG_RXPSEL, MASKBYTE0, 0x0); in rtw8822b_toggle_igi()
594 rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x1); in rtw8822b_set_channel_rxdfir()
595 rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x0); in rtw8822b_set_channel_rxdfir()
596 rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x0); in rtw8822b_set_channel_rxdfir()
599 rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x2); in rtw8822b_set_channel_rxdfir()
600 rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x1); in rtw8822b_set_channel_rxdfir()
601 rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x0); in rtw8822b_set_channel_rxdfir()
604 rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x2); in rtw8822b_set_channel_rxdfir()
605 rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x2); in rtw8822b_set_channel_rxdfir()
606 rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x1); in rtw8822b_set_channel_rxdfir()
618 rtw_write32_mask(rtwdev, REG_RXPSEL, BIT(28), 0x1); in rtw8822b_set_channel_bb()
619 rtw_write32_mask(rtwdev, REG_CCK_CHECK, BIT(7), 0x0); in rtw8822b_set_channel_bb()
620 rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x0); in rtw8822b_set_channel_bb()
621 rtw_write32_mask(rtwdev, REG_RXCCAMSK, 0x0000FC00, 15); in rtw8822b_set_channel_bb()
623 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x0); in rtw8822b_set_channel_bb()
624 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x96a); in rtw8822b_set_channel_bb()
626 rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD, 0x00006577); in rtw8822b_set_channel_bb()
627 rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD, 0x0000); in rtw8822b_set_channel_bb()
629 rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD, 0x384f6577); in rtw8822b_set_channel_bb()
630 rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD, 0x1525); in rtw8822b_set_channel_bb()
633 rtw_write32_mask(rtwdev, REG_RFEINV, 0x300, 0x2); in rtw8822b_set_channel_bb()
635 rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x1); in rtw8822b_set_channel_bb()
636 rtw_write32_mask(rtwdev, REG_CCK_CHECK, BIT(7), 0x1); in rtw8822b_set_channel_bb()
637 rtw_write32_mask(rtwdev, REG_RXPSEL, BIT(28), 0x0); in rtw8822b_set_channel_bb()
638 rtw_write32_mask(rtwdev, REG_RXCCAMSK, 0x0000FC00, 34); in rtw8822b_set_channel_bb()
641 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x1); in rtw8822b_set_channel_bb()
643 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x2); in rtw8822b_set_channel_bb()
645 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x3); in rtw8822b_set_channel_bb()
648 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x494); in rtw8822b_set_channel_bb()
650 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x453); in rtw8822b_set_channel_bb()
652 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x452); in rtw8822b_set_channel_bb()
654 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x412); in rtw8822b_set_channel_bb()
656 rtw_write32_mask(rtwdev, 0xcbc, 0x300, 0x1); in rtw8822b_set_channel_bb()
663 val32 &= 0xFFCFFC00; in rtw8822b_set_channel_bb()
667 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); in rtw8822b_set_channel_bb()
676 val32 &= 0xFF3FF300; in rtw8822b_set_channel_bb()
677 val32 |= (((primary_ch_idx & 0xf) << 2) | RTW_CHANNEL_WIDTH_40); in rtw8822b_set_channel_bb()
680 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); in rtw8822b_set_channel_bb()
684 val32 &= 0xFCEFCF00; in rtw8822b_set_channel_bb()
685 val32 |= (((primary_ch_idx & 0xf) << 2) | RTW_CHANNEL_WIDTH_80); in rtw8822b_set_channel_bb()
688 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); in rtw8822b_set_channel_bb()
691 rtw_write32_mask(rtwdev, REG_L1PKWT, 0x0000f000, 0x6); in rtw8822b_set_channel_bb()
692 rtw_write32_mask(rtwdev, REG_ADC40, BIT(10), 0x1); in rtw8822b_set_channel_bb()
697 val32 &= 0xEFEEFE00; in rtw8822b_set_channel_bb()
701 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x0); in rtw8822b_set_channel_bb()
702 rtw_write32_mask(rtwdev, REG_ADC40, BIT(31), 0x1); in rtw8822b_set_channel_bb()
706 val32 &= 0xEFFEFF00; in rtw8822b_set_channel_bb()
710 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x0); in rtw8822b_set_channel_bb()
711 rtw_write32_mask(rtwdev, REG_ADC40, BIT(31), 0x1); in rtw8822b_set_channel_bb()
753 rtw_write32_mask(rtwdev, REG_AGCTR_A, MASKLWORD, 0x3231); in rtw8822b_config_trx_mode()
755 rtw_write32_mask(rtwdev, REG_AGCTR_A, MASKLWORD, 0x1111); in rtw8822b_config_trx_mode()
758 rtw_write32_mask(rtwdev, REG_AGCTR_B, MASKLWORD, 0x3231); in rtw8822b_config_trx_mode()
760 rtw_write32_mask(rtwdev, REG_AGCTR_B, MASKLWORD, 0x1111); in rtw8822b_config_trx_mode()
762 rtw_write32_mask(rtwdev, REG_CDDTXP, (BIT(19) | BIT(18)), 0x3); in rtw8822b_config_trx_mode()
763 rtw_write32_mask(rtwdev, REG_TXPSEL, (BIT(29) | BIT(28)), 0x1); in rtw8822b_config_trx_mode()
764 rtw_write32_mask(rtwdev, REG_TXPSEL, BIT(30), 0x1); in rtw8822b_config_trx_mode()
767 rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x001); in rtw8822b_config_trx_mode()
768 rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0x8); in rtw8822b_config_trx_mode()
770 rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x002); in rtw8822b_config_trx_mode()
771 rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0x4); in rtw8822b_config_trx_mode()
775 rtw_write32_mask(rtwdev, REG_TXPSEL1, 0xfff0, 0x01); in rtw8822b_config_trx_mode()
777 rtw_write32_mask(rtwdev, REG_TXPSEL1, 0xfff0, 0x43); in rtw8822b_config_trx_mode()
784 rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x043); in rtw8822b_config_trx_mode()
785 rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0xc); in rtw8822b_config_trx_mode()
789 rtw_write32_mask(rtwdev, REG_RXDESC, BIT(22), 0x0); in rtw8822b_config_trx_mode()
790 rtw_write32_mask(rtwdev, REG_RXDESC, BIT(18), 0x0); in rtw8822b_config_trx_mode()
793 rtw_write32_mask(rtwdev, REG_ADCINI, 0x0f000000, 0x0); in rtw8822b_config_trx_mode()
795 rtw_write32_mask(rtwdev, REG_ADCINI, 0x0f000000, 0x5); in rtw8822b_config_trx_mode()
801 rtw_write32_mask(rtwdev, REG_ANTWT, BIT(16), 0x0); in rtw8822b_config_trx_mode()
802 rtw_write32_mask(rtwdev, REG_HTSTFWT, BIT(28), 0x0); in rtw8822b_config_trx_mode()
803 rtw_write32_mask(rtwdev, REG_MRC, BIT(23), 0x0); in rtw8822b_config_trx_mode()
805 rtw_write32_mask(rtwdev, REG_ANTWT, BIT(16), 0x1); in rtw8822b_config_trx_mode()
806 rtw_write32_mask(rtwdev, REG_HTSTFWT, BIT(28), 0x1); in rtw8822b_config_trx_mode()
807 rtw_write32_mask(rtwdev, REG_MRC, BIT(23), 0x1); in rtw8822b_config_trx_mode()
810 for (counter = 100; counter > 0; counter--) { in rtw8822b_config_trx_mode()
813 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x80000); in rtw8822b_config_trx_mode()
814 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, RFREG_MASK, 0x00001); in rtw8822b_config_trx_mode()
817 rf_reg33 = rtw_read_rf(rtwdev, RF_PATH_A, 0x33, RFREG_MASK); in rtw8822b_config_trx_mode()
819 if (rf_reg33 == 0x00001) in rtw8822b_config_trx_mode()
823 if (WARN(counter <= 0, "write RF mode table fail\n")) in rtw8822b_config_trx_mode()
826 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x80000); in rtw8822b_config_trx_mode()
827 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, RFREG_MASK, 0x00001); in rtw8822b_config_trx_mode()
828 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD1, RFREG_MASK, 0x00034); in rtw8822b_config_trx_mode()
829 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD0, RFREG_MASK, 0x4080c); in rtw8822b_config_trx_mode()
830 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x00000); in rtw8822b_config_trx_mode()
831 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x00000); in rtw8822b_config_trx_mode()
861 u8 evm_dbm = 0; in query_phy_status_page1()
898 for (path = 0; path <= rtwdev->hal.rf_path_num; path++) { in query_phy_status_page1()
906 if (rx_evm < 0) { in query_phy_status_page1()
908 evm_dbm = 0; in query_phy_status_page1()
921 page = *phy_status & 0xf; in query_phy_status()
924 case 0: in query_phy_status()
944 memset(pkt_stat, 0, sizeof(*pkt_stat)); in rtw8822b_query_rx_desc()
982 static const u32 offset_txagc[2] = {0x1d00, 0x1d80}; in rtw8822b_set_tx_power_index_by_rate()
986 for (j = 0; j < rtw_rate_size[rs]; j++) { in rtw8822b_set_tx_power_index_by_rate()
989 shift = rate & 0x3; in rtw8822b_set_tx_power_index_by_rate()
991 if (shift == 0x3) { in rtw8822b_set_tx_power_index_by_rate()
992 rate_idx = rate & 0xfc; in rtw8822b_set_tx_power_index_by_rate()
995 *phy_pwr_idx = 0; in rtw8822b_set_tx_power_index_by_rate()
1003 u32 phy_pwr_idx = 0; in rtw8822b_set_tx_power_index()
1006 for (path = 0; path < hal->rf_path_num; path++) { in rtw8822b_set_tx_power_index()
1007 for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) in rtw8822b_set_tx_power_index()
1031 rtw_dbg(rtwdev, RTW_DBG_PHY, "config RF path, tx=0x%x rx=0x%x\n", in rtw8822b_set_antenna()
1035 rtw_warn(rtwdev, "unsupported tx path 0x%x\n", antenna_tx); in rtw8822b_set_antenna()
1040 rtw_warn(rtwdev, "unsupported rx path 0x%x\n", antenna_rx); in rtw8822b_set_antenna()
1049 return 0; in rtw8822b_set_antenna()
1070 cck_enable = rtw_read32(rtwdev, 0x808) & BIT(28); in rtw8822b_false_alarm_statistics()
1071 cck_fa_cnt = rtw_read16(rtwdev, 0xa5c); in rtw8822b_false_alarm_statistics()
1072 ofdm_fa_cnt = rtw_read16(rtwdev, 0xf48); in rtw8822b_false_alarm_statistics()
1077 dm_info->total_fa_cnt += cck_enable ? cck_fa_cnt : 0; in rtw8822b_false_alarm_statistics()
1079 crc32_cnt = rtw_read32(rtwdev, 0xf04); in rtw8822b_false_alarm_statistics()
1080 dm_info->cck_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1081 dm_info->cck_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1082 crc32_cnt = rtw_read32(rtwdev, 0xf14); in rtw8822b_false_alarm_statistics()
1083 dm_info->ofdm_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1084 dm_info->ofdm_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1085 crc32_cnt = rtw_read32(rtwdev, 0xf10); in rtw8822b_false_alarm_statistics()
1086 dm_info->ht_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1087 dm_info->ht_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1088 crc32_cnt = rtw_read32(rtwdev, 0xf0c); in rtw8822b_false_alarm_statistics()
1089 dm_info->vht_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1090 dm_info->vht_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1092 cca32_cnt = rtw_read32(rtwdev, 0xf08); in rtw8822b_false_alarm_statistics()
1093 dm_info->ofdm_cca_cnt = ((cca32_cnt & 0xffff0000) >> 16); in rtw8822b_false_alarm_statistics()
1096 cca32_cnt = rtw_read32(rtwdev, 0xfcc); in rtw8822b_false_alarm_statistics()
1097 dm_info->cck_cca_cnt = cca32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1101 rtw_write32_set(rtwdev, 0x9a4, BIT(17)); in rtw8822b_false_alarm_statistics()
1102 rtw_write32_clr(rtwdev, 0x9a4, BIT(17)); in rtw8822b_false_alarm_statistics()
1103 rtw_write32_clr(rtwdev, 0xa2c, BIT(15)); in rtw8822b_false_alarm_statistics()
1104 rtw_write32_set(rtwdev, 0xa2c, BIT(15)); in rtw8822b_false_alarm_statistics()
1105 rtw_write32_set(rtwdev, 0xb58, BIT(0)); in rtw8822b_false_alarm_statistics()
1106 rtw_write32_clr(rtwdev, 0xb58, BIT(0)); in rtw8822b_false_alarm_statistics()
1112 struct rtw_iqk_para para = {.clear = 0, .segment_iqk = 0}; in rtw8822b_do_iqk()
1119 for (counter = 0; counter < 300; counter++) { in rtw8822b_do_iqk()
1121 if (rf_reg == 0xabcde) in rtw8822b_do_iqk()
1125 rtw_write_rf(rtwdev, RF_PATH_A, RF_DTXLOK, RFREG_MASK, 0x0); in rtw8822b_do_iqk()
1128 iqk_fail_mask = rtw_read32_mask(rtwdev, REG_IQKFAILMSK, GENMASK(7, 0)); in rtw8822b_do_iqk()
1130 "iqk counter=%d reload=%d do_iqk_cnt=%d n_iqk_fail(mask)=0x%02x\n", in rtw8822b_do_iqk()
1145 /* 0x790[5:0]=0x5 */ in rtw8822b_coex_cfg_init()
1146 rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, BIT_MASK_SAMPLE_RATE, 0x5); in rtw8822b_coex_cfg_init()
1149 rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1); in rtw8822b_coex_cfg_init()
1170 u8 regval = 0; in rtw8822b_coex_cfg_ant_switch()
1186 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1187 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1188 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1189 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1191 rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x77); in rtw8822b_coex_cfg_ant_switch()
1194 if (coex_rfe->rfe_module_type != 0x4 && in rtw8822b_coex_cfg_ant_switch()
1195 coex_rfe->rfe_module_type != 0x2) in rtw8822b_coex_cfg_ant_switch()
1196 regval = 0x3; in rtw8822b_coex_cfg_ant_switch()
1198 regval = (!polarity_inverse ? 0x2 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1200 regval = (!polarity_inverse ? 0x2 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1202 regval = (!polarity_inverse ? 0x1 : 0x2); in rtw8822b_coex_cfg_ant_switch()
1208 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1209 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1210 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1211 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1213 rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x66); in rtw8822b_coex_cfg_ant_switch()
1215 regval = (!polarity_inverse ? 0x2 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1219 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1220 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1221 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1222 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1223 rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x88); in rtw8822b_coex_cfg_ant_switch()
1226 /* 0x4c[23] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1227 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x1); in rtw8822b_coex_cfg_ant_switch()
1229 regval = (!polarity_inverse ? 0x0 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1233 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1234 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1235 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1236 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1239 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1240 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1241 /* 0x4c[24] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1242 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x0); in rtw8822b_coex_cfg_ant_switch()
1253 rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 2, BIT_BTGP_SPI_EN >> 16, 0); in rtw8822b_coex_cfg_gnt_debug()
1254 rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 3, BIT_BTGP_JTAG_EN >> 24, 0); in rtw8822b_coex_cfg_gnt_debug()
1255 rtw_write8_mask(rtwdev, REG_GPIO_MUXCFG + 2, BIT_FSPI_EN >> 16, 0); in rtw8822b_coex_cfg_gnt_debug()
1256 rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 1, BIT_LED1DIS >> 8, 0); in rtw8822b_coex_cfg_gnt_debug()
1257 rtw_write8_mask(rtwdev, REG_SYS_SDIO_CTRL + 3, BIT_DBG_GNT_WL_BT >> 24, 0); in rtw8822b_coex_cfg_gnt_debug()
1268 coex_rfe->ant_switch_polarity = 0; in rtw8822b_coex_cfg_rfe_type()
1270 if (coex_rfe->rfe_module_type == 0x12 || in rtw8822b_coex_cfg_rfe_type()
1271 coex_rfe->rfe_module_type == 0x15 || in rtw8822b_coex_cfg_rfe_type()
1272 coex_rfe->rfe_module_type == 0x16) in rtw8822b_coex_cfg_rfe_type()
1294 rtw_write8(rtwdev, REG_RFE_CTRL_E, 0xff); in rtw8822b_coex_cfg_rfe_type()
1295 rtw_write8_mask(rtwdev, REG_RFESEL_CTRL + 1, 0x3, 0x0); in rtw8822b_coex_cfg_rfe_type()
1296 rtw_write8_mask(rtwdev, REG_RFE_INV16, BIT_RFE_BUF_EN, 0x0); in rtw8822b_coex_cfg_rfe_type()
1299 rtw_coex_write_indirect_reg(rtwdev, LTE_COEX_CTRL, BIT_LTE_COEX_EN, 0); in rtw8822b_coex_cfg_rfe_type()
1302 rtw_coex_write_indirect_reg(rtwdev, LTE_WL_TRX_CTRL, MASKLWORD, 0xffff); in rtw8822b_coex_cfg_rfe_type()
1305 rtw_coex_write_indirect_reg(rtwdev, LTE_BT_TRX_CTRL, MASKLWORD, 0xffff); in rtw8822b_coex_cfg_rfe_type()
1312 static const u16 reg_addr[] = {0xc58, 0xe58}; in rtw8822b_coex_cfg_wl_tx_power()
1313 static const u8 wl_tx_power[] = {0xd8, 0xd4, 0xd0, 0xcc, 0xc8}; in rtw8822b_coex_cfg_wl_tx_power()
1326 for (i = 0; i < ARRAY_SIZE(reg_addr); i++) in rtw8822b_coex_cfg_wl_tx_power()
1327 rtw_write8_mask(rtwdev, reg_addr[i], 0xff, pwr); in rtw8822b_coex_cfg_wl_tx_power()
1336 0xff000003, 0xbd120003, 0xbe100003, 0xbf080003, 0xbf060003, in rtw8822b_coex_cfg_wl_rx_gain()
1337 0xbf050003, 0xbc140003, 0xbb160003, 0xba180003, 0xb91a0003, in rtw8822b_coex_cfg_wl_rx_gain()
1338 0xb81c0003, 0xb71e0003, 0xb4200003, 0xb5220003, 0xb4240003, in rtw8822b_coex_cfg_wl_rx_gain()
1339 0xb3260003, 0xb2280003, 0xb12a0003, 0xb02c0003, 0xaf2e0003, in rtw8822b_coex_cfg_wl_rx_gain()
1340 0xae300003, 0xad320003, 0xac340003, 0xab360003, 0x8d380003, in rtw8822b_coex_cfg_wl_rx_gain()
1341 0x8c3a0003, 0x8b3c0003, 0x8a3e0003, 0x6e400003, 0x6d420003, in rtw8822b_coex_cfg_wl_rx_gain()
1342 0x6c440003, 0x6b460003, 0x6a480003, 0x694a0003, 0x684c0003, in rtw8822b_coex_cfg_wl_rx_gain()
1343 0x674e0003, 0x66500003, 0x65520003, 0x64540003, 0x64560003, in rtw8822b_coex_cfg_wl_rx_gain()
1344 0x007e0403 in rtw8822b_coex_cfg_wl_rx_gain()
1349 0xff000003, 0xf4120003, 0xf5100003, 0xf60e0003, 0xf70c0003, in rtw8822b_coex_cfg_wl_rx_gain()
1350 0xf80a0003, 0xf3140003, 0xf2160003, 0xf1180003, 0xf01a0003, in rtw8822b_coex_cfg_wl_rx_gain()
1351 0xef1c0003, 0xee1e0003, 0xed200003, 0xec220003, 0xeb240003, in rtw8822b_coex_cfg_wl_rx_gain()
1352 0xea260003, 0xe9280003, 0xe82a0003, 0xe72c0003, 0xe62e0003, in rtw8822b_coex_cfg_wl_rx_gain()
1353 0xe5300003, 0xc8320003, 0xc7340003, 0xc6360003, 0xc5380003, in rtw8822b_coex_cfg_wl_rx_gain()
1354 0xc43a0003, 0xc33c0003, 0xc23e0003, 0xc1400003, 0xc0420003, in rtw8822b_coex_cfg_wl_rx_gain()
1355 0xa5440003, 0xa4460003, 0xa3480003, 0xa24a0003, 0xa14c0003, in rtw8822b_coex_cfg_wl_rx_gain()
1356 0x834e0003, 0x82500003, 0x81520003, 0x80540003, 0x65560003, in rtw8822b_coex_cfg_wl_rx_gain()
1357 0x007e0403 in rtw8822b_coex_cfg_wl_rx_gain()
1368 for (i = 0; i < ARRAY_SIZE(wl_rx_low_gain_on); i++) in rtw8822b_coex_cfg_wl_rx_gain()
1372 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCKD, 0x2, 0x1); in rtw8822b_coex_cfg_wl_rx_gain()
1373 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCK, 0x3f, 0x3f); in rtw8822b_coex_cfg_wl_rx_gain()
1374 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCKD, 0x2, 0x1); in rtw8822b_coex_cfg_wl_rx_gain()
1375 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK, 0x3f, 0x3f); in rtw8822b_coex_cfg_wl_rx_gain()
1378 for (i = 0; i < ARRAY_SIZE(wl_rx_low_gain_off); i++) in rtw8822b_coex_cfg_wl_rx_gain()
1379 rtw_write32(rtwdev, 0x81c, wl_rx_low_gain_off[i]); in rtw8822b_coex_cfg_wl_rx_gain()
1382 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCK, 0x3f, 0x4); in rtw8822b_coex_cfg_wl_rx_gain()
1383 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCKD, 0x2, 0x0); in rtw8822b_coex_cfg_wl_rx_gain()
1384 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK, 0x3f, 0x4); in rtw8822b_coex_cfg_wl_rx_gain()
1385 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCKD, 0x2, 0x0); in rtw8822b_coex_cfg_wl_rx_gain()
1396 u8 swing_lower_bound = 0; in rtw8822b_txagc_swing_offset()
1397 u8 max_tx_pwr_idx_offset = 0xf; in rtw8822b_txagc_swing_offset()
1398 s8 agc_index = 0; in rtw8822b_txagc_swing_offset()
1403 if (delta_pwr_idx >= 0) { in rtw8822b_txagc_swing_offset()
1421 agc_index = 0; in rtw8822b_txagc_swing_offset()
1440 reg1 = 0xc94; in rtw8822b_pwrtrack_set_pwr()
1441 reg2 = 0xc1c; in rtw8822b_pwrtrack_set_pwr()
1443 reg1 = 0xe94; in rtw8822b_pwrtrack_set_pwr()
1444 reg2 = 0xe1c; in rtw8822b_pwrtrack_set_pwr()
1507 if (rtwdev->efuse.thermal_meter[RF_PATH_A] == 0xff) in rtw8822b_phy_pwrtrack()
1510 thermal_value = rtw_read_rf(rtwdev, RF_PATH_A, RF_T_METER, 0xfc00); in rtw8822b_phy_pwrtrack()
1520 for (path = 0; path < rtwdev->hal.rf_path_num; path++) in rtw8822b_phy_pwrtrack()
1533 if (efuse->power_track_type != 0) in rtw8822b_pwr_track()
1538 GENMASK(17, 16), 0x03); in rtw8822b_pwr_track()
1587 rtw_write32_mask(rtwdev, REG_EDCCA_POW_MA, BIT_MA_LEVEL, 0); in rtw8822b_adaptivity_init()
1599 igi = dm_info->igi_history[0]; in rtw8822b_adaptivity()
1621 {0x0086,
1625 RTW_PWR_CMD_WRITE, BIT(0), 0},
1626 {0x0086,
1631 {0x004A,
1635 RTW_PWR_CMD_WRITE, BIT(0), 0},
1636 {0x0005,
1640 RTW_PWR_CMD_WRITE, BIT(3) | BIT(4) | BIT(7), 0},
1641 {0x0300,
1645 RTW_PWR_CMD_WRITE, 0xFF, 0},
1646 {0x0301,
1650 RTW_PWR_CMD_WRITE, 0xFF, 0},
1651 {0xFFFF,
1654 0,
1655 RTW_PWR_CMD_END, 0, 0},
1659 {0x0012,
1663 RTW_PWR_CMD_WRITE, BIT(1), 0},
1664 {0x0012,
1668 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1669 {0x0020,
1673 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1674 {0x0001,
1679 {0x0000,
1683 RTW_PWR_CMD_WRITE, BIT(5), 0},
1684 {0x0005,
1688 RTW_PWR_CMD_WRITE, (BIT(4) | BIT(3) | BIT(2)), 0},
1689 {0x0075,
1693 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1694 {0x0006,
1699 {0x0075,
1703 RTW_PWR_CMD_WRITE, BIT(0), 0},
1704 {0xFF1A,
1708 RTW_PWR_CMD_WRITE, 0xFF, 0},
1709 {0x0006,
1713 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1714 {0x0005,
1718 RTW_PWR_CMD_WRITE, BIT(7), 0},
1719 {0x0005,
1723 RTW_PWR_CMD_WRITE, (BIT(4) | BIT(3)), 0},
1724 {0x10C3,
1728 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1729 {0x0005,
1733 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1734 {0x0005,
1738 RTW_PWR_CMD_POLLING, BIT(0), 0},
1739 {0x0020,
1744 {0x10A8,
1748 RTW_PWR_CMD_WRITE, 0xFF, 0},
1749 {0x10A9,
1753 RTW_PWR_CMD_WRITE, 0xFF, 0xef},
1754 {0x10AA,
1758 RTW_PWR_CMD_WRITE, 0xFF, 0x0c},
1759 {0x0068,
1764 {0x0029,
1768 RTW_PWR_CMD_WRITE, 0xFF, 0xF9},
1769 {0x0024,
1773 RTW_PWR_CMD_WRITE, BIT(2), 0},
1774 {0x0074,
1779 {0x00AF,
1784 {0xFFFF,
1787 0,
1788 RTW_PWR_CMD_END, 0, 0},
1792 {0x0003,
1796 RTW_PWR_CMD_WRITE, BIT(2), 0},
1797 {0x0093,
1801 RTW_PWR_CMD_WRITE, BIT(3), 0},
1802 {0x001F,
1806 RTW_PWR_CMD_WRITE, 0xFF, 0},
1807 {0x00EF,
1811 RTW_PWR_CMD_WRITE, 0xFF, 0},
1812 {0xFF1A,
1816 RTW_PWR_CMD_WRITE, 0xFF, 0x30},
1817 {0x0049,
1821 RTW_PWR_CMD_WRITE, BIT(1), 0},
1822 {0x0006,
1826 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1827 {0x0002,
1831 RTW_PWR_CMD_WRITE, BIT(1), 0},
1832 {0x10C3,
1836 RTW_PWR_CMD_WRITE, BIT(0), 0},
1837 {0x0005,
1842 {0x0005,
1846 RTW_PWR_CMD_POLLING, BIT(1), 0},
1847 {0x0020,
1851 RTW_PWR_CMD_WRITE, BIT(3), 0},
1852 {0x0000,
1857 {0xFFFF,
1860 0,
1861 RTW_PWR_CMD_END, 0, 0},
1865 {0x0005,
1870 {0x0007,
1874 RTW_PWR_CMD_WRITE, 0xFF, 0x20},
1875 {0x0067,
1879 RTW_PWR_CMD_WRITE, BIT(5), 0},
1880 {0x0005,
1885 {0x004A,
1889 RTW_PWR_CMD_WRITE, BIT(0), 0},
1890 {0x0067,
1894 RTW_PWR_CMD_WRITE, BIT(5), 0},
1895 {0x0067,
1899 RTW_PWR_CMD_WRITE, BIT(4), 0},
1900 {0x004F,
1904 RTW_PWR_CMD_WRITE, BIT(0), 0},
1905 {0x0067,
1909 RTW_PWR_CMD_WRITE, BIT(1), 0},
1910 {0x0046,
1915 {0x0067,
1919 RTW_PWR_CMD_WRITE, BIT(2), 0},
1920 {0x0046,
1925 {0x0062,
1930 {0x0081,
1934 RTW_PWR_CMD_WRITE, BIT(7) | BIT(6), 0},
1935 {0x0005,
1940 {0x0086,
1944 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1945 {0x0086,
1949 RTW_PWR_CMD_POLLING, BIT(1), 0},
1950 {0x0090,
1954 RTW_PWR_CMD_WRITE, BIT(1), 0},
1955 {0x0044,
1959 RTW_PWR_CMD_WRITE, 0xFF, 0},
1960 {0x0040,
1964 RTW_PWR_CMD_WRITE, 0xFF, 0x90},
1965 {0x0041,
1969 RTW_PWR_CMD_WRITE, 0xFF, 0x00},
1970 {0x0042,
1974 RTW_PWR_CMD_WRITE, 0xFF, 0x04},
1975 {0xFFFF,
1978 0,
1979 RTW_PWR_CMD_END, 0, 0},
1995 {0xFFFF, 0x00,
2002 {0x0001, 0xA841,
2006 {0xFFFF, 0x0000,
2013 {0x0001, 0xA841,
2017 {0x0002, 0x60C6,
2021 {0x0008, 0x3596,
2025 {0x0009, 0x321C,
2029 {0x000A, 0x9623,
2033 {0x0020, 0x94FF,
2037 {0x0021, 0xFFCF,
2041 {0x0026, 0xC006,
2045 {0x0029, 0xFF0E,
2049 {0x002A, 0x1840,
2053 {0xFFFF, 0x0000,
2060 {0x0001, 0xA841,
2064 {0x0002, 0x60C6,
2068 {0x0008, 0x3597,
2072 {0x0009, 0x321C,
2076 {0x000A, 0x9623,
2080 {0x0020, 0x94FF,
2084 {0x0021, 0xFFCF,
2088 {0x0026, 0xC006,
2092 {0x0029, 0xFF0E,
2096 {0x002A, 0x3040,
2100 {0xFFFF, 0x0000,
2119 [3] = RTW_DEF_RFE(8822b, 3, 0),
2124 [0] = { .addr = 0xc50, .mask = 0x7f },
2125 [1] = { .addr = 0xe50, .mask = 0x7f },
2137 {64, 64, 0, 0, 1},
2138 {64, 64, 64, 0, 1},
2208 {0xffffffff, 0xffffffff}, /* case-0 */
2209 {0x55555555, 0x55555555},
2210 {0x66555555, 0x66555555},
2211 {0xaaaaaaaa, 0xaaaaaaaa},
2212 {0x5a5a5a5a, 0x5a5a5a5a},
2213 {0xfafafafa, 0xfafafafa}, /* case-5 */
2214 {0x6a5a5555, 0xaaaaaaaa},
2215 {0x6a5a56aa, 0x6a5a56aa},
2216 {0x6a5a5a5a, 0x6a5a5a5a},
2217 {0x66555555, 0x5a5a5a5a},
2218 {0x66555555, 0x6a5a5a5a}, /* case-10 */
2219 {0x66555555, 0xfafafafa},
2220 {0x66555555, 0x5a5a5aaa},
2221 {0x66555555, 0x6aaa5aaa},
2222 {0x66555555, 0xaaaa5aaa},
2223 {0x66555555, 0xaaaaaaaa}, /* case-15 */
2224 {0xffff55ff, 0xfafafafa},
2225 {0xffff55ff, 0x6afa5afa},
2226 {0xaaffffaa, 0xfafafafa},
2227 {0xaa5555aa, 0x5a5a5a5a},
2228 {0xaa5555aa, 0x6a5a5a5a}, /* case-20 */
2229 {0xaa5555aa, 0xaaaaaaaa},
2230 {0xffffffff, 0x5a5a5a5a},
2231 {0xffffffff, 0x5a5a5a5a},
2232 {0xffffffff, 0x55555555},
2233 {0xffffffff, 0x6a5a5aaa}, /* case-25 */
2234 {0x55555555, 0x5a5a5a5a},
2235 {0x55555555, 0xaaaaaaaa},
2236 {0x55555555, 0x6a5a6a5a},
2237 {0x66556655, 0x66556655},
2238 {0x66556aaa, 0x6a5a6aaa}, /* case-30 */
2239 {0xffffffff, 0x5aaa5aaa},
2240 {0x56555555, 0x5a5a5aaa},
2245 {0xffffffff, 0xffffffff}, /* case-100 */
2246 {0x55555555, 0x55555555},
2247 {0x66555555, 0x66555555},
2248 {0xaaaaaaaa, 0xaaaaaaaa},
2249 {0x5a5a5a5a, 0x5a5a5a5a},
2250 {0xfafafafa, 0xfafafafa}, /* case-105 */
2251 {0x5afa5afa, 0x5afa5afa},
2252 {0x55555555, 0xfafafafa},
2253 {0x66555555, 0xfafafafa},
2254 {0x66555555, 0x5a5a5a5a},
2255 {0x66555555, 0x6a5a5a5a}, /* case-110 */
2256 {0x66555555, 0xaaaaaaaa},
2257 {0xffff55ff, 0xfafafafa},
2258 {0xffff55ff, 0x5afa5afa},
2259 {0xffff55ff, 0xaaaaaaaa},
2260 {0xffff55ff, 0xffff55ff}, /* case-115 */
2261 {0xaaffffaa, 0x5afa5afa},
2262 {0xaaffffaa, 0xaaaaaaaa},
2263 {0xffffffff, 0xfafafafa},
2264 {0xffffffff, 0x5afa5afa},
2265 {0xffffffff, 0xaaaaaaaa}, /* case-120 */
2266 {0x55ff55ff, 0x5afa5afa},
2267 {0x55ff55ff, 0xaaaaaaaa},
2268 {0x55ff55ff, 0x55ff55ff}
2273 { {0x00, 0x00, 0x00, 0x00, 0x00} }, /* case-0 */
2274 { {0x61, 0x45, 0x03, 0x11, 0x11} },
2275 { {0x61, 0x3a, 0x03, 0x11, 0x11} },
2276 { {0x61, 0x30, 0x03, 0x11, 0x11} },
2277 { {0x61, 0x20, 0x03, 0x11, 0x11} },
2278 { {0x61, 0x10, 0x03, 0x11, 0x11} }, /* case-5 */
2279 { {0x61, 0x45, 0x03, 0x11, 0x10} },
2280 { {0x61, 0x3a, 0x03, 0x11, 0x10} },
2281 { {0x61, 0x30, 0x03, 0x11, 0x10} },
2282 { {0x61, 0x20, 0x03, 0x11, 0x10} },
2283 { {0x61, 0x10, 0x03, 0x11, 0x10} }, /* case-10 */
2284 { {0x61, 0x08, 0x03, 0x11, 0x14} },
2285 { {0x61, 0x08, 0x03, 0x10, 0x14} },
2286 { {0x51, 0x08, 0x03, 0x10, 0x54} },
2287 { {0x51, 0x08, 0x03, 0x10, 0x55} },
2288 { {0x51, 0x08, 0x07, 0x10, 0x54} }, /* case-15 */
2289 { {0x51, 0x45, 0x03, 0x10, 0x50} },
2290 { {0x51, 0x3a, 0x03, 0x10, 0x50} },
2291 { {0x51, 0x30, 0x03, 0x10, 0x50} },
2292 { {0x51, 0x20, 0x03, 0x10, 0x50} },
2293 { {0x51, 0x10, 0x03, 0x10, 0x50} }, /* case-20 */
2294 { {0x51, 0x4a, 0x03, 0x10, 0x50} },
2295 { {0x51, 0x0c, 0x03, 0x10, 0x54} },
2296 { {0x55, 0x08, 0x03, 0x10, 0x54} },
2297 { {0x65, 0x10, 0x03, 0x11, 0x10} },
2298 { {0x51, 0x10, 0x03, 0x10, 0x51} }, /* case-25 */
2299 { {0x51, 0x08, 0x03, 0x10, 0x50} },
2300 { {0x61, 0x08, 0x03, 0x11, 0x11} }
2305 { {0x00, 0x00, 0x00, 0x00, 0x00} }, /* case-100 */
2306 { {0x61, 0x45, 0x03, 0x11, 0x11} }, /* case-101 */
2307 { {0x61, 0x3a, 0x03, 0x11, 0x11} },
2308 { {0x61, 0x30, 0x03, 0x11, 0x11} },
2309 { {0x61, 0x20, 0x03, 0x11, 0x11} },
2310 { {0x61, 0x10, 0x03, 0x11, 0x11} }, /* case-105 */
2311 { {0x61, 0x45, 0x03, 0x11, 0x10} },
2312 { {0x61, 0x3a, 0x03, 0x11, 0x10} },
2313 { {0x61, 0x30, 0x03, 0x11, 0x10} },
2314 { {0x61, 0x20, 0x03, 0x11, 0x10} },
2315 { {0x61, 0x10, 0x03, 0x11, 0x10} }, /* case-110 */
2316 { {0x61, 0x08, 0x03, 0x11, 0x14} },
2317 { {0x61, 0x08, 0x03, 0x10, 0x14} },
2318 { {0x51, 0x08, 0x03, 0x10, 0x54} },
2319 { {0x51, 0x08, 0x03, 0x10, 0x55} },
2320 { {0x51, 0x08, 0x07, 0x10, 0x54} }, /* case-115 */
2321 { {0x51, 0x45, 0x03, 0x10, 0x50} },
2322 { {0x51, 0x3a, 0x03, 0x10, 0x50} },
2323 { {0x51, 0x30, 0x03, 0x10, 0x50} },
2324 { {0x51, 0x20, 0x03, 0x10, 0x50} },
2325 { {0x51, 0x10, 0x03, 0x10, 0x50} }, /* case-120 */
2326 { {0x51, 0x08, 0x03, 0x10, 0x50} }
2335 {0, 0, false, 7}, /* for normal */
2336 {0, 16, false, 7}, /* for WL-CPT */
2337 {4, 0, true, 1},
2344 {0, 0, false, 7}, /* for normal */
2345 {0, 16, false, 7}, /* for WL-CPT */
2346 {4, 0, true, 1},
2377 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2380 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2383 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2390 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2393 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2396 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2403 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2406 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2409 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2416 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2419 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2422 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2428 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2434 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
2440 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2446 0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
2452 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2458 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
2464 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2470 0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
2499 {0xcb0, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2500 {0xcb4, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2501 {0xcba, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2502 {0xcbd, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2503 {0xc58, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2504 {0xcbd, BIT(0), RTW_REG_DOMAIN_MAC8},
2505 {0, 0, RTW_REG_DOMAIN_NL},
2506 {0x430, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2507 {0x434, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2508 {0x42a, MASKLWORD, RTW_REG_DOMAIN_MAC16},
2509 {0x426, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2510 {0x45e, BIT(3), RTW_REG_DOMAIN_MAC8},
2511 {0x454, MASKLWORD, RTW_REG_DOMAIN_MAC16},
2512 {0, 0, RTW_REG_DOMAIN_NL},
2513 {0x4c, BIT(24) | BIT(23), RTW_REG_DOMAIN_MAC32},
2514 {0x64, BIT(0), RTW_REG_DOMAIN_MAC8},
2515 {0x4c6, BIT(4), RTW_REG_DOMAIN_MAC8},
2516 {0x40, BIT(5), RTW_REG_DOMAIN_MAC8},
2517 {0x1, RFREG_MASK, RTW_REG_DOMAIN_RF_B},
2518 {0, 0, RTW_REG_DOMAIN_NL},
2519 {0x550, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2520 {0x522, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2521 {0x953, BIT(1), RTW_REG_DOMAIN_MAC8},
2522 {0xc50, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2526 [EDCCA_TH_L2H_IDX] = {{.addr = 0x8a4, .mask = MASKBYTE0}, .offset = 0},
2527 [EDCCA_TH_H2L_IDX] = {{.addr = 0x8a4, .mask = MASKBYTE1}, .offset = 0},
2548 .max_power_index = 0x3f,
2549 .csi_buf_pg_num = 0,
2552 .dig_min = 0x1c,
2556 .sys_func_en = 0xDC,
2565 .rf_base_addr = {0x2800, 0x2c00},
2566 .rf_sipi_addr = {0xc90, 0xe90},
2585 .coex_para_ver = 0x20070206,
2586 .bt_desired_ver = 0x6,
2608 .bt_afh_span_bw20 = 0x24,
2609 .bt_afh_span_bw40 = 0x36,
2616 .fw_fifo_addr = {0x780, 0x700, 0x780, 0x660, 0x650, 0x680},