xref: /openbmc/linux/drivers/net/wireless/realtek/rtlwifi/rtl8192se/phy.h (revision 597473720f4dc69749542bfcfed4a927a43d935e)
1*6f3fcdc8SLarry Finger /* SPDX-License-Identifier: GPL-2.0 */
2*6f3fcdc8SLarry Finger /* Copyright(c) 2009-2012  Realtek Corporation.*/
3*6f3fcdc8SLarry Finger 
4f1d2b4d3SLarry Finger #ifndef __RTL92S_PHY_H__
5f1d2b4d3SLarry Finger #define __RTL92S_PHY_H__
6f1d2b4d3SLarry Finger 
7f1d2b4d3SLarry Finger #define MAX_TXPWR_IDX_NMODE_92S		63
8f1d2b4d3SLarry Finger #define MAX_DOZE_WAITING_TIMES_9x	64
9f1d2b4d3SLarry Finger 
10f1d2b4d3SLarry Finger /* Channel switch:The size of
11f1d2b4d3SLarry Finger  * command tables for switch channel */
12f1d2b4d3SLarry Finger #define MAX_PRECMD_CNT			16
13f1d2b4d3SLarry Finger #define MAX_RFDEPENDCMD_CNT		16
14f1d2b4d3SLarry Finger #define MAX_POSTCMD_CNT			16
15f1d2b4d3SLarry Finger 
16f1d2b4d3SLarry Finger #define RF90_PATH_MAX			4
17f1d2b4d3SLarry Finger #define RF6052_MAX_PATH			2
18f1d2b4d3SLarry Finger 
19f1d2b4d3SLarry Finger enum version_8192s {
20f1d2b4d3SLarry Finger 	VERSION_8192S_ACUT,
21f1d2b4d3SLarry Finger 	VERSION_8192S_BCUT,
22f1d2b4d3SLarry Finger 	VERSION_8192S_CCUT
23f1d2b4d3SLarry Finger };
24f1d2b4d3SLarry Finger 
25f1d2b4d3SLarry Finger enum swchnlcmd_id {
26f1d2b4d3SLarry Finger 	CMDID_END,
27f1d2b4d3SLarry Finger 	CMDID_SET_TXPOWEROWER_LEVEL,
28f1d2b4d3SLarry Finger 	CMDID_BBREGWRITE10,
29f1d2b4d3SLarry Finger 	CMDID_WRITEPORT_ULONG,
30f1d2b4d3SLarry Finger 	CMDID_WRITEPORT_USHORT,
31f1d2b4d3SLarry Finger 	CMDID_WRITEPORT_UCHAR,
32f1d2b4d3SLarry Finger 	CMDID_RF_WRITEREG,
33f1d2b4d3SLarry Finger };
34f1d2b4d3SLarry Finger 
35f1d2b4d3SLarry Finger struct swchnlcmd {
36f1d2b4d3SLarry Finger 	enum swchnlcmd_id cmdid;
37f1d2b4d3SLarry Finger 	u32 para1;
38f1d2b4d3SLarry Finger 	u32 para2;
39f1d2b4d3SLarry Finger 	u32 msdelay;
40f1d2b4d3SLarry Finger };
41f1d2b4d3SLarry Finger 
42f1d2b4d3SLarry Finger enum baseband_config_type {
43f1d2b4d3SLarry Finger 	/* Radio Path A */
44f1d2b4d3SLarry Finger 	BASEBAND_CONFIG_PHY_REG = 0,
45f1d2b4d3SLarry Finger 	/* Radio Path B */
46f1d2b4d3SLarry Finger 	BASEBAND_CONFIG_AGC_TAB = 1,
47f1d2b4d3SLarry Finger };
48f1d2b4d3SLarry Finger 
49f1d2b4d3SLarry Finger #define hal_get_firmwareversion(rtlpriv) \
50f1d2b4d3SLarry Finger 	(((struct rt_firmware *)(rtlpriv->rtlhal.pfirmware))->firmwareversion)
51f1d2b4d3SLarry Finger 
52f1d2b4d3SLarry Finger u32 rtl92s_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask);
53f1d2b4d3SLarry Finger void rtl92s_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask,
54f1d2b4d3SLarry Finger 			   u32 data);
55f1d2b4d3SLarry Finger void rtl92s_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation);
56f1d2b4d3SLarry Finger u32 rtl92s_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
57f1d2b4d3SLarry Finger 			    u32 regaddr, u32 bitmask);
58f1d2b4d3SLarry Finger void rtl92s_phy_set_rf_reg(struct ieee80211_hw *hw,	enum radio_path rfpath,
59f1d2b4d3SLarry Finger 			   u32 regaddr, u32 bitmask, u32 data);
60f1d2b4d3SLarry Finger void rtl92s_phy_set_bw_mode(struct ieee80211_hw *hw,
61f1d2b4d3SLarry Finger 			    enum nl80211_channel_type ch_type);
62f1d2b4d3SLarry Finger u8 rtl92s_phy_sw_chnl(struct ieee80211_hw *hw);
63f1d2b4d3SLarry Finger bool rtl92s_phy_set_rf_power_state(struct ieee80211_hw *hw,
64f1d2b4d3SLarry Finger 				   enum rf_pwrstate rfpower_state);
65f1d2b4d3SLarry Finger bool rtl92s_phy_mac_config(struct ieee80211_hw *hw);
66f1d2b4d3SLarry Finger void rtl92s_phy_switch_ephy_parameter(struct ieee80211_hw *hw);
67f1d2b4d3SLarry Finger bool rtl92s_phy_bb_config(struct ieee80211_hw *hw);
68f1d2b4d3SLarry Finger bool rtl92s_phy_rf_config(struct ieee80211_hw *hw);
69f1d2b4d3SLarry Finger void rtl92s_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
70f1d2b4d3SLarry Finger void rtl92s_phy_set_txpower(struct ieee80211_hw *hw, u8	channel);
71f1d2b4d3SLarry Finger bool rtl92s_phy_set_fw_cmd(struct ieee80211_hw *hw, enum fwcmd_iotype fwcmd_io);
72f1d2b4d3SLarry Finger void rtl92s_phy_chk_fwcmd_iodone(struct ieee80211_hw *hw);
73f1d2b4d3SLarry Finger void rtl92s_phy_set_beacon_hwreg(struct ieee80211_hw *hw, u16 beaconinterval);
74f1d2b4d3SLarry Finger u8 rtl92s_phy_config_rf(struct ieee80211_hw *hw, enum radio_path rfpath) ;
75f1d2b4d3SLarry Finger 
76f1d2b4d3SLarry Finger #endif
77f1d2b4d3SLarry Finger 
78