xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8189fs/hal/phydm/halrf/halrf_iqk.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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