1 /****************************************************************************** 2 * 3 * Copyright(c) 2007 - 2017 Realtek Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * The full GNU General Public License is included in this distribution in the 15 * file called LICENSE. 16 * 17 * Contact Information: 18 * wlanfae <wlanfae@realtek.com> 19 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 20 * Hsinchu 300, Taiwan. 21 * 22 * Larry Finger <Larry.Finger@lwfinger.net> 23 * 24 *****************************************************************************/ 25 26 #ifndef __HALRF_IQK_H__ 27 #define __HALRF_IQK_H__ 28 29 /*@--------------------------Define Parameters-------------------------------*/ 30 #define LOK_delay 1 31 #define WBIQK_delay 10 32 #define TX_IQK 0 33 #define RX_IQK 1 34 #define TXIQK 0 35 #define RXIQK1 1 36 #define RXIQK2 2 37 #define kcount_limit_80m 2 38 #define kcount_limit_others 4 39 #define rxiqk_gs_limit 6 40 #define TXWBIQK_EN 1 41 #define RXWBIQK_EN 1 42 #if (RTL8814A_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\ 43 RTL8814B_SUPPORT) 44 #define NUM 4 45 #elif (RTL8822B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ 46 RTL8812F_SUPPORT == 1 || RTL8197G_SUPPORT == 1) 47 #define NUM 2 48 #else 49 #define NUM 1 50 #endif 51 52 /*@-----------------------End Define Parameters-----------------------*/ 53 54 struct dm_dack_info { 55 boolean dack_en; 56 u16 msbk_d[2][2][15]; 57 u8 dck_d[2][2][2]; 58 u16 biask_d[2][2]; 59 }; 60 61 struct dm_iqk_info { 62 boolean lok_fail[NUM]; 63 boolean iqk_fail[2][NUM]; 64 u32 iqc_matrix[2][NUM]; 65 u8 iqk_times; 66 u32 rf_reg18; 67 u32 rf_reg08; 68 u32 lna_idx; 69 u8 iqk_step; 70 u8 rxiqk_step; 71 u8 tmp1bcc; 72 u8 txgain; 73 u32 txgain56; 74 u8 kcount; 75 u8 rfk_ing; /*bit0:IQKing, bit1:LCKing, bit2:DPKing*/ 76 boolean rfk_forbidden; 77 u8 rxbb; 78 u32 rf_reg58; 79 boolean segment_iqk; 80 boolean is_tssi_mode; 81 u8 iqk_band; 82 u8 iqk_ch; 83 u8 iqk_bw; 84 #if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\ 85 RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\ 86 RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ 87 RTL8812F_SUPPORT == 1 || RTL8197G_SUPPORT == 1 ||\ 88 RTL8710C_SUPPORT == 1) 89 u32 iqk_channel[2]; 90 boolean iqk_fail_report[2][NUM][2]; /*channel/path/TRX(TX:0, RX:1) */ 91 /*channel / path / TRX(TX:0, RX:1) / CFIR_real*/ 92 /*channel index = 2 is just for debug*/ 93 #if (RTL8814B_SUPPORT == 1) 94 u16 iqk_cfir_real[3][NUM][2][19]; 95 u16 iqk_cfir_imag[3][NUM][2][19]; 96 #elif (RTL8812F_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ) 97 u16 iqk_cfir_real[3][2][2][17]; 98 /*channel / path / TRX(TX:0, RX:1) / CFIR_imag*/ 99 /*channel index = 2 is just for debug*/ 100 u16 iqk_cfir_imag[3][2][2][17]; 101 /*times/path*/ 102 #elif (RTL8195B_SUPPORT == 1) 103 u32 iqk_cfir_real[3][NUM][2][9]; 104 u32 iqk_cfir_imag[3][NUM][2][9]; 105 /*channel / path / TRX(TX:0, RX:1) / CFIR_imag*/ 106 /*channel index = 2 is just for debug*/ 107 #else 108 u32 iqk_cfir_real[3][NUM][2][8]; 109 /*channel / path / TRX(TX:0, RX:1) / CFIR_imag*/ 110 /*channel index = 2 is just for debug*/ 111 u32 iqk_cfir_imag[3][NUM][2][8]; 112 #endif 113 114 #if (RTL8812F_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ) 115 u32 rx_cfir_real[2][2][17]; 116 u32 rx_cfir_imag[2][2][17]; 117 u32 rx_cfir[2][2]; 118 #endif 119 u8 retry_count[2][NUM][3]; /* channel / path / (TXK:0, RXK1:1, RXK2:2) */ 120 u8 gs_retry_count[2][NUM][2]; /* channel / path / (GSRXK1:0, GSRXK2:1) */ 121 /* channel / path 0:SRXK1 fail, 1:RXK1 fail 2:RXK2 fail */ 122 u8 rxiqk_fail_code[2][NUM]; 123 u32 lok_idac[2][NUM]; /*channel / path*/ 124 u16 rxiqk_agc[2][NUM]; /*channel / path*/ 125 u32 bypass_iqk[2][NUM]; /*channel / 0xc94/0xe94*/ 126 u32 txgap_result[8]; /*txagpK result */ 127 u32 tmp_gntwl; 128 boolean is_btg; 129 boolean isbnd; 130 boolean is_reload; 131 boolean is_hwtx; 132 boolean xym_read; 133 boolean trximr_enable; 134 #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\ 135 RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1) 136 u32 rx_xym[2][10]; 137 u32 tx_xym[2][10]; 138 u32 gs1_xym[2][6]; 139 u32 gs2_xym[2][6]; 140 u32 rxk1_xym[2][6]; 141 u32 nbtxk_1b38[2]; 142 u32 nbrxk_1b3c[2]; 143 #endif 144 #if (RTL8710C_SUPPORT == 1 || RTL8197G_SUPPORT == 1 ) 145 u32 txxy[2][2]; 146 u32 rxxy[2][2]; 147 #endif 148 #endif 149 }; 150 151 #endif /*__HALRF_IQK_H__*/ 152