Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / net / wireless / realtek / rtlwifi / rtl8723com / phy_common.h
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