xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/include/rtw_phl.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 - 2021 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef _RTW_PHL_H_
16*4882a593Smuzhiyun #define _RTW_PHL_H_
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun typedef struct rtw_phl_com_t HAL_DATA_TYPE; /*, *PHAL_DATA_TYPE;*/
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define GET_PHL_INFO(_dvobj)	(_dvobj->phl)
21*4882a593Smuzhiyun #define GET_PHL_COM(_dvobj)	(_dvobj->phl_com)
22*4882a593Smuzhiyun #define GET_HAL_SPEC(_dvobj)	(&(GET_PHL_COM(_dvobj)->hal_spec))
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define GET_PHY_CAP(_dvobj, _band)     (&(GET_PHL_COM(_dvobj))->phy_cap[_band])
26*4882a593Smuzhiyun /* Using the macro when band info not ready. */
27*4882a593Smuzhiyun #define GET_PHY_TX_NSS_BY_BAND(_adapter, _band) ((GET_PHY_CAP(_adapter->dvobj, _band))->txss)
28*4882a593Smuzhiyun #define GET_PHY_RX_NSS_BY_BAND(_adapter, _band) ((GET_PHY_CAP(_adapter->dvobj, _band))->rxss)
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define GET_HAL_RFPATH_NUM(_dvobj) ((GET_PHL_COM(_dvobj))->rf_path_num)
31*4882a593Smuzhiyun /* refer to (hal_data->version_id.RFType / registrypriv->rf_path / 8814a from efuse or registrypriv)*/
32*4882a593Smuzhiyun #define GET_HAL_RFPATH(_dvobj) ((GET_PHL_COM(_dvobj))->rf_type)
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define GET_WIFI_ROLE_CURRENT_CH(_adapter) (_adapter->phl_role->chandef.ch)
35*4882a593Smuzhiyun #define WIFI_ROLE_IS_ON_24G(_adapter) (_adapter->phl_role->chandef.band == BAND_ON_24G)
36*4882a593Smuzhiyun #define WIFI_ROLE_IS_ON_5G(_adapter) (_adapter->phl_role->chandef.band == BAND_ON_5G)
37*4882a593Smuzhiyun #define WIFI_ROLE_IS_ON_6G(_adapter) (_adapter->phl_role->chandef.band == BAND_ON_6G)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define RTW_LITEXMITBUF_NR 256
40*4882a593Smuzhiyun #define RTW_XMITURB_NR 256
41*4882a593Smuzhiyun #define RTW_LITERECVBUF_NR 8
42*4882a593Smuzhiyun #define RTW_RECVURB_NR 8
43*4882a593Smuzhiyun #define RTW_INTINBUF_NR 1
44*4882a593Smuzhiyun #define RTW_INTINURB_NR 1
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun s8 rtw_phl_rssi_to_dbm(u8 rssi);
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun void rtw_hw_dump_hal_spec(void *sel, struct dvobj_priv *dvobj);
49*4882a593Smuzhiyun void rtw_dump_phl_sta_info(void *sel, struct sta_info *sta);
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun bool rtw_hw_chk_band_cap(struct dvobj_priv *dvobj, u8 cap);
52*4882a593Smuzhiyun bool rtw_hw_chk_bw_cap(struct dvobj_priv *dvobj, u8 cap);
53*4882a593Smuzhiyun bool rtw_hw_chk_proto_cap(struct dvobj_priv *dvobj, u8 cap);
54*4882a593Smuzhiyun bool rtw_hw_chk_wl_func(struct dvobj_priv *dvobj, u8 func);
55*4882a593Smuzhiyun bool rtw_hw_is_band_support(struct dvobj_priv *dvobj, u8 band);
56*4882a593Smuzhiyun bool rtw_hw_is_bw_support(struct dvobj_priv *dvobj, u8 bw);
57*4882a593Smuzhiyun bool rtw_hw_is_wireless_mode_support(struct dvobj_priv *dvobj, u8 mode);
58*4882a593Smuzhiyun u8 rtw_hw_get_wireless_mode(struct dvobj_priv *dvobj);
59*4882a593Smuzhiyun u8 rtw_hw_get_band_type(struct dvobj_priv *dvobj);
60*4882a593Smuzhiyun u8 rtw_hw_get_mac_addr(struct dvobj_priv *dvobj, u8 *hw_mac_addr);
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun bool rtw_hw_is_mimo_support(_adapter *adapter);
63*4882a593Smuzhiyun u8 rtw_hw_largest_bw(struct dvobj_priv *dvobj, u8 in_bw);
64*4882a593Smuzhiyun u8 rtw_hw_init(struct dvobj_priv *dvobj);
65*4882a593Smuzhiyun void rtw_hw_deinit(struct dvobj_priv *dvobj);
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun u8 rtw_hw_start(struct dvobj_priv *dvobj);
69*4882a593Smuzhiyun void rtw_hw_stop(struct dvobj_priv *dvobj);
70*4882a593Smuzhiyun bool rtw_hw_get_init_completed(struct dvobj_priv *dvobj);
71*4882a593Smuzhiyun bool rtw_hw_is_init_completed(struct dvobj_priv *dvobj);
72*4882a593Smuzhiyun void rtw_hw_cap_init(struct dvobj_priv *dvobj);
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun u8 rtw_hw_iface_init(_adapter *adapter);
75*4882a593Smuzhiyun u8 rtw_hw_iface_type_change(_adapter *adapter, u8 iface_type);
76*4882a593Smuzhiyun void rtw_hw_iface_deinit(_adapter *adapter);
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /* security */
79*4882a593Smuzhiyun u8 rtw_sec_algo_drv2phl(enum security_type drv_algo);
80*4882a593Smuzhiyun u8 rtw_sec_algo_phl2drv(enum rtw_enc_algo phl_algo);
81*4882a593Smuzhiyun int rtw_hw_add_key(struct _ADAPTER *a, struct sta_info *sta,
82*4882a593Smuzhiyun 		u8 keyid, enum security_type keyalgo, u8 keytype, u8 *key,
83*4882a593Smuzhiyun 		u8 spp, enum phl_cmd_type cmd_type, u32 cmd_timeout);
84*4882a593Smuzhiyun int rtw_hw_del_key(struct _ADAPTER *a, struct sta_info *sta,
85*4882a593Smuzhiyun 		u8 keyid, u8 keytype, enum phl_cmd_type cmd_type, u32 cmd_timeout);
86*4882a593Smuzhiyun int rtw_hw_del_all_key(struct _ADAPTER *a, struct sta_info *sta,
87*4882a593Smuzhiyun 		enum phl_cmd_type cmd_type, u32 cmd_timeout);
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun /* settting */
90*4882a593Smuzhiyun int rtw_hw_set_ch_bw(struct _ADAPTER *a,
91*4882a593Smuzhiyun 			u8 ch, enum channel_width bw, u8 offset, u8 do_rfk);
92*4882a593Smuzhiyun int rtw_hw_set_edca(struct _ADAPTER *a, u8 ac, u32 param);
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun /* connect */
95*4882a593Smuzhiyun #ifdef RTW_WKARD_UPDATE_PHL_ROLE_CAP
96*4882a593Smuzhiyun void rtw_update_phl_cap_by_rgstry(struct _ADAPTER *a);
97*4882a593Smuzhiyun #endif
98*4882a593Smuzhiyun void rtw_update_phl_sta_cap(struct _ADAPTER *a, struct sta_info *sta,
99*4882a593Smuzhiyun 			    struct protocol_cap_t *cap);
100*4882a593Smuzhiyun int rtw_hw_prepare_connect(struct _ADAPTER *a, struct sta_info *sta, u8 *target_addr);
101*4882a593Smuzhiyun int rtw_hw_start_bss_network(struct _ADAPTER *a);
102*4882a593Smuzhiyun int rtw_hw_connect_abort(struct _ADAPTER *a, struct sta_info *sta);
103*4882a593Smuzhiyun int rtw_hw_connected(struct _ADAPTER *a, struct sta_info *sta);
104*4882a593Smuzhiyun int rtw_hw_connected_apmode(struct _ADAPTER *a, struct sta_info *sta);
105*4882a593Smuzhiyun int rtw_hw_disconnect(struct _ADAPTER *a, struct sta_info *sta);
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun void rtw_hw_update_chan_def(_adapter *adapter);
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #ifdef RTW_DETECT_HANG
110*4882a593Smuzhiyun void rtw_is_hang_check(struct _ADAPTER *a);
111*4882a593Smuzhiyun #endif
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #ifdef CONFIG_RTW_ACS
114*4882a593Smuzhiyun u16 rtw_acs_get_channel_by_idx(struct _ADAPTER *a, u8 idx);
115*4882a593Smuzhiyun u8 rtw_acs_get_clm_ratio_by_idx(struct _ADAPTER *a, u8 idx);
116*4882a593Smuzhiyun s8 rtw_noise_query_by_idx(struct _ADAPTER *a, u8 idx);
117*4882a593Smuzhiyun #endif /* CONFIG_RTW_ACS */
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun void rtw_dump_env_rpt(struct _ADAPTER *a, void *sel);
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #ifdef CONFIG_WOWLAN
122*4882a593Smuzhiyun u8 rtw_hw_wow(struct _ADAPTER *a, u8 wow_en);
123*4882a593Smuzhiyun #endif
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #ifdef CONFIG_MCC_MODE
126*4882a593Smuzhiyun u8 rtw_hw_mcc_chk_inprogress(struct _ADAPTER *a);
127*4882a593Smuzhiyun #endif
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun void rtw_update_phl_edcca_mode(struct _ADAPTER *a);
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun void rtw_dump_phl_tx_power_ext_info(void *sel, _adapter *adapter);
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun void rtw_update_phl_txpwr_level(_adapter *adapter);
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun u8 get_phy_tx_nss(_adapter *adapter);
136*4882a593Smuzhiyun u8 get_phy_rx_nss(_adapter *adapter);
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun #endif /* _RTW_HW_H_ */
139