xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/phl/hal_g6/hal_api_rf.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /******************************************************************************
2  *
3  * Copyright(c) 2019 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  *****************************************************************************/
15 #ifndef _HAL_API_RF_H_
16 #define _HAL_API_RF_H_
17 
18 enum halrf_thermal_status{
19 	HALRF_THERMAL_STATUS_BELOW_THRESHOLD,
20 	HALRF_THERMAL_STATUS_STAY_THRESHOLD,
21 	HALRF_THERMAL_STATUS_ABOVE_THRESHOLD,
22 	HALRF_THERMAL_STATUS_UNKNOWN
23 };
24 
25 enum rtw_hal_status
26 rtw_hal_rf_init(struct rtw_phl_com_t *phl_com,
27 			struct hal_info_t *hal_info);
28 
29 void rtw_hal_rf_deinit(struct rtw_phl_com_t *phl_com,
30 			struct hal_info_t *hal_info);
31 
32 void rtw_hal_init_rf_reg(struct rtw_phl_com_t *phl_com, void *hal);
33 
34 enum rtw_hal_status rtw_hal_rf_get_pwrtrack(struct hal_info_t *hal_info, u8 *txpwr_track_status);
35 
36 void rtw_hal_rf_dm_init(struct hal_info_t *hal_info);
37 
38 enum rtw_hal_status rtw_hal_rf_set_pwrtrack(struct hal_info_t *hal_info, u8 phy_idx, u8 txpwr_track_status);
39 
40 void rtw_hal_rf_dm_init(struct hal_info_t *hal_info);
41 
42 enum rtw_hal_status rtw_hal_rf_get_thermal(struct hal_info_t *hal_info, u8 rf_path, u8 *thermal);
43 
44 enum rtw_hal_status rtw_hal_rf_set_tssi(struct hal_info_t *hal_info, u8 phy_idx, u8 rf_path, u32 tssi_de);
45 
46 enum rtw_hal_status rtw_hal_rf_get_tssi(struct hal_info_t *hal_info, u8 phy_idx, u8 rf_path, u32 *tssi);
47 
48 enum rtw_hal_status rtw_hal_rf_get_online_tssi_de(struct hal_info_t *hal_info, u8 phy_idx, u8 rf_path,s32 dbm, s32 pout, s32 *tssi_de);
49 
50 enum rtw_hal_status rtw_hal_rf_set_tssi_offset(struct hal_info_t *hal_info, u8 phy_idx, u32 tssi_de_offset, u8 rf_path);
51 
52 enum rtw_hal_status rtw_hal_rf_set_continuous_tx(struct hal_info_t *hal_info);
53 
54 enum rtw_hal_status
55 rtw_hal_rf_set_singletone_tx(struct hal_info_t *hal_info,
56 							 u8 is_on,enum rf_path path);
57 
58 enum rtw_hal_status rtw_hal_rf_set_suppression_tx(struct hal_info_t *hal_info);
59 
60 enum rtw_hal_status rtw_hal_rf_chl_rfk_trigger(void *hal, u8 phy_idx, u8 force);
61 
62 
63 enum rtw_hal_status rtw_hal_rf_dack_trigger(struct hal_info_t *hal_info,
64 			   u8 force);
65 
66 
67 enum rtw_hal_status rtw_hal_rf_iqk_trigger(struct hal_info_t *hal_info,
68 			   u8 phy_idx, u8 force);
69 
70 
71 enum rtw_hal_status rtw_hal_rf_lck_trigger(struct hal_info_t *hal_info);
72 
73 
74 enum rtw_hal_status rtw_hal_rf_dpk_trigger(struct hal_info_t *hal_info,
75 			   u8 phy_idx, u8 force);
76 
77 
78 enum rtw_hal_status rtw_hal_rf_tssi_trigger(struct hal_info_t *hal_info,
79 				u8 phy_idx);
80 
81 
82 enum rtw_hal_status rtw_hal_rf_gapk_trigger(struct hal_info_t *hal_info,
83 			   u8 phy_idx, u8 force);
84 
85 
86 enum rtw_hal_status rtw_hal_rf_set_capability_dack(struct hal_info_t *hal_info,
87 				u8 enable);
88 
89 
90 enum rtw_hal_status rtw_hal_rf_set_capability_iqk(struct hal_info_t *hal_info,
91 				u8 enable);
92 
93 
94 enum rtw_hal_status rtw_hal_rf_set_capability_dpk(struct hal_info_t *hal_info,
95 			   u8 enable);
96 
97 
98 enum rtw_hal_status rtw_hal_rf_set_capability_dpk_track(struct hal_info_t *hal_info,
99 			   u8 enable);
100 
101 
102 
103 enum rtw_hal_status rtw_hal_rf_set_capability_tssi(struct hal_info_t *hal_info,
104 				u8 enable);
105 
106 
107 enum rtw_hal_status rtw_hal_rf_set_capability_gapk(struct hal_info_t *hal_info,
108 			   u8 enable);
109 
110 
111 enum rtw_hal_status rtw_hal_rf_get_capability_dack(struct hal_info_t *hal_info,
112 				u8 *enable);
113 
114 
115 enum rtw_hal_status rtw_hal_rf_get_capability_iqk(struct hal_info_t *hal_info,
116 				u8 *enable);
117 
118 
119 enum rtw_hal_status rtw_hal_rf_get_capability_dpk(struct hal_info_t *hal_info,
120 			   u8 *enable);
121 
122 
123 enum rtw_hal_status rtw_hal_rf_get_capability_dpk_track(struct hal_info_t *hal_info,
124 				u8 *enable);
125 
126 
127 enum rtw_hal_status rtw_hal_rf_get_capability_tssi(struct hal_info_t *hal_info,
128 				u8 *enable);
129 
130 
131 enum rtw_hal_status rtw_hal_rf_get_capability_gapk(struct hal_info_t *hal_info,
132 			   u8 *enable);
133 
134 enum rtw_hal_status rtw_hal_rf_get_tssi_de_value(struct hal_info_t *hal_info);
135 
136 enum rtw_hal_status rtw_hal_rf_set_tssi_de_tx_verify(struct hal_info_t *hal_info);
137 
138 enum rtw_hal_status rtw_hal_rf_get_txpwr_final_abs(struct hal_info_t *hal_info);
139 
140 int rtw_hal_rf_get_predefined_pw_lmt_regu_type_from_str(const char *str);
141 const char * const *rtw_hal_rf_get_predefined_pw_lmt_regu_type_str_array(u8 *num);
142 const char *rtw_hal_rf_get_pw_lmt_regu_type_str(struct hal_info_t *hal_info, enum band_type band);
143 
144 bool
145 rtw_hal_rf_proc_cmd(struct hal_info_t *hal_info,
146 					struct rtw_proc_cmd *incmd,
147 					char *output, u32 out_len);
148 
149 enum rtw_hal_status
150 rtw_hal_rf_recover(struct hal_info_t *hal_info, u32 offset, u32 val, enum rf_path path);
151 
152 enum rtw_hal_status rtw_hal_rf_watchdog(struct hal_info_t *hal_info);
153 
154 enum rtw_hal_status
155 rtw_hal_rf_set_power(struct hal_info_t *hal_info, enum phl_phy_idx phy,
156 				enum phl_pwr_table pwr_table);
157 
158 enum rtw_hal_status rtw_hal_rf_set_gain_offset(struct hal_info_t *hal_info, u8 cur_phy_idx,
159 						s8 offset, u8 rf_path);
160 
161 enum rtw_hal_status rtw_hal_rf_trigger_dpk_tracking(struct hal_info_t *hal_info);
162 
163 enum rtw_hal_status
164 rtw_hal_rf_get_default_rfe_type(struct rtw_hal_com_t *hal_com);
165 
166 enum rtw_hal_status
167 rtw_hal_rf_get_default_xtal(struct rtw_hal_com_t *hal_com);
168 
169 
170 enum rtw_hal_status rtw_hal_rf_set_tssi_avg(struct hal_info_t *hal_info, u8 cur_phy_idx,
171 						s32 xdbm);
172 void
173 rtw_hal_rf_do_tssi_scan(struct hal_info_t *hal_ionfo, u8 cur_phy_idx);
174 
175 enum rtw_hal_status
176 rtw_hal_rf_update_ext_pwr_lmt_table(struct hal_info_t *hal_info);
177 
178 enum rtw_hal_status
179 rtw_hal_rf_config_radio_to_fw(struct hal_info_t *hal_info);
180 
181 bool
182 rtw_hal_rf_check_efuse_data(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx);
183 
184 void
185 rtw_hal_rf_disconnect_notify(void *hal, struct rtw_chan_def *chandef);
186 
187 bool
188 rtw_hal_rf_check_mcc_ch(void *hal, struct rtw_chan_def *chandef);
189 
190 void
191 rtw_hal_rf_dpk_switch(void *hal, bool enable);
192 
193 void
194 rtw_hal_rf_tssi_config(void *hal, enum phl_phy_idx phy_idx, bool enable);
195 
196 
197 enum rtw_hal_status
198 rtw_hal_rf_set_ch_bw(struct hal_info_t *hal_info, enum phl_phy_idx phy, u8 center_ch,
199 					enum band_type band, enum channel_width bw);
200 
201 void
202 rtw_hal_rf_get_efuse_ex(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx);
203 
204 
205 /* PSD */
206 enum rtw_hal_status rtw_hal_rf_psd_init(struct hal_info_t *hal_info, u8 cur_phy_idx,
207 					u8 path, u8 iq_path, u32 avg, u32 fft);
208 
209 enum rtw_hal_status rtw_hal_rf_psd_restore(struct hal_info_t *hal_info, u8 cur_phy_idx);
210 
211 enum rtw_hal_status rtw_hal_rf_psd_get_point_data(struct hal_info_t *hal_info, u8 cur_phy_idx,
212 					s32 point, u32 *value);
213 
214 enum rtw_hal_status rtw_hal_rf_psd_query(struct hal_info_t *hal_info, u8 cur_phy_idx,
215 					u32 point, u32 start_point, u32 stop_point, u32 *outbuf);
216 
217 void rtw_hal_rf_rx_ant(struct hal_info_t *hal_info, /*enum halrf_ant*/ u8 ant);
218 
219 enum halrf_thermal_status
220 rtw_hal_rf_get_ther_protected_threshold(
221 	struct hal_info_t *hal_info
222 );
223 
224 void rtw_hal_rf_notification(struct hal_info_t *hal_info,
225 			     enum phl_msg_evt_id event,
226 			     enum phl_phy_idx phy_idx);
227 
228 void rtw_hal_rf_cmd_notification(struct hal_info_t *hal_info,
229                              void *hal_cmd,
230                              enum phl_phy_idx phy_idx);
231 
232 #endif /*_HAL_API_RF_H_*/
233