1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright(c) 2009-2014  Realtek Corporation.*/
3 
4 #ifndef __PHY_COMMON__
5 #define __PHY_COMMON__
6 
7 #define RT_CANNOT_IO(hw)			false
8 
9 enum swchnlcmd_id {
10 	CMDID_END,
11 	CMDID_SET_TXPOWEROWER_LEVEL,
12 	CMDID_BBREGWRITE10,
13 	CMDID_WRITEPORT_ULONG,
14 	CMDID_WRITEPORT_USHORT,
15 	CMDID_WRITEPORT_UCHAR,
16 	CMDID_RF_WRITEREG,
17 };
18 
19 struct swchnlcmd {
20 	enum swchnlcmd_id cmdid;
21 	u32 para1;
22 	u32 para2;
23 	u32 msdelay;
24 };
25 
26 u32 rtl8723_phy_query_bb_reg(struct ieee80211_hw *hw,
27 			     u32 regaddr, u32 bitmask);
28 void rtl8723_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr,
29 			      u32 bitmask, u32 data);
30 u32 rtl8723_phy_calculate_bit_shift(u32 bitmask);
31 u32 rtl8723_phy_rf_serial_read(struct ieee80211_hw *hw,
32 			       enum radio_path rfpath, u32 offset);
33 void rtl8723_phy_rf_serial_write(struct ieee80211_hw *hw,
34 				 enum radio_path rfpath,
35 				 u32 offset, u32 data);
36 long rtl8723_phy_txpwr_idx_to_dbm(struct ieee80211_hw *hw,
37 				  enum wireless_mode wirelessmode,
38 				  u8 txpwridx);
39 void rtl8723_phy_init_bb_rf_reg_def(struct ieee80211_hw *hw);
40 bool rtl8723_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable,
41 				      u32 cmdtableidx,
42 				      u32 cmdtablesz,
43 				      enum swchnlcmd_id cmdid,
44 				      u32 para1, u32 para2,
45 				      u32 msdelay);
46 void rtl8723_phy_path_a_fill_iqk_matrix(struct ieee80211_hw *hw,
47 					bool iqk_ok,
48 					long result[][8],
49 					u8 final_candidate,
50 					bool btxonly);
51 void rtl8723_save_adda_registers(struct ieee80211_hw *hw, u32 *addareg,
52 				 u32 *addabackup, u32 registernum);
53 void rtl8723_phy_save_mac_registers(struct ieee80211_hw *hw,
54 				    u32 *macreg, u32 *macbackup);
55 void rtl8723_phy_reload_adda_registers(struct ieee80211_hw *hw,
56 				       u32 *addareg, u32 *addabackup,
57 				       u32 regiesternum);
58 void rtl8723_phy_reload_mac_registers(struct ieee80211_hw *hw,
59 				      u32 *macreg, u32 *macbackup);
60 void rtl8723_phy_path_adda_on(struct ieee80211_hw *hw, u32 *addareg,
61 			      bool is_patha_on, bool is2t);
62 void rtl8723_phy_mac_setting_calibration(struct ieee80211_hw *hw,
63 					 u32 *macreg, u32 *macbackup);
64 void rtl8723_phy_path_a_standby(struct ieee80211_hw *hw);
65 void rtl8723_phy_pi_mode_switch(struct ieee80211_hw *hw, bool pi_mode);
66 
67 #endif
68