xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852be/phl/phl_wow_def.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c)2019 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 _PHL_WOW_DEF_H_
16*4882a593Smuzhiyun #define _PHL_WOW_DEF_H_
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun enum rtw_wow_op_mode {
19*4882a593Smuzhiyun 	RTW_WOW_OP_NONE = 0,
20*4882a593Smuzhiyun 	RTW_WOW_OP_PWR_DOWN,
21*4882a593Smuzhiyun 	RTW_WOW_OP_DISCONNECT_STBY,
22*4882a593Smuzhiyun 	RTW_WOW_OP_CONNECT_STBY,
23*4882a593Smuzhiyun 	RTW_WOW_OP_MAX = 0xF
24*4882a593Smuzhiyun };
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun enum rtw_wow_wake_reason {
27*4882a593Smuzhiyun 	RTW_WOW_RSN_UNKNOWN = 0,
28*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_PAIRWISEKEY,
29*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_GTK,
30*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_FOURWAY_HANDSHAKE,
31*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_DISASSOC,
32*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_DEAUTH, /* 5 */
33*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_ARP_REQUEST,
34*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_NS,
35*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_EAPREQ_IDENTIFY,
36*4882a593Smuzhiyun 	RTW_WOW_RSN_FW_DECISION_DISCONNECT,
37*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_MAGIC_PKT, /* 10 */
38*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_UNICAST_PKT,
39*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_PATTERN_PKT,
40*4882a593Smuzhiyun 	RTW_WOW_RSN_RTD3_SSID_MATCH,
41*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_DATA_PKT,
42*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_SSDP_MATCH, /* 15 */
43*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_WSD_MATCH,
44*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_SLP_MATCH,
45*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_LLTD_MATCH,
46*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_MDNS_MATCH,
47*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_REALWOW_V2_WAKEUP_PKT, /* 20 */
48*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_REALWOW_V2_ACK_LOST,
49*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_REALWOW_V2_TX_KAPKT,
50*4882a593Smuzhiyun 	RTW_WOW_RSN_ENABLE_FAIL_DMA_IDLE,
51*4882a593Smuzhiyun 	RTW_WOW_RSN_ENABLE_FAIL_DMA_PAUSE,
52*4882a593Smuzhiyun 	RTW_WOW_RSN_RTIME_FAIL_DMA_IDLE, /* 25 */
53*4882a593Smuzhiyun 	RTW_WOW_RSN_RTIME_FAIL_DMA_PAUSE,
54*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_SNMP_MISMATCHED_PKT,
55*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_DESIGNATED_MAC_PKT,
56*4882a593Smuzhiyun 	RTW_WOW_RSN_NLO_SSID_MACH,
57*4882a593Smuzhiyun 	RTW_WOW_RSN_AP_OFFLOAD_WAKEUP, /* 30 */
58*4882a593Smuzhiyun 	RTW_WOW_RSN_DMAC_ERROR_OCCURRED,
59*4882a593Smuzhiyun 	RTW_WOW_RSN_EXCEPTION_OCCURRED,
60*4882a593Smuzhiyun 	RTW_WOW_RSN_L0_TO_L1_ERROR_OCCURRED,
61*4882a593Smuzhiyun 	RTW_WOW_RSN_ASSERT_OCCURRED,
62*4882a593Smuzhiyun 	RTW_WOW_RSN_L2_ERROR_OCCURRED, /* 35 */
63*4882a593Smuzhiyun 	RTW_WOW_RSN_WDT_TIMEOUT_WAKE,
64*4882a593Smuzhiyun 	RTW_WOW_RSN_RX_ACTION,
65*4882a593Smuzhiyun 	RTW_WOW_RSN_CLK_32K_UNLOCK,
66*4882a593Smuzhiyun 	RTW_WOW_RSN_CLK_32K_LOCK,
67*4882a593Smuzhiyun 	RTW_WOW_RSN_MAX = 0xFF
68*4882a593Smuzhiyun };
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun struct rtw_keep_alive_info {
72*4882a593Smuzhiyun 	/* core */
73*4882a593Smuzhiyun 	u8 keep_alive_en;
74*4882a593Smuzhiyun 	u8 keep_alive_period;
75*4882a593Smuzhiyun 	/* phl/hal */
76*4882a593Smuzhiyun 	u8 null_pkt_id;
77*4882a593Smuzhiyun };
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun struct rtw_disc_det_info {
80*4882a593Smuzhiyun 	/* core */
81*4882a593Smuzhiyun 	u8 disc_det_en;
82*4882a593Smuzhiyun 	u8 disc_wake_en;
83*4882a593Smuzhiyun 	u8 try_pkt_count;
84*4882a593Smuzhiyun 	u8 check_period;
85*4882a593Smuzhiyun 	u8 cnt_bcn_lost_en;
86*4882a593Smuzhiyun 	u8 cnt_bcn_lost_limit;
87*4882a593Smuzhiyun };
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #define MAX_NLO_NUM 10
90*4882a593Smuzhiyun #define MAX_SSID_LEN 32
91*4882a593Smuzhiyun #define MAX_NLO_CHANNEL 40
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun struct rtw_nlo_info {
94*4882a593Smuzhiyun 	u8 nlo_en;
95*4882a593Smuzhiyun 	u8 num_of_networks;
96*4882a593Smuzhiyun 	u8 num_of_hidden_ap;
97*4882a593Smuzhiyun 	u8 ssid[MAX_NLO_NUM][MAX_SSID_LEN];
98*4882a593Smuzhiyun 	u8 ssidlen[MAX_NLO_NUM];
99*4882a593Smuzhiyun 	u8 chipertype[MAX_NLO_NUM];
100*4882a593Smuzhiyun 	u8 probe_req_id;
101*4882a593Smuzhiyun 	struct scan_ofld_ch_info channel_list[MAX_NLO_CHANNEL];
102*4882a593Smuzhiyun 	u8 channel_num;
103*4882a593Smuzhiyun 	u32 delay; /* ms */
104*4882a593Smuzhiyun 	u32 period; /* ms */
105*4882a593Smuzhiyun 	u8 cycle;
106*4882a593Smuzhiyun 	u32 slow_period; /* ms */
107*4882a593Smuzhiyun 	void (* construct_pbreq)(void *priv, u8 *pkt_buf, u16 *len);
108*4882a593Smuzhiyun };
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun struct rtw_arp_ofld_content {
111*4882a593Smuzhiyun 	u8 arp_en;
112*4882a593Smuzhiyun 	u8 remote_ipv4_addr[IPV4_ADDRESS_LENGTH];
113*4882a593Smuzhiyun 	u8 host_ipv4_addr[IPV4_ADDRESS_LENGTH];
114*4882a593Smuzhiyun 	u8 mac_addr[MAC_ADDRESS_LENGTH];
115*4882a593Smuzhiyun };
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun struct rtw_arp_ofld_info {
118*4882a593Smuzhiyun 	u8 arp_en;
119*4882a593Smuzhiyun 	u8 arp_action; /* 0 = send arp response, 1 = wake up host */
120*4882a593Smuzhiyun 	u8 arp_rsp_id;
121*4882a593Smuzhiyun 	struct rtw_arp_ofld_content arp_ofld_content;
122*4882a593Smuzhiyun };
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun struct rtw_ndp_ofld_content {
125*4882a593Smuzhiyun 	u8 ndp_en;
126*4882a593Smuzhiyun 	u8 chk_remote_ip;
127*4882a593Smuzhiyun 	u8 num_target_ip;
128*4882a593Smuzhiyun 	u8 mac_addr[MAC_ADDRESS_LENGTH];
129*4882a593Smuzhiyun 	u8 remote_ipv6_addr[IPV6_ADDRESS_LENGTH];
130*4882a593Smuzhiyun 	u8 target_ipv6_addr[2][IPV6_ADDRESS_LENGTH];
131*4882a593Smuzhiyun };
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun struct rtw_ndp_ofld_info {
134*4882a593Smuzhiyun 	u8 ndp_en;
135*4882a593Smuzhiyun 	u8 ndp_id;
136*4882a593Smuzhiyun 	struct rtw_ndp_ofld_content ndp_ofld_content[2];
137*4882a593Smuzhiyun };
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun struct rtw_gtk_ofld_content {
140*4882a593Smuzhiyun 	u8 kck[32];
141*4882a593Smuzhiyun 	u32 kck_len;
142*4882a593Smuzhiyun 	u8 kek[32];
143*4882a593Smuzhiyun 	u32 kek_len;
144*4882a593Smuzhiyun 	u8 tk1[16];
145*4882a593Smuzhiyun 	u8 txmickey[8];
146*4882a593Smuzhiyun 	u8 rxmickey[8];
147*4882a593Smuzhiyun 	u8 replay_cnt[8];
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun 	u8 igtk_keyid[4];
150*4882a593Smuzhiyun 	u8 ipn[8];
151*4882a593Smuzhiyun 	u8 igtk[2][32];
152*4882a593Smuzhiyun 	u8 igtk_len;
153*4882a593Smuzhiyun 	u8 psk[32];
154*4882a593Smuzhiyun 	u8 psk_len;
155*4882a593Smuzhiyun };
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun struct rtw_gtk_ofld_info {
158*4882a593Smuzhiyun 	/* core */
159*4882a593Smuzhiyun 	u8 gtk_en;
160*4882a593Smuzhiyun 	u8 tkip_en;
161*4882a593Smuzhiyun 	u8 ieee80211w_en;
162*4882a593Smuzhiyun 	u8 pairwise_wakeup;
163*4882a593Smuzhiyun 	u8 bip_sec_algo;
164*4882a593Smuzhiyun 	u8 akmtype_byte3;
165*4882a593Smuzhiyun 	struct rtw_gtk_ofld_content gtk_ofld_content;
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun 	/* phl */
168*4882a593Smuzhiyun 	u8 hw_11w_en; /* keep 1 for BIP-CMAC-128 so far */
169*4882a593Smuzhiyun 	u8 gtk_rsp_id; /* eapol pkt id */
170*4882a593Smuzhiyun 	u8 sa_query_id;
171*4882a593Smuzhiyun };
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define MAX_WOW_PATTERN_SIZE_BIT 128
174*4882a593Smuzhiyun #define MAX_WOW_PATTERN_SIZE_BYTE 16
175*4882a593Smuzhiyun #define MAX_WOW_PATTERN_SIZE_DWORD 4
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun struct rtw_wowcam_upd_info {
178*4882a593Smuzhiyun 	u8 rw;
179*4882a593Smuzhiyun 	u8 wow_cam_idx;
180*4882a593Smuzhiyun 	u32 wake_mask[4];
181*4882a593Smuzhiyun 	u16 match_crc;
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun 	u8 is_negative_pattern_match;
184*4882a593Smuzhiyun 	u8 skip_mac_hdr;
185*4882a593Smuzhiyun 	u8 uc;
186*4882a593Smuzhiyun 	u8 mc;
187*4882a593Smuzhiyun 	u8 bc;
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun 	u8 valid;
190*4882a593Smuzhiyun 	u8 ptrn[MAX_WOW_PATTERN_SIZE_BIT];
191*4882a593Smuzhiyun 	u32 ptrn_len;
192*4882a593Smuzhiyun 	u8 mask[MAX_WOW_PATTERN_SIZE_BYTE];
193*4882a593Smuzhiyun };
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #define MAX_WOW_CAM_NUM 18
196*4882a593Smuzhiyun struct rtw_pattern_match_info{
197*4882a593Smuzhiyun 	struct rtw_wowcam_upd_info wowcam_info[MAX_WOW_CAM_NUM];
198*4882a593Smuzhiyun };
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define MAX_REALWOW_KCP_SIZE 124 /* (100 + 24) */
201*4882a593Smuzhiyun #define MAX_REALWOW_PAYLOAD 64
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun struct rtw_realwow_ofld_content {
204*4882a593Smuzhiyun 	u16 interval; /* unit : 1 ms */
205*4882a593Smuzhiyun 	u16 keep_alive_pkt_size;
206*4882a593Smuzhiyun 	u16 ack_lost_limit;
207*4882a593Smuzhiyun 	u16 ack_ptrn_size;
208*4882a593Smuzhiyun 	u16 wakeup_ptrn_size;
209*4882a593Smuzhiyun 	u16 keep_alive_pkt_ptrn[MAX_REALWOW_KCP_SIZE];
210*4882a593Smuzhiyun 	u8 ack_ptrn[MAX_REALWOW_PAYLOAD];
211*4882a593Smuzhiyun 	u8 wakeup_ptrn[MAX_REALWOW_PAYLOAD];
212*4882a593Smuzhiyun 	u32 wakeup_sec_num;
213*4882a593Smuzhiyun };
214*4882a593Smuzhiyun 
215*4882a593Smuzhiyun struct rtw_realwow_info {
216*4882a593Smuzhiyun 	u8 realwow_en;
217*4882a593Smuzhiyun 	u8 auto_wakeup;
218*4882a593Smuzhiyun 	u8 keepalive_id;
219*4882a593Smuzhiyun 	u8 wakeup_pattern_id;
220*4882a593Smuzhiyun 	u8 ack_pattern_id;
221*4882a593Smuzhiyun 	struct rtw_realwow_ofld_content realwow_ofld_content;
222*4882a593Smuzhiyun };
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun struct rtw_dev2hst_gpio_info {
225*4882a593Smuzhiyun 	/* dword0 */
226*4882a593Smuzhiyun 	u32 dev2hst_gpio_en:1;
227*4882a593Smuzhiyun 	u32 disable_inband:1;
228*4882a593Smuzhiyun 	u32 gpio_output_input:1;
229*4882a593Smuzhiyun 	u32 gpio_active:1;
230*4882a593Smuzhiyun 	u32 toggle_pulse:1;
231*4882a593Smuzhiyun 	u32 data_pin_wakeup:1;
232*4882a593Smuzhiyun 	u32 gpio_pulse_nonstop:1;
233*4882a593Smuzhiyun 	u32 gpio_time_unit:1;
234*4882a593Smuzhiyun 	u32 gpio_num:8;
235*4882a593Smuzhiyun 	u32 gpio_pulse_dura:8;
236*4882a593Smuzhiyun 	u32 gpio_pulse_period:8;
237*4882a593Smuzhiyun 	/* dword1 */
238*4882a593Smuzhiyun 	u32 gpio_pulse_count:8;
239*4882a593Smuzhiyun 	u32 rsvd0:24;
240*4882a593Smuzhiyun 	/* dword2 */
241*4882a593Smuzhiyun 	u32 customer_id:8;
242*4882a593Smuzhiyun 	u32 rsvd1:24;
243*4882a593Smuzhiyun 	/* dword3 */
244*4882a593Smuzhiyun 	u32 rsn_a_en:1;
245*4882a593Smuzhiyun 	u32 rsn_a_toggle_pulse:1;
246*4882a593Smuzhiyun 	u32 rsn_a_pulse_nonstop:1;
247*4882a593Smuzhiyun 	u32 rsn_a_time_unit:1;
248*4882a593Smuzhiyun 	u32 rsvd2:28;
249*4882a593Smuzhiyun 	/* dword4 */
250*4882a593Smuzhiyun 	u32 rsn_a:8;
251*4882a593Smuzhiyun 	u32 rsn_a_pulse_duration:8;
252*4882a593Smuzhiyun 	u32 rsn_a_pulse_period:8;
253*4882a593Smuzhiyun 	u32 rsn_a_pulse_count:8;
254*4882a593Smuzhiyun 	/* dword5 */
255*4882a593Smuzhiyun 	u32 rsn_b_en:1;
256*4882a593Smuzhiyun 	u32 rsn_b_toggle_pulse:1;
257*4882a593Smuzhiyun 	u32 rsn_b_pulse_nonstop:1;
258*4882a593Smuzhiyun 	u32 rsn_b_time_unit:1;
259*4882a593Smuzhiyun 	u32 rsvd3:28;
260*4882a593Smuzhiyun 	/* dword6 */
261*4882a593Smuzhiyun 	u32 rsn_b:8;
262*4882a593Smuzhiyun 	u32 rsn_b_pulse_duration:8;
263*4882a593Smuzhiyun 	u32 rsn_b_pulse_period:8;
264*4882a593Smuzhiyun 	u32 rsn_b_pulse_count:8;
265*4882a593Smuzhiyun };
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun struct rtw_wow_gpio_info {
268*4882a593Smuzhiyun 	struct rtw_dev2hst_gpio_info d2h_gpio_info;
269*4882a593Smuzhiyun 	enum rtw_gpio_mode dev2hst_gpio_mode;
270*4882a593Smuzhiyun 	u8 dev2hst_gpio;
271*4882a593Smuzhiyun 	u8 dev2hst_high;
272*4882a593Smuzhiyun };
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun struct rtw_remote_wake_ctrl_info {
275*4882a593Smuzhiyun 	/* core */
276*4882a593Smuzhiyun 	u8 ptk_tx_iv[IV_LENGTH];
277*4882a593Smuzhiyun 	u8 valid_check;
278*4882a593Smuzhiyun 	u8 symbol_check_en;
279*4882a593Smuzhiyun 	u8 gtk_key_idx;
280*4882a593Smuzhiyun 	u8 ptk_rx_iv[IV_LENGTH];
281*4882a593Smuzhiyun 	u8 gtk_rx_iv_idx0[IV_LENGTH];
282*4882a593Smuzhiyun 	u8 gtk_rx_iv_idx1[IV_LENGTH];
283*4882a593Smuzhiyun 	u8 gtk_rx_iv_idx2[IV_LENGTH];
284*4882a593Smuzhiyun 	u8 gtk_rx_iv_idx3[IV_LENGTH];
285*4882a593Smuzhiyun };
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun struct rtw_wow_wake_info {
288*4882a593Smuzhiyun 	/* core */
289*4882a593Smuzhiyun 	u8 wow_en;
290*4882a593Smuzhiyun 	u8 drop_all_pkt;
291*4882a593Smuzhiyun 	u8 rx_parse_after_wake;
292*4882a593Smuzhiyun 	u8 pairwise_sec_algo;
293*4882a593Smuzhiyun 	u8 group_sec_algo;
294*4882a593Smuzhiyun 	u8 bip_sec_algo;
295*4882a593Smuzhiyun 	u8 pattern_match_en;
296*4882a593Smuzhiyun 	u8 magic_pkt_en;
297*4882a593Smuzhiyun 	u8 hw_unicast_en;
298*4882a593Smuzhiyun 	u8 fw_unicast_en;
299*4882a593Smuzhiyun 	u8 deauth_wakeup;
300*4882a593Smuzhiyun 	u8 rekey_wakeup;
301*4882a593Smuzhiyun 	u8 eap_wakeup;
302*4882a593Smuzhiyun 	u8 all_data_wakeup;
303*4882a593Smuzhiyun 	struct rtw_remote_wake_ctrl_info remote_wake_ctrl_info;
304*4882a593Smuzhiyun };
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun struct rtw_aoac_report {
307*4882a593Smuzhiyun 	/* status check */
308*4882a593Smuzhiyun 	u8 rpt_fail;
309*4882a593Smuzhiyun 
310*4882a593Smuzhiyun 	/* report from fw */
311*4882a593Smuzhiyun 	u8 rpt_ver;
312*4882a593Smuzhiyun 	u8 sec_type;
313*4882a593Smuzhiyun 	u8 key_idx;
314*4882a593Smuzhiyun 	u8 pattern_idx;
315*4882a593Smuzhiyun 	u8 rekey_ok;
316*4882a593Smuzhiyun 	u8 ptk_tx_iv[IV_LENGTH];
317*4882a593Smuzhiyun 	u8 eapol_key_replay_count[8];
318*4882a593Smuzhiyun 	u8 gtk[32];
319*4882a593Smuzhiyun 	u8 ptk_rx_iv[IV_LENGTH];
320*4882a593Smuzhiyun 	u8 gtk_rx_iv[4][IV_LENGTH];
321*4882a593Smuzhiyun 	u8 igtk_key_id[8];
322*4882a593Smuzhiyun 	u8 igtk_ipn[8];
323*4882a593Smuzhiyun 	u8 igtk[32];
324*4882a593Smuzhiyun };
325*4882a593Smuzhiyun 
326*4882a593Smuzhiyun #ifdef CONFIG_WOWLAN
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun /* Exported APIs to core */
329*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_keep_alive_info(void *phl, struct rtw_keep_alive_info *info);
330*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_disc_det_info(void *phl, struct rtw_disc_det_info *info);
331*4882a593Smuzhiyun void rtw_phl_cfg_nlo_info(void *phl, struct rtw_nlo_info *info);
332*4882a593Smuzhiyun void rtw_phl_cfg_arp_ofld_info(void *phl, struct rtw_arp_ofld_info *info);
333*4882a593Smuzhiyun void rtw_phl_cfg_ndp_ofld_info(void *phl, struct rtw_ndp_ofld_info *info);
334*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_remove_wow_ptrn_info(void *phl, u8 phl_ptrn_id);
335*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_add_wow_ptrn_info(void *phl, struct rtw_wowcam_upd_info *info, u8 *phl_ptrn_id);
336*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_gtk_ofld_info(void *phl, struct rtw_gtk_ofld_info *info);
337*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_realwow_info(void *phl, struct rtw_realwow_info *info);
338*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_wow_wake(void *phl, struct rtw_wow_wake_info *info);
339*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_gpio_wake_pulse(void *phl, struct rtw_wow_gpio_info *info);
340*4882a593Smuzhiyun const char *rtw_phl_get_wow_rsn_str(void *phl, enum rtw_wow_wake_reason wake_rsn);
341*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_wow_set_sw_gpio_mode(void *phl, struct rtw_wow_gpio_info *info);
342*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_cfg_wow_sw_gpio_ctrl(void *phl, struct rtw_wow_gpio_info *info);
343*4882a593Smuzhiyun #endif /* CONFIG_WOWLAN */
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun #endif /* _PHL_WOW_DEF_H_ */
346*4882a593Smuzhiyun 
347