Lines Matching +full:0 +full:x51
55 efuse->lna_type_2g = map->lna_type_2g[0]; in rtw8822b_read_efuse()
56 efuse->lna_type_5g = map->lna_type_5g[0]; in rtw8822b_read_efuse()
58 efuse->country_code[0] = map->country_code[0]; in rtw8822b_read_efuse()
61 efuse->regd = map->rf_board_option & 0x7; in rtw8822b_read_efuse()
65 for (i = 0; i < 4; i++) in rtw8822b_read_efuse()
83 return 0; in rtw8822b_read_efuse()
89 rtw_write32_mask(rtwdev, 0x64, BIT(29) | BIT(28), 0x3); in rtw8822b_phy_rfe_init()
90 rtw_write32_mask(rtwdev, 0x4c, BIT(26) | BIT(25), 0x0); in rtw8822b_phy_rfe_init()
91 rtw_write32_mask(rtwdev, 0x40, BIT(2), 0x1); in rtw8822b_phy_rfe_init()
94 rtw_write32_mask(rtwdev, 0x1990, 0x3f, 0x30); in rtw8822b_phy_rfe_init()
95 rtw_write32_mask(rtwdev, 0x1990, (BIT(11) | BIT(10)), 0x3); in rtw8822b_phy_rfe_init()
98 rtw_write32_mask(rtwdev, 0x974, 0x3f, 0x3f); in rtw8822b_phy_rfe_init()
99 rtw_write32_mask(rtwdev, 0x974, (BIT(11) | BIT(10)), 0x3); in rtw8822b_phy_rfe_init()
104 0x081, 0x088, 0x090, 0x099, 0x0a2, 0x0ac, 0x0b6, 0x0c0, 0x0cc, 0x0d8,
105 0x0e5, 0x0f2, 0x101, 0x110, 0x120, 0x131, 0x143, 0x156, 0x16a, 0x180,
106 0x197, 0x1af, 0x1c8, 0x1e3, 0x200, 0x21e, 0x23e, 0x261, 0x285, 0x2ab,
107 0x2d3, 0x2fe, 0x32b, 0x35c, 0x38e, 0x3c4, 0x3fe
112 u8 i = 0; in rtw8822b_get_swing_index()
115 swing = rtw_read32_mask(rtwdev, 0xc1c, 0xffe00000); in rtw8822b_get_swing_index()
116 for (i = 0; i < RTW_TXSCALE_SIZE; i++) { in rtw8822b_get_swing_index()
138 dm_info->delta_power_index[path] = 0; in rtw8822b_pwrtrack_init()
149 rtw_write32(rtwdev, 0x1C94, 0xAFFFAFFF); in rtw8822b_phy_bf_init()
170 crystal_cap = rtwdev->efuse.crystal_cap & 0x3F; in rtw8822b_phy_set_param()
171 rtw_write32_mask(rtwdev, 0x24, 0x7e000000, crystal_cap); in rtw8822b_phy_set_param()
172 rtw_write32_mask(rtwdev, 0x28, 0x7e, crystal_cap); in rtw8822b_phy_set_param()
188 #define WLAN_SLOT_TIME 0x09
189 #define WLAN_PIFS_TIME 0x19
190 #define WLAN_SIFS_CCK_CONT_TX 0xA
191 #define WLAN_SIFS_OFDM_CONT_TX 0xE
192 #define WLAN_SIFS_CCK_TRX 0x10
193 #define WLAN_SIFS_OFDM_TRX 0x10
194 #define WLAN_VO_TXOP_LIMIT 0x186 /* unit : 32us */
195 #define WLAN_VI_TXOP_LIMIT 0x3BC /* unit : 32us */
196 #define WLAN_RDG_NAV 0x05
197 #define WLAN_TXOP_NAV 0x1B
198 #define WLAN_CCK_RX_TSF 0x30
199 #define WLAN_OFDM_RX_TSF 0x30
200 #define WLAN_TBTT_PROHIBIT 0x04 /* unit : 32us */
201 #define WLAN_TBTT_HOLD_TIME 0x064 /* unit : 32us */
202 #define WLAN_DRV_EARLY_INT 0x04
203 #define WLAN_BCN_DMA_TIME 0x02
205 #define WLAN_RX_FILTER0 0x0FFFFFFF
206 #define WLAN_RX_FILTER2 0xFFFF
207 #define WLAN_RCR_CFG 0xE400220E
211 #define WLAN_AMPDU_MAX_TIME 0x70
212 #define WLAN_RTS_LEN_TH 0xFF
213 #define WLAN_RTS_TX_TIME_TH 0x08
214 #define WLAN_MAX_AGG_PKT_LIMIT 0x20
215 #define WLAN_RTS_MAX_AGG_PKT_LIMIT 0x20
216 #define FAST_EDCA_VO_TH 0x06
217 #define FAST_EDCA_VI_TH 0x06
218 #define FAST_EDCA_BE_TH 0x06
219 #define FAST_EDCA_BK_TH 0x06
220 #define WLAN_BAR_RETRY_LIMIT 0x01
221 #define WLAN_RA_TRY_RATE_AGG_LIMIT 0x08
223 #define WLAN_TX_FUNC_CFG1 0x30
224 #define WLAN_TX_FUNC_CFG2 0x30
225 #define WLAN_MAC_OPT_NORM_FUNC1 0x98
226 #define WLAN_MAC_OPT_LB_FUNC1 0x80
227 #define WLAN_MAC_OPT_FUNC2 0xb0810041
260 rtw_write16(rtwdev, REG_TXPAUSE, 0x0000); in rtw8822b_mac_init()
287 return 0; in rtw8822b_mac_init()
295 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x705770); in rtw8822b_set_channel_rfe_efem()
296 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x57); in rtw8822b_set_channel_rfe_efem()
297 rtw_write32s_mask(rtwdev, REG_RFECTL, BIT(4), 0); in rtw8822b_set_channel_rfe_efem()
299 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x177517); in rtw8822b_set_channel_rfe_efem()
300 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x75); in rtw8822b_set_channel_rfe_efem()
301 rtw_write32s_mask(rtwdev, REG_RFECTL, BIT(5), 0); in rtw8822b_set_channel_rfe_efem()
304 rtw_write32s_mask(rtwdev, REG_RFEINV, BIT(11) | BIT(10) | 0x3f, 0x0); in rtw8822b_set_channel_rfe_efem()
309 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa501); in rtw8822b_set_channel_rfe_efem()
312 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa500); in rtw8822b_set_channel_rfe_efem()
315 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa005); in rtw8822b_set_channel_rfe_efem()
325 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x745774); in rtw8822b_set_channel_rfe_ifem()
326 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x57); in rtw8822b_set_channel_rfe_ifem()
329 rtw_write32s_mask(rtwdev, REG_RFESEL0, 0xffffff, 0x477547); in rtw8822b_set_channel_rfe_ifem()
330 rtw_write32s_mask(rtwdev, REG_RFESEL8, MASKBYTE1, 0x75); in rtw8822b_set_channel_rfe_ifem()
333 rtw_write32s_mask(rtwdev, REG_RFEINV, BIT(11) | BIT(10) | 0x3f, 0x0); in rtw8822b_set_channel_rfe_ifem()
339 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa501); in rtw8822b_set_channel_rfe_ifem()
342 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa500); in rtw8822b_set_channel_rfe_ifem()
345 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa005); in rtw8822b_set_channel_rfe_ifem()
348 rtw_write32s_mask(rtwdev, REG_TRSW, MASKLWORD, 0xa5a5); in rtw8822b_set_channel_rfe_ifem()
367 {0x75C97010, 0x75C97010, 0x75C97010, 0x75C97010}, /*Reg82C*/
368 {0x79a0eaaa, 0x79A0EAAC, 0x79a0eaaa, 0x79a0eaaa}, /*Reg830*/
369 {0x87765541, 0x87746341, 0x87765541, 0x87746341}, /*Reg838*/
373 {0x75B86010, 0x75B76010, 0x75B86010, 0x75B76010}, /*Reg82C*/
374 {0x79A0EAA8, 0x79A0EAAC, 0x79A0EAA8, 0x79a0eaaa}, /*Reg830*/
375 {0x87766451, 0x87766431, 0x87766451, 0x87766431}, /*Reg838*/
379 {0x75da8010, 0x75da8010, 0x75da8010, 0x75da8010}, /*Reg82C*/
380 {0x79a0eaaa, 0x97A0EAAC, 0x79a0eaaa, 0x79a0eaaa}, /*Reg830*/
381 {0x87765541, 0x86666341, 0x87765561, 0x86666361}, /*Reg838*/
476 reg830 = 0x79a0ea28; in rtw8822b_set_channel_cca()
484 rtw_write32_mask(rtwdev, REG_L1WT, MASKDWORD, 0x9194b2b9); in rtw8822b_set_channel_cca()
487 rtw_write32_mask(rtwdev, REG_CCA2ND, 0xf0, 0x4); in rtw8822b_set_channel_cca()
490 static const u8 low_band[15] = {0x7, 0x6, 0x6, 0x5, 0x0, 0x0, 0x7, 0xff, 0x6,
491 0x5, 0x0, 0x0, 0x7, 0x6, 0x6};
492 static const u8 middle_band[23] = {0x6, 0x5, 0x0, 0x0, 0x7, 0x6, 0x6, 0xff, 0x0,
493 0x0, 0x7, 0x6, 0x6, 0x5, 0x0, 0xff, 0x7, 0x6,
494 0x6, 0x5, 0x0, 0x0, 0x7};
495 static const u8 high_band[15] = {0x5, 0x5, 0x0, 0x7, 0x7, 0x6, 0x5, 0xff, 0x0,
496 0x7, 0x7, 0x6, 0x5, 0x5, 0x0};
501 #define RF18_BAND_2G (0) in rtw8822b_set_channel_rf()
516 rf_reg18 = rtw_read_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK); in rtw8822b_set_channel_rf()
544 rf_reg_be = 0x0; in rtw8822b_set_channel_rf()
556 /* need to set 0xdf[18]=1 before writing RF18 when channel 144 */ in rtw8822b_set_channel_rf()
558 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTDBG, BIT(18), 0x1); in rtw8822b_set_channel_rf()
560 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTDBG, BIT(18), 0x0); in rtw8822b_set_channel_rf()
562 rtw_write_rf(rtwdev, RF_PATH_A, 0x18, RFREG_MASK, rf_reg18); in rtw8822b_set_channel_rf()
564 rtw_write_rf(rtwdev, RF_PATH_B, 0x18, RFREG_MASK, rf_reg18); in rtw8822b_set_channel_rf()
566 rtw_write_rf(rtwdev, RF_PATH_A, RF_XTALX2, BIT(19), 0); in rtw8822b_set_channel_rf()
580 igi = rtw_read32_mask(rtwdev, REG_RXIGI_A, 0x7f); in rtw8822b_toggle_igi()
581 rtw_write32_mask(rtwdev, REG_RXIGI_A, 0x7f, igi - 2); in rtw8822b_toggle_igi()
582 rtw_write32_mask(rtwdev, REG_RXIGI_A, 0x7f, igi); in rtw8822b_toggle_igi()
583 rtw_write32_mask(rtwdev, REG_RXIGI_B, 0x7f, igi - 2); in rtw8822b_toggle_igi()
584 rtw_write32_mask(rtwdev, REG_RXIGI_B, 0x7f, igi); in rtw8822b_toggle_igi()
586 rtw_write32_mask(rtwdev, REG_RXPSEL, MASKBYTE0, 0x0); in rtw8822b_toggle_igi()
595 rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x1); in rtw8822b_set_channel_rxdfir()
596 rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x0); in rtw8822b_set_channel_rxdfir()
597 rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x0); in rtw8822b_set_channel_rxdfir()
600 rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x2); in rtw8822b_set_channel_rxdfir()
601 rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x1); in rtw8822b_set_channel_rxdfir()
602 rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x0); in rtw8822b_set_channel_rxdfir()
605 rtw_write32_mask(rtwdev, REG_ACBB0, BIT(29) | BIT(28), 0x2); in rtw8822b_set_channel_rxdfir()
606 rtw_write32_mask(rtwdev, REG_ACBBRXFIR, BIT(29) | BIT(28), 0x2); in rtw8822b_set_channel_rxdfir()
607 rtw_write32s_mask(rtwdev, REG_TXDFIR, BIT(31), 0x1); in rtw8822b_set_channel_rxdfir()
619 rtw_write32_mask(rtwdev, REG_RXPSEL, BIT(28), 0x1); in rtw8822b_set_channel_bb()
620 rtw_write32_mask(rtwdev, REG_CCK_CHECK, BIT(7), 0x0); in rtw8822b_set_channel_bb()
621 rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x0); in rtw8822b_set_channel_bb()
622 rtw_write32_mask(rtwdev, REG_RXCCAMSK, 0x0000FC00, 15); in rtw8822b_set_channel_bb()
624 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x0); in rtw8822b_set_channel_bb()
625 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x96a); in rtw8822b_set_channel_bb()
627 rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD, 0x00006577); in rtw8822b_set_channel_bb()
628 rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD, 0x0000); in rtw8822b_set_channel_bb()
630 rtw_write32_mask(rtwdev, REG_TXSF2, MASKDWORD, 0x384f6577); in rtw8822b_set_channel_bb()
631 rtw_write32_mask(rtwdev, REG_TXSF6, MASKLWORD, 0x1525); in rtw8822b_set_channel_bb()
634 rtw_write32_mask(rtwdev, REG_RFEINV, 0x300, 0x2); in rtw8822b_set_channel_bb()
636 rtw_write32_mask(rtwdev, REG_ENTXCCK, BIT(18), 0x1); in rtw8822b_set_channel_bb()
637 rtw_write32_mask(rtwdev, REG_CCK_CHECK, BIT(7), 0x1); in rtw8822b_set_channel_bb()
638 rtw_write32_mask(rtwdev, REG_RXPSEL, BIT(28), 0x0); in rtw8822b_set_channel_bb()
639 rtw_write32_mask(rtwdev, REG_RXCCAMSK, 0x0000FC00, 34); in rtw8822b_set_channel_bb()
642 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x1); in rtw8822b_set_channel_bb()
644 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x2); in rtw8822b_set_channel_bb()
646 rtw_write32_mask(rtwdev, REG_ACGG2TBL, 0x1f, 0x3); in rtw8822b_set_channel_bb()
649 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x494); in rtw8822b_set_channel_bb()
651 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x453); in rtw8822b_set_channel_bb()
653 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x452); in rtw8822b_set_channel_bb()
655 rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, 0x412); in rtw8822b_set_channel_bb()
657 rtw_write32_mask(rtwdev, 0xcbc, 0x300, 0x1); in rtw8822b_set_channel_bb()
664 val32 &= 0xFFCFFC00; in rtw8822b_set_channel_bb()
668 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); in rtw8822b_set_channel_bb()
677 val32 &= 0xFF3FF300; in rtw8822b_set_channel_bb()
678 val32 |= (((primary_ch_idx & 0xf) << 2) | RTW_CHANNEL_WIDTH_40); in rtw8822b_set_channel_bb()
681 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); in rtw8822b_set_channel_bb()
685 val32 &= 0xFCEFCF00; in rtw8822b_set_channel_bb()
686 val32 |= (((primary_ch_idx & 0xf) << 2) | RTW_CHANNEL_WIDTH_80); in rtw8822b_set_channel_bb()
689 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x1); in rtw8822b_set_channel_bb()
692 rtw_write32_mask(rtwdev, REG_L1PKWT, 0x0000f000, 0x6); in rtw8822b_set_channel_bb()
693 rtw_write32_mask(rtwdev, REG_ADC40, BIT(10), 0x1); in rtw8822b_set_channel_bb()
698 val32 &= 0xEFEEFE00; in rtw8822b_set_channel_bb()
702 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x0); in rtw8822b_set_channel_bb()
703 rtw_write32_mask(rtwdev, REG_ADC40, BIT(31), 0x1); in rtw8822b_set_channel_bb()
707 val32 &= 0xEFFEFF00; in rtw8822b_set_channel_bb()
711 rtw_write32_mask(rtwdev, REG_ADC160, BIT(30), 0x0); in rtw8822b_set_channel_bb()
712 rtw_write32_mask(rtwdev, REG_ADC40, BIT(31), 0x1); in rtw8822b_set_channel_bb()
754 rtw_write32_mask(rtwdev, REG_AGCTR_A, MASKLWORD, 0x3231); in rtw8822b_config_trx_mode()
756 rtw_write32_mask(rtwdev, REG_AGCTR_A, MASKLWORD, 0x1111); in rtw8822b_config_trx_mode()
759 rtw_write32_mask(rtwdev, REG_AGCTR_B, MASKLWORD, 0x3231); in rtw8822b_config_trx_mode()
761 rtw_write32_mask(rtwdev, REG_AGCTR_B, MASKLWORD, 0x1111); in rtw8822b_config_trx_mode()
763 rtw_write32_mask(rtwdev, REG_CDDTXP, (BIT(19) | BIT(18)), 0x3); in rtw8822b_config_trx_mode()
764 rtw_write32_mask(rtwdev, REG_TXPSEL, (BIT(29) | BIT(28)), 0x1); in rtw8822b_config_trx_mode()
765 rtw_write32_mask(rtwdev, REG_TXPSEL, BIT(30), 0x1); in rtw8822b_config_trx_mode()
768 rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x001); in rtw8822b_config_trx_mode()
769 rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0x8); in rtw8822b_config_trx_mode()
771 rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x002); in rtw8822b_config_trx_mode()
772 rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0x4); in rtw8822b_config_trx_mode()
776 rtw_write32_mask(rtwdev, REG_TXPSEL1, 0xfff0, 0x01); in rtw8822b_config_trx_mode()
778 rtw_write32_mask(rtwdev, REG_TXPSEL1, 0xfff0, 0x43); in rtw8822b_config_trx_mode()
785 rtw_write32_mask(rtwdev, REG_CDDTXP, 0xfff00000, 0x043); in rtw8822b_config_trx_mode()
786 rtw_write32_mask(rtwdev, REG_ADCINI, 0xf0000000, 0xc); in rtw8822b_config_trx_mode()
790 rtw_write32_mask(rtwdev, REG_RXDESC, BIT(22), 0x0); in rtw8822b_config_trx_mode()
791 rtw_write32_mask(rtwdev, REG_RXDESC, BIT(18), 0x0); in rtw8822b_config_trx_mode()
794 rtw_write32_mask(rtwdev, REG_ADCINI, 0x0f000000, 0x0); in rtw8822b_config_trx_mode()
796 rtw_write32_mask(rtwdev, REG_ADCINI, 0x0f000000, 0x5); in rtw8822b_config_trx_mode()
802 rtw_write32_mask(rtwdev, REG_ANTWT, BIT(16), 0x0); in rtw8822b_config_trx_mode()
803 rtw_write32_mask(rtwdev, REG_HTSTFWT, BIT(28), 0x0); in rtw8822b_config_trx_mode()
804 rtw_write32_mask(rtwdev, REG_MRC, BIT(23), 0x0); in rtw8822b_config_trx_mode()
806 rtw_write32_mask(rtwdev, REG_ANTWT, BIT(16), 0x1); in rtw8822b_config_trx_mode()
807 rtw_write32_mask(rtwdev, REG_HTSTFWT, BIT(28), 0x1); in rtw8822b_config_trx_mode()
808 rtw_write32_mask(rtwdev, REG_MRC, BIT(23), 0x1); in rtw8822b_config_trx_mode()
811 for (counter = 100; counter > 0; counter--) { in rtw8822b_config_trx_mode()
814 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x80000); in rtw8822b_config_trx_mode()
815 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, RFREG_MASK, 0x00001); in rtw8822b_config_trx_mode()
818 rf_reg33 = rtw_read_rf(rtwdev, RF_PATH_A, 0x33, RFREG_MASK); in rtw8822b_config_trx_mode()
820 if (rf_reg33 == 0x00001) in rtw8822b_config_trx_mode()
824 if (WARN(counter <= 0, "write RF mode table fail\n")) in rtw8822b_config_trx_mode()
827 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x80000); in rtw8822b_config_trx_mode()
828 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWA, RFREG_MASK, 0x00001); in rtw8822b_config_trx_mode()
829 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD1, RFREG_MASK, 0x00034); in rtw8822b_config_trx_mode()
830 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWD0, RFREG_MASK, 0x4080c); in rtw8822b_config_trx_mode()
831 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x00000); in rtw8822b_config_trx_mode()
832 rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x00000); in rtw8822b_config_trx_mode()
862 u8 evm_dbm = 0; in query_phy_status_page1()
899 for (path = 0; path <= rtwdev->hal.rf_path_num; path++) { in query_phy_status_page1()
907 if (rx_evm < 0) { in query_phy_status_page1()
909 evm_dbm = 0; in query_phy_status_page1()
922 page = *phy_status & 0xf; in query_phy_status()
925 case 0: in query_phy_status()
941 static const u32 offset_txagc[2] = {0x1d00, 0x1d80}; in rtw8822b_set_tx_power_index_by_rate()
946 for (j = 0; j < rtw_rate_size[rs]; j++) { in rtw8822b_set_tx_power_index_by_rate()
949 shift = rate & 0x3; in rtw8822b_set_tx_power_index_by_rate()
951 if (shift == 0x3) { in rtw8822b_set_tx_power_index_by_rate()
952 rate_idx = rate & 0xfc; in rtw8822b_set_tx_power_index_by_rate()
955 phy_pwr_idx = 0; in rtw8822b_set_tx_power_index_by_rate()
965 for (path = 0; path < hal->rf_path_num; path++) { in rtw8822b_set_tx_power_index()
966 for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) in rtw8822b_set_tx_power_index()
989 rtw_dbg(rtwdev, RTW_DBG_PHY, "config RF path, tx=0x%x rx=0x%x\n", in rtw8822b_set_antenna()
993 rtw_warn(rtwdev, "unsupported tx path 0x%x\n", antenna_tx); in rtw8822b_set_antenna()
998 rtw_warn(rtwdev, "unsupported rx path 0x%x\n", antenna_rx); in rtw8822b_set_antenna()
1007 return 0; in rtw8822b_set_antenna()
1028 cck_enable = rtw_read32(rtwdev, 0x808) & BIT(28); in rtw8822b_false_alarm_statistics()
1029 cck_fa_cnt = rtw_read16(rtwdev, 0xa5c); in rtw8822b_false_alarm_statistics()
1030 ofdm_fa_cnt = rtw_read16(rtwdev, 0xf48); in rtw8822b_false_alarm_statistics()
1035 dm_info->total_fa_cnt += cck_enable ? cck_fa_cnt : 0; in rtw8822b_false_alarm_statistics()
1037 crc32_cnt = rtw_read32(rtwdev, 0xf04); in rtw8822b_false_alarm_statistics()
1038 dm_info->cck_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1039 dm_info->cck_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1040 crc32_cnt = rtw_read32(rtwdev, 0xf14); in rtw8822b_false_alarm_statistics()
1041 dm_info->ofdm_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1042 dm_info->ofdm_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1043 crc32_cnt = rtw_read32(rtwdev, 0xf10); in rtw8822b_false_alarm_statistics()
1044 dm_info->ht_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1045 dm_info->ht_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1046 crc32_cnt = rtw_read32(rtwdev, 0xf0c); in rtw8822b_false_alarm_statistics()
1047 dm_info->vht_ok_cnt = crc32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1048 dm_info->vht_err_cnt = (crc32_cnt & 0xffff0000) >> 16; in rtw8822b_false_alarm_statistics()
1050 cca32_cnt = rtw_read32(rtwdev, 0xf08); in rtw8822b_false_alarm_statistics()
1051 dm_info->ofdm_cca_cnt = ((cca32_cnt & 0xffff0000) >> 16); in rtw8822b_false_alarm_statistics()
1054 cca32_cnt = rtw_read32(rtwdev, 0xfcc); in rtw8822b_false_alarm_statistics()
1055 dm_info->cck_cca_cnt = cca32_cnt & 0xffff; in rtw8822b_false_alarm_statistics()
1059 rtw_write32_set(rtwdev, 0x9a4, BIT(17)); in rtw8822b_false_alarm_statistics()
1060 rtw_write32_clr(rtwdev, 0x9a4, BIT(17)); in rtw8822b_false_alarm_statistics()
1061 rtw_write32_clr(rtwdev, 0xa2c, BIT(15)); in rtw8822b_false_alarm_statistics()
1062 rtw_write32_set(rtwdev, 0xa2c, BIT(15)); in rtw8822b_false_alarm_statistics()
1063 rtw_write32_set(rtwdev, 0xb58, BIT(0)); in rtw8822b_false_alarm_statistics()
1064 rtw_write32_clr(rtwdev, 0xb58, BIT(0)); in rtw8822b_false_alarm_statistics()
1070 struct rtw_iqk_para para = {.clear = 0, .segment_iqk = 0}; in rtw8822b_do_iqk()
1077 for (counter = 0; counter < 300; counter++) { in rtw8822b_do_iqk()
1079 if (rf_reg == 0xabcde) in rtw8822b_do_iqk()
1083 rtw_write_rf(rtwdev, RF_PATH_A, RF_DTXLOK, RFREG_MASK, 0x0); in rtw8822b_do_iqk()
1086 iqk_fail_mask = rtw_read32_mask(rtwdev, REG_IQKFAILMSK, GENMASK(7, 0)); in rtw8822b_do_iqk()
1088 "iqk counter=%d reload=%d do_iqk_cnt=%d n_iqk_fail(mask)=0x%02x\n", in rtw8822b_do_iqk()
1103 /* 0x790[5:0]=0x5 */ in rtw8822b_coex_cfg_init()
1104 rtw_write8_mask(rtwdev, REG_BT_TDMA_TIME, BIT_MASK_SAMPLE_RATE, 0x5); in rtw8822b_coex_cfg_init()
1107 rtw_write8(rtwdev, REG_BT_STAT_CTRL, 0x1); in rtw8822b_coex_cfg_init()
1128 u8 regval = 0; in rtw8822b_coex_cfg_ant_switch()
1144 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1145 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1146 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1147 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1149 rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x77); in rtw8822b_coex_cfg_ant_switch()
1152 if (coex_rfe->rfe_module_type != 0x4 && in rtw8822b_coex_cfg_ant_switch()
1153 coex_rfe->rfe_module_type != 0x2) in rtw8822b_coex_cfg_ant_switch()
1154 regval = 0x3; in rtw8822b_coex_cfg_ant_switch()
1156 regval = (!polarity_inverse ? 0x2 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1158 regval = (!polarity_inverse ? 0x2 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1160 regval = (!polarity_inverse ? 0x1 : 0x2); in rtw8822b_coex_cfg_ant_switch()
1166 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1167 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1168 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1169 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1171 rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x66); in rtw8822b_coex_cfg_ant_switch()
1173 regval = (!polarity_inverse ? 0x2 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1177 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1178 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1179 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1180 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1181 rtw_write8_mask(rtwdev, REG_RFE_CTRL8, BIT_MASK_RFE_SEL89, 0x88); in rtw8822b_coex_cfg_ant_switch()
1184 /* 0x4c[23] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1185 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x1); in rtw8822b_coex_cfg_ant_switch()
1187 regval = (!polarity_inverse ? 0x0 : 0x1); in rtw8822b_coex_cfg_ant_switch()
1191 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1192 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1193 /* 0x4c[24] = 1 */ in rtw8822b_coex_cfg_ant_switch()
1194 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x1); in rtw8822b_coex_cfg_ant_switch()
1197 /* 0x4c[23] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1198 rtw_write8_mask(rtwdev, REG_LED_CFG + 2, BIT_DPDT_SEL_EN >> 16, 0x0); in rtw8822b_coex_cfg_ant_switch()
1199 /* 0x4c[24] = 0 */ in rtw8822b_coex_cfg_ant_switch()
1200 rtw_write8_mask(rtwdev, REG_LED_CFG + 3, BIT_DPDT_WL_SEL >> 24, 0x0); in rtw8822b_coex_cfg_ant_switch()
1211 rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 2, BIT_BTGP_SPI_EN >> 16, 0); in rtw8822b_coex_cfg_gnt_debug()
1212 rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 3, BIT_BTGP_JTAG_EN >> 24, 0); in rtw8822b_coex_cfg_gnt_debug()
1213 rtw_write8_mask(rtwdev, REG_GPIO_MUXCFG + 2, BIT_FSPI_EN >> 16, 0); in rtw8822b_coex_cfg_gnt_debug()
1214 rtw_write8_mask(rtwdev, REG_PAD_CTRL1 + 1, BIT_LED1DIS >> 8, 0); in rtw8822b_coex_cfg_gnt_debug()
1215 rtw_write8_mask(rtwdev, REG_SYS_SDIO_CTRL + 3, BIT_DBG_GNT_WL_BT >> 24, 0); in rtw8822b_coex_cfg_gnt_debug()
1226 coex_rfe->ant_switch_polarity = 0; in rtw8822b_coex_cfg_rfe_type()
1228 if (coex_rfe->rfe_module_type == 0x12 || in rtw8822b_coex_cfg_rfe_type()
1229 coex_rfe->rfe_module_type == 0x15 || in rtw8822b_coex_cfg_rfe_type()
1230 coex_rfe->rfe_module_type == 0x16) in rtw8822b_coex_cfg_rfe_type()
1252 rtw_write8(rtwdev, REG_RFE_CTRL_E, 0xff); in rtw8822b_coex_cfg_rfe_type()
1253 rtw_write8_mask(rtwdev, REG_RFESEL_CTRL + 1, 0x3, 0x0); in rtw8822b_coex_cfg_rfe_type()
1254 rtw_write8_mask(rtwdev, REG_RFE_INV16, BIT_RFE_BUF_EN, 0x0); in rtw8822b_coex_cfg_rfe_type()
1257 rtw_coex_write_indirect_reg(rtwdev, LTE_COEX_CTRL, BIT_LTE_COEX_EN, 0); in rtw8822b_coex_cfg_rfe_type()
1260 rtw_coex_write_indirect_reg(rtwdev, LTE_WL_TRX_CTRL, MASKLWORD, 0xffff); in rtw8822b_coex_cfg_rfe_type()
1263 rtw_coex_write_indirect_reg(rtwdev, LTE_BT_TRX_CTRL, MASKLWORD, 0xffff); in rtw8822b_coex_cfg_rfe_type()
1270 static const u16 reg_addr[] = {0xc58, 0xe58}; in rtw8822b_coex_cfg_wl_tx_power()
1271 static const u8 wl_tx_power[] = {0xd8, 0xd4, 0xd0, 0xcc, 0xc8}; in rtw8822b_coex_cfg_wl_tx_power()
1284 for (i = 0; i < ARRAY_SIZE(reg_addr); i++) in rtw8822b_coex_cfg_wl_tx_power()
1285 rtw_write8_mask(rtwdev, reg_addr[i], 0xff, pwr); in rtw8822b_coex_cfg_wl_tx_power()
1294 0xff000003, 0xbd120003, 0xbe100003, 0xbf080003, 0xbf060003, in rtw8822b_coex_cfg_wl_rx_gain()
1295 0xbf050003, 0xbc140003, 0xbb160003, 0xba180003, 0xb91a0003, in rtw8822b_coex_cfg_wl_rx_gain()
1296 0xb81c0003, 0xb71e0003, 0xb4200003, 0xb5220003, 0xb4240003, in rtw8822b_coex_cfg_wl_rx_gain()
1297 0xb3260003, 0xb2280003, 0xb12a0003, 0xb02c0003, 0xaf2e0003, in rtw8822b_coex_cfg_wl_rx_gain()
1298 0xae300003, 0xad320003, 0xac340003, 0xab360003, 0x8d380003, in rtw8822b_coex_cfg_wl_rx_gain()
1299 0x8c3a0003, 0x8b3c0003, 0x8a3e0003, 0x6e400003, 0x6d420003, in rtw8822b_coex_cfg_wl_rx_gain()
1300 0x6c440003, 0x6b460003, 0x6a480003, 0x694a0003, 0x684c0003, in rtw8822b_coex_cfg_wl_rx_gain()
1301 0x674e0003, 0x66500003, 0x65520003, 0x64540003, 0x64560003, in rtw8822b_coex_cfg_wl_rx_gain()
1302 0x007e0403 in rtw8822b_coex_cfg_wl_rx_gain()
1307 0xff000003, 0xf4120003, 0xf5100003, 0xf60e0003, 0xf70c0003, in rtw8822b_coex_cfg_wl_rx_gain()
1308 0xf80a0003, 0xf3140003, 0xf2160003, 0xf1180003, 0xf01a0003, in rtw8822b_coex_cfg_wl_rx_gain()
1309 0xef1c0003, 0xee1e0003, 0xed200003, 0xec220003, 0xeb240003, in rtw8822b_coex_cfg_wl_rx_gain()
1310 0xea260003, 0xe9280003, 0xe82a0003, 0xe72c0003, 0xe62e0003, in rtw8822b_coex_cfg_wl_rx_gain()
1311 0xe5300003, 0xc8320003, 0xc7340003, 0xc6360003, 0xc5380003, in rtw8822b_coex_cfg_wl_rx_gain()
1312 0xc43a0003, 0xc33c0003, 0xc23e0003, 0xc1400003, 0xc0420003, in rtw8822b_coex_cfg_wl_rx_gain()
1313 0xa5440003, 0xa4460003, 0xa3480003, 0xa24a0003, 0xa14c0003, in rtw8822b_coex_cfg_wl_rx_gain()
1314 0x834e0003, 0x82500003, 0x81520003, 0x80540003, 0x65560003, in rtw8822b_coex_cfg_wl_rx_gain()
1315 0x007e0403 in rtw8822b_coex_cfg_wl_rx_gain()
1326 for (i = 0; i < ARRAY_SIZE(wl_rx_low_gain_on); i++) in rtw8822b_coex_cfg_wl_rx_gain()
1330 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCKD, 0x2, 0x1); in rtw8822b_coex_cfg_wl_rx_gain()
1331 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCK, 0x3f, 0x3f); in rtw8822b_coex_cfg_wl_rx_gain()
1332 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCKD, 0x2, 0x1); in rtw8822b_coex_cfg_wl_rx_gain()
1333 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK, 0x3f, 0x3f); in rtw8822b_coex_cfg_wl_rx_gain()
1336 for (i = 0; i < ARRAY_SIZE(wl_rx_low_gain_off); i++) in rtw8822b_coex_cfg_wl_rx_gain()
1337 rtw_write32(rtwdev, 0x81c, wl_rx_low_gain_off[i]); in rtw8822b_coex_cfg_wl_rx_gain()
1340 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCK, 0x3f, 0x4); in rtw8822b_coex_cfg_wl_rx_gain()
1341 rtw_write_rf(rtwdev, RF_PATH_A, RF_RCKD, 0x2, 0x0); in rtw8822b_coex_cfg_wl_rx_gain()
1342 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK, 0x3f, 0x4); in rtw8822b_coex_cfg_wl_rx_gain()
1343 rtw_write_rf(rtwdev, RF_PATH_B, RF_RCKD, 0x2, 0x0); in rtw8822b_coex_cfg_wl_rx_gain()
1354 u8 swing_lower_bound = 0; in rtw8822b_txagc_swing_offset()
1355 u8 max_tx_pwr_idx_offset = 0xf; in rtw8822b_txagc_swing_offset()
1356 s8 agc_index = 0; in rtw8822b_txagc_swing_offset()
1361 if (delta_pwr_idx >= 0) { in rtw8822b_txagc_swing_offset()
1379 agc_index = 0; in rtw8822b_txagc_swing_offset()
1398 reg1 = 0xc94; in rtw8822b_pwrtrack_set_pwr()
1399 reg2 = 0xc1c; in rtw8822b_pwrtrack_set_pwr()
1401 reg1 = 0xe94; in rtw8822b_pwrtrack_set_pwr()
1402 reg2 = 0xe1c; in rtw8822b_pwrtrack_set_pwr()
1465 if (rtwdev->efuse.thermal_meter[RF_PATH_A] == 0xff) in rtw8822b_phy_pwrtrack()
1468 thermal_value = rtw_read_rf(rtwdev, RF_PATH_A, RF_T_METER, 0xfc00); in rtw8822b_phy_pwrtrack()
1478 for (path = 0; path < rtwdev->hal.rf_path_num; path++) in rtw8822b_phy_pwrtrack()
1491 if (efuse->power_track_type != 0) in rtw8822b_pwr_track()
1496 GENMASK(17, 16), 0x03); in rtw8822b_pwr_track()
1545 rtw_write32_mask(rtwdev, REG_EDCCA_POW_MA, BIT_MA_LEVEL, 0); in rtw8822b_adaptivity_init()
1557 igi = dm_info->igi_history[0]; in rtw8822b_adaptivity()
1597 {0x0086,
1601 RTW_PWR_CMD_WRITE, BIT(0), 0},
1602 {0x0086,
1607 {0x004A,
1611 RTW_PWR_CMD_WRITE, BIT(0), 0},
1612 {0x0005,
1616 RTW_PWR_CMD_WRITE, BIT(3) | BIT(4) | BIT(7), 0},
1617 {0x0300,
1621 RTW_PWR_CMD_WRITE, 0xFF, 0},
1622 {0x0301,
1626 RTW_PWR_CMD_WRITE, 0xFF, 0},
1627 {0xFFFF,
1630 0,
1631 RTW_PWR_CMD_END, 0, 0},
1635 {0x0012,
1639 RTW_PWR_CMD_WRITE, BIT(1), 0},
1640 {0x0012,
1644 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1645 {0x0020,
1649 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1650 {0x0001,
1655 {0x0000,
1659 RTW_PWR_CMD_WRITE, BIT(5), 0},
1660 {0x0005,
1664 RTW_PWR_CMD_WRITE, (BIT(4) | BIT(3) | BIT(2)), 0},
1665 {0x0075,
1669 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1670 {0x0006,
1675 {0x0075,
1679 RTW_PWR_CMD_WRITE, BIT(0), 0},
1680 {0xFF1A,
1684 RTW_PWR_CMD_WRITE, 0xFF, 0},
1685 {0x0006,
1689 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1690 {0x0005,
1694 RTW_PWR_CMD_WRITE, BIT(7), 0},
1695 {0x0005,
1699 RTW_PWR_CMD_WRITE, (BIT(4) | BIT(3)), 0},
1700 {0x10C3,
1704 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1705 {0x0005,
1709 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1710 {0x0005,
1714 RTW_PWR_CMD_POLLING, BIT(0), 0},
1715 {0x0020,
1720 {0x10A8,
1724 RTW_PWR_CMD_WRITE, 0xFF, 0},
1725 {0x10A9,
1729 RTW_PWR_CMD_WRITE, 0xFF, 0xef},
1730 {0x10AA,
1734 RTW_PWR_CMD_WRITE, 0xFF, 0x0c},
1735 {0x0068,
1740 {0x0029,
1744 RTW_PWR_CMD_WRITE, 0xFF, 0xF9},
1745 {0x0024,
1749 RTW_PWR_CMD_WRITE, BIT(2), 0},
1750 {0x0074,
1755 {0x00AF,
1760 {0xFFFF,
1763 0,
1764 RTW_PWR_CMD_END, 0, 0},
1768 {0x0003,
1772 RTW_PWR_CMD_WRITE, BIT(2), 0},
1773 {0x0093,
1777 RTW_PWR_CMD_WRITE, BIT(3), 0},
1778 {0x001F,
1782 RTW_PWR_CMD_WRITE, 0xFF, 0},
1783 {0x00EF,
1787 RTW_PWR_CMD_WRITE, 0xFF, 0},
1788 {0xFF1A,
1792 RTW_PWR_CMD_WRITE, 0xFF, 0x30},
1793 {0x0049,
1797 RTW_PWR_CMD_WRITE, BIT(1), 0},
1798 {0x0006,
1802 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1803 {0x0002,
1807 RTW_PWR_CMD_WRITE, BIT(1), 0},
1808 {0x10C3,
1812 RTW_PWR_CMD_WRITE, BIT(0), 0},
1813 {0x0005,
1818 {0x0005,
1822 RTW_PWR_CMD_POLLING, BIT(1), 0},
1823 {0x0020,
1827 RTW_PWR_CMD_WRITE, BIT(3), 0},
1828 {0x0000,
1833 {0xFFFF,
1836 0,
1837 RTW_PWR_CMD_END, 0, 0},
1841 {0x0005,
1846 {0x0007,
1850 RTW_PWR_CMD_WRITE, 0xFF, 0x20},
1851 {0x0067,
1855 RTW_PWR_CMD_WRITE, BIT(5), 0},
1856 {0x0005,
1861 {0x004A,
1865 RTW_PWR_CMD_WRITE, BIT(0), 0},
1866 {0x0067,
1870 RTW_PWR_CMD_WRITE, BIT(5), 0},
1871 {0x0067,
1875 RTW_PWR_CMD_WRITE, BIT(4), 0},
1876 {0x004F,
1880 RTW_PWR_CMD_WRITE, BIT(0), 0},
1881 {0x0067,
1885 RTW_PWR_CMD_WRITE, BIT(1), 0},
1886 {0x0046,
1891 {0x0067,
1895 RTW_PWR_CMD_WRITE, BIT(2), 0},
1896 {0x0046,
1901 {0x0062,
1906 {0x0081,
1910 RTW_PWR_CMD_WRITE, BIT(7) | BIT(6), 0},
1911 {0x0005,
1916 {0x0086,
1920 RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
1921 {0x0086,
1925 RTW_PWR_CMD_POLLING, BIT(1), 0},
1926 {0x0090,
1930 RTW_PWR_CMD_WRITE, BIT(1), 0},
1931 {0x0044,
1935 RTW_PWR_CMD_WRITE, 0xFF, 0},
1936 {0x0040,
1940 RTW_PWR_CMD_WRITE, 0xFF, 0x90},
1941 {0x0041,
1945 RTW_PWR_CMD_WRITE, 0xFF, 0x00},
1946 {0x0042,
1950 RTW_PWR_CMD_WRITE, 0xFF, 0x04},
1951 {0xFFFF,
1954 0,
1955 RTW_PWR_CMD_END, 0, 0},
1971 {0xFFFF, 0x00,
1978 {0x0001, 0xA841,
1982 {0xFFFF, 0x0000,
1989 {0x0001, 0xA841,
1993 {0x0002, 0x60C6,
1997 {0x0008, 0x3596,
2001 {0x0009, 0x321C,
2005 {0x000A, 0x9623,
2009 {0x0020, 0x94FF,
2013 {0x0021, 0xFFCF,
2017 {0x0026, 0xC006,
2021 {0x0029, 0xFF0E,
2025 {0x002A, 0x1840,
2029 {0xFFFF, 0x0000,
2036 {0x0001, 0xA841,
2040 {0x0002, 0x60C6,
2044 {0x0008, 0x3597,
2048 {0x0009, 0x321C,
2052 {0x000A, 0x9623,
2056 {0x0020, 0x94FF,
2060 {0x0021, 0xFFCF,
2064 {0x0026, 0xC006,
2068 {0x0029, 0xFF0E,
2072 {0x002A, 0x3040,
2076 {0xFFFF, 0x0000,
2094 [0] = { .addr = 0xc50, .mask = 0x7f },
2095 [1] = { .addr = 0xe50, .mask = 0x7f },
2107 {64, 64, 0, 0, 1},
2108 {64, 64, 64, 0, 1},
2181 {0xffffffff, 0xffffffff}, /* case-0 */
2182 {0x55555555, 0x55555555},
2183 {0x66555555, 0x66555555},
2184 {0xaaaaaaaa, 0xaaaaaaaa},
2185 {0x5a5a5a5a, 0x5a5a5a5a},
2186 {0xfafafafa, 0xfafafafa}, /* case-5 */
2187 {0x6a5a5555, 0xaaaaaaaa},
2188 {0x6a5a56aa, 0x6a5a56aa},
2189 {0x6a5a5a5a, 0x6a5a5a5a},
2190 {0x66555555, 0x5a5a5a5a},
2191 {0x66555555, 0x6a5a5a5a}, /* case-10 */
2192 {0x66555555, 0xfafafafa},
2193 {0x66555555, 0x5a5a5aaa},
2194 {0x66555555, 0x6aaa5aaa},
2195 {0x66555555, 0xaaaa5aaa},
2196 {0x66555555, 0xaaaaaaaa}, /* case-15 */
2197 {0xffff55ff, 0xfafafafa},
2198 {0xffff55ff, 0x6afa5afa},
2199 {0xaaffffaa, 0xfafafafa},
2200 {0xaa5555aa, 0x5a5a5a5a},
2201 {0xaa5555aa, 0x6a5a5a5a}, /* case-20 */
2202 {0xaa5555aa, 0xaaaaaaaa},
2203 {0xffffffff, 0x5a5a5a5a},
2204 {0xffffffff, 0x5a5a5a5a},
2205 {0xffffffff, 0x55555555},
2206 {0xffffffff, 0x6a5a5aaa}, /* case-25 */
2207 {0x55555555, 0x5a5a5a5a},
2208 {0x55555555, 0xaaaaaaaa},
2209 {0x55555555, 0x6a5a6a5a},
2210 {0x66556655, 0x66556655},
2211 {0x66556aaa, 0x6a5a6aaa}, /* case-30 */
2212 {0xffffffff, 0x5aaa5aaa},
2213 {0x56555555, 0x5a5a5aaa},
2218 {0xffffffff, 0xffffffff}, /* case-100 */
2219 {0x55555555, 0x55555555},
2220 {0x66555555, 0x66555555},
2221 {0xaaaaaaaa, 0xaaaaaaaa},
2222 {0x5a5a5a5a, 0x5a5a5a5a},
2223 {0xfafafafa, 0xfafafafa}, /* case-105 */
2224 {0x5afa5afa, 0x5afa5afa},
2225 {0x55555555, 0xfafafafa},
2226 {0x66555555, 0xfafafafa},
2227 {0x66555555, 0x5a5a5a5a},
2228 {0x66555555, 0x6a5a5a5a}, /* case-110 */
2229 {0x66555555, 0xaaaaaaaa},
2230 {0xffff55ff, 0xfafafafa},
2231 {0xffff55ff, 0x5afa5afa},
2232 {0xffff55ff, 0xaaaaaaaa},
2233 {0xffff55ff, 0xffff55ff}, /* case-115 */
2234 {0xaaffffaa, 0x5afa5afa},
2235 {0xaaffffaa, 0xaaaaaaaa},
2236 {0xffffffff, 0xfafafafa},
2237 {0xffffffff, 0x5afa5afa},
2238 {0xffffffff, 0xaaaaaaaa}, /* case-120 */
2239 {0x55ff55ff, 0x5afa5afa},
2240 {0x55ff55ff, 0xaaaaaaaa},
2241 {0x55ff55ff, 0x55ff55ff}
2246 { {0x00, 0x00, 0x00, 0x00, 0x00} }, /* case-0 */
2247 { {0x61, 0x45, 0x03, 0x11, 0x11} },
2248 { {0x61, 0x3a, 0x03, 0x11, 0x11} },
2249 { {0x61, 0x30, 0x03, 0x11, 0x11} },
2250 { {0x61, 0x20, 0x03, 0x11, 0x11} },
2251 { {0x61, 0x10, 0x03, 0x11, 0x11} }, /* case-5 */
2252 { {0x61, 0x45, 0x03, 0x11, 0x10} },
2253 { {0x61, 0x3a, 0x03, 0x11, 0x10} },
2254 { {0x61, 0x30, 0x03, 0x11, 0x10} },
2255 { {0x61, 0x20, 0x03, 0x11, 0x10} },
2256 { {0x61, 0x10, 0x03, 0x11, 0x10} }, /* case-10 */
2257 { {0x61, 0x08, 0x03, 0x11, 0x14} },
2258 { {0x61, 0x08, 0x03, 0x10, 0x14} },
2259 { {0x51, 0x08, 0x03, 0x10, 0x54} },
2260 { {0x51, 0x08, 0x03, 0x10, 0x55} },
2261 { {0x51, 0x08, 0x07, 0x10, 0x54} }, /* case-15 */
2262 { {0x51, 0x45, 0x03, 0x10, 0x50} },
2263 { {0x51, 0x3a, 0x03, 0x10, 0x50} },
2264 { {0x51, 0x30, 0x03, 0x10, 0x50} },
2265 { {0x51, 0x20, 0x03, 0x10, 0x50} },
2266 { {0x51, 0x10, 0x03, 0x10, 0x50} }, /* case-20 */
2267 { {0x51, 0x4a, 0x03, 0x10, 0x50} },
2268 { {0x51, 0x0c, 0x03, 0x10, 0x54} },
2269 { {0x55, 0x08, 0x03, 0x10, 0x54} },
2270 { {0x65, 0x10, 0x03, 0x11, 0x10} },
2271 { {0x51, 0x10, 0x03, 0x10, 0x51} }, /* case-25 */
2272 { {0x51, 0x08, 0x03, 0x10, 0x50} },
2273 { {0x61, 0x08, 0x03, 0x11, 0x11} }
2278 { {0x00, 0x00, 0x00, 0x00, 0x00} }, /* case-100 */
2279 { {0x61, 0x45, 0x03, 0x11, 0x11} }, /* case-101 */
2280 { {0x61, 0x3a, 0x03, 0x11, 0x11} },
2281 { {0x61, 0x30, 0x03, 0x11, 0x11} },
2282 { {0x61, 0x20, 0x03, 0x11, 0x11} },
2283 { {0x61, 0x10, 0x03, 0x11, 0x11} }, /* case-105 */
2284 { {0x61, 0x45, 0x03, 0x11, 0x10} },
2285 { {0x61, 0x3a, 0x03, 0x11, 0x10} },
2286 { {0x61, 0x30, 0x03, 0x11, 0x10} },
2287 { {0x61, 0x20, 0x03, 0x11, 0x10} },
2288 { {0x61, 0x10, 0x03, 0x11, 0x10} }, /* case-110 */
2289 { {0x61, 0x08, 0x03, 0x11, 0x14} },
2290 { {0x61, 0x08, 0x03, 0x10, 0x14} },
2291 { {0x51, 0x08, 0x03, 0x10, 0x54} },
2292 { {0x51, 0x08, 0x03, 0x10, 0x55} },
2293 { {0x51, 0x08, 0x07, 0x10, 0x54} }, /* case-115 */
2294 { {0x51, 0x45, 0x03, 0x10, 0x50} },
2295 { {0x51, 0x3a, 0x03, 0x10, 0x50} },
2296 { {0x51, 0x30, 0x03, 0x10, 0x50} },
2297 { {0x51, 0x20, 0x03, 0x10, 0x50} },
2298 { {0x51, 0x10, 0x03, 0x10, 0x50} }, /* case-120 */
2299 { {0x51, 0x08, 0x03, 0x10, 0x50} }
2308 {0, 0, false, 7}, /* for normal */
2309 {0, 16, false, 7}, /* for WL-CPT */
2310 {4, 0, true, 1},
2317 {0, 0, false, 7}, /* for normal */
2318 {0, 16, false, 7}, /* for WL-CPT */
2319 {4, 0, true, 1},
2350 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2353 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2356 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2363 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2366 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2369 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2376 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2379 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2382 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2389 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2392 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2395 { 0, 1, 2, 2, 3, 4, 5, 5, 6, 7,
2401 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2407 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
2413 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2419 0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
2425 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2431 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
2437 0, 1, 1, 1, 2, 2, 3, 3, 3, 4,
2443 0, 1, 1, 2, 2, 3, 3, 4, 4, 5,
2472 [2] = RTW_DEF_RFE(8822b, 2, 2, 0),
2473 [3] = RTW_DEF_RFE(8822b, 3, 0, 0),
2474 [5] = RTW_DEF_RFE(8822b, 5, 5, 0),
2478 {0xcb0, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2479 {0xcb4, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2480 {0xcba, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2481 {0xcbd, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2482 {0xc58, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2483 {0xcbd, BIT(0), RTW_REG_DOMAIN_MAC8},
2484 {0, 0, RTW_REG_DOMAIN_NL},
2485 {0x430, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2486 {0x434, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2487 {0x42a, MASKLWORD, RTW_REG_DOMAIN_MAC16},
2488 {0x426, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2489 {0x45e, BIT(3), RTW_REG_DOMAIN_MAC8},
2490 {0x454, MASKLWORD, RTW_REG_DOMAIN_MAC16},
2491 {0, 0, RTW_REG_DOMAIN_NL},
2492 {0x4c, BIT(24) | BIT(23), RTW_REG_DOMAIN_MAC32},
2493 {0x64, BIT(0), RTW_REG_DOMAIN_MAC8},
2494 {0x4c6, BIT(4), RTW_REG_DOMAIN_MAC8},
2495 {0x40, BIT(5), RTW_REG_DOMAIN_MAC8},
2496 {0x1, RFREG_MASK, RTW_REG_DOMAIN_RF_B},
2497 {0, 0, RTW_REG_DOMAIN_NL},
2498 {0x550, MASKDWORD, RTW_REG_DOMAIN_MAC32},
2499 {0x522, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2500 {0x953, BIT(1), RTW_REG_DOMAIN_MAC8},
2501 {0xc50, MASKBYTE0, RTW_REG_DOMAIN_MAC8},
2505 [EDCCA_TH_L2H_IDX] = {{.addr = 0x8a4, .mask = MASKBYTE0}, .offset = 0},
2506 [EDCCA_TH_H2L_IDX] = {{.addr = 0x8a4, .mask = MASKBYTE1}, .offset = 0},
2527 .max_power_index = 0x3f,
2528 .csi_buf_pg_num = 0,
2531 .dig_min = 0x1c,
2539 .sys_func_en = 0xDC,
2548 .rf_base_addr = {0x2800, 0x2c00},
2549 .rf_sipi_addr = {0xc90, 0xe90},
2567 .coex_para_ver = 0x20070206,
2568 .bt_desired_ver = 0x6,
2590 .bt_afh_span_bw20 = 0x24,
2591 .bt_afh_span_bw40 = 0x36,
2598 .fw_fifo_addr = {0x780, 0x700, 0x780, 0x660, 0x650, 0x680},