xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8821cs/hal/phydm/phydm_phystatus.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2007 - 2017  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  * The full GNU General Public License is included in this distribution in the
15*4882a593Smuzhiyun  * file called LICENSE.
16*4882a593Smuzhiyun  *
17*4882a593Smuzhiyun  * Contact Information:
18*4882a593Smuzhiyun  * wlanfae <wlanfae@realtek.com>
19*4882a593Smuzhiyun  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20*4882a593Smuzhiyun  * Hsinchu 300, Taiwan.
21*4882a593Smuzhiyun  *
22*4882a593Smuzhiyun  * Larry Finger <Larry.Finger@lwfinger.net>
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  *****************************************************************************/
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #ifndef __PHYDM_PHYSTATUS_H__
27*4882a593Smuzhiyun #define __PHYDM_PHYSTATUS_H__
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun /* 2020.07.03 fix cck report bug due to 8723F coding error*/
30*4882a593Smuzhiyun #define PHYSTS_VERSION "1.2"
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /*@--------------------------Define ------------------------------------------*/
33*4882a593Smuzhiyun #define CCK_RSSI_INIT_COUNT 5
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #define RA_RSSI_STATE_INIT 0
36*4882a593Smuzhiyun #define RA_RSSI_STATE_SEND 1
37*4882a593Smuzhiyun #define RA_RSSI_STATE_HOLD 2
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #if defined(DM_ODM_CE_MAC80211)
40*4882a593Smuzhiyun #define CFO_HW_RPT_2_KHZ(val) ({		\
41*4882a593Smuzhiyun 	s32 cfo_hw_rpt_2_khz_tmp = (val);	\
42*4882a593Smuzhiyun 	(cfo_hw_rpt_2_khz_tmp << 1) + (cfo_hw_rpt_2_khz_tmp >> 1);	\
43*4882a593Smuzhiyun 	})
44*4882a593Smuzhiyun #else
45*4882a593Smuzhiyun #define CFO_HW_RPT_2_KHZ(val) ((val << 1) + (val >> 1))
46*4882a593Smuzhiyun #endif
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun /* @(X* 312.5 Khz)>>7 ~=  X*2.5 Khz= (X<<1 + X>>1)Khz  */
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define IGI_2_RSSI(igi) (igi - 10)
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define PHY_STATUS_JRGUAR2_DW_LEN 7 /* @7*4 = 28 Byte */
53*4882a593Smuzhiyun #define PHY_STATUS_JRGUAR3_DW_LEN 7 /* @7*4 = 28 Byte */
54*4882a593Smuzhiyun #define SHOW_PHY_STATUS_UNLIMITED 0
55*4882a593Smuzhiyun #define RSSI_MA 4 /*moving average factor for RSSI: 2^4=16 */
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define PHYSTS_PATH_NUM 4
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /*@************************************************************
60*4882a593Smuzhiyun  * structure and define
61*4882a593Smuzhiyun  ************************************************************/
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun __PACK struct phy_rx_agc_info {
64*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
65*4882a593Smuzhiyun 	u8 gain : 7, trsw : 1;
66*4882a593Smuzhiyun #else
67*4882a593Smuzhiyun 	u8 trsw : 1, gain : 7;
68*4882a593Smuzhiyun #endif
69*4882a593Smuzhiyun };
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun __PACK struct phy_status_rpt_8192cd {
72*4882a593Smuzhiyun 	struct phy_rx_agc_info path_agc[2];
73*4882a593Smuzhiyun 	u8	ch_corr[2];
74*4882a593Smuzhiyun 	u8	cck_sig_qual_ofdm_pwdb_all;
75*4882a593Smuzhiyun 	u8	cck_agc_rpt_ofdm_cfosho_a;
76*4882a593Smuzhiyun 	u8	cck_rpt_b_ofdm_cfosho_b;
77*4882a593Smuzhiyun 	u8	rsvd_1;/*@ch_corr_msb;*/
78*4882a593Smuzhiyun 	u8	noise_power_db_msb;
79*4882a593Smuzhiyun 	s8	path_cfotail[2];
80*4882a593Smuzhiyun 	u8	pcts_mask[2];
81*4882a593Smuzhiyun 	s8	stream_rxevm[2];
82*4882a593Smuzhiyun 	u8	path_rxsnr[2];
83*4882a593Smuzhiyun 	u8	noise_power_db_lsb;
84*4882a593Smuzhiyun 	u8	rsvd_2[3];
85*4882a593Smuzhiyun 	u8	stream_csi[2];
86*4882a593Smuzhiyun 	u8	stream_target_csi[2];
87*4882a593Smuzhiyun 	s8	sig_evm;
88*4882a593Smuzhiyun 	u8	rsvd_3;
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
91*4882a593Smuzhiyun 	u8	antsel_rx_keep_2: 1;	/*@ex_intf_flg:1;*/
92*4882a593Smuzhiyun 	u8	sgi_en: 1;
93*4882a593Smuzhiyun 	u8	rxsc: 2;
94*4882a593Smuzhiyun 	u8	idle_long: 1;
95*4882a593Smuzhiyun 	u8	r_ant_train_en: 1;
96*4882a593Smuzhiyun 	u8	ant_sel_b: 1;
97*4882a593Smuzhiyun 	u8	ant_sel: 1;
98*4882a593Smuzhiyun #else	/*@_BIG_ENDIAN_	*/
99*4882a593Smuzhiyun 	u8	ant_sel: 1;
100*4882a593Smuzhiyun 	u8	ant_sel_b: 1;
101*4882a593Smuzhiyun 	u8	r_ant_train_en: 1;
102*4882a593Smuzhiyun 	u8	idle_long: 1;
103*4882a593Smuzhiyun 	u8	rxsc: 2;
104*4882a593Smuzhiyun 	u8	sgi_en: 1;
105*4882a593Smuzhiyun 	u8	antsel_rx_keep_2: 1;/*@ex_intf_flg:1;*/
106*4882a593Smuzhiyun #endif
107*4882a593Smuzhiyun };
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun struct phy_status_rpt_8812 {
110*4882a593Smuzhiyun 	/*	@DWORD 0*/
111*4882a593Smuzhiyun 	u8 gain_trsw[2]; /*path-A and path-B {TRSW, gain[6:0] }*/
112*4882a593Smuzhiyun 	u8 chl_num_LSB; /*@channel number[7:0]*/
113*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
114*4882a593Smuzhiyun 	u8 chl_num_MSB : 2; /*@channel number[9:8]*/
115*4882a593Smuzhiyun 	u8 sub_chnl : 4; /*sub-channel location[3:0]*/
116*4882a593Smuzhiyun 	u8 r_RFMOD : 2; /*RF mode[1:0]*/
117*4882a593Smuzhiyun #else /*@_BIG_ENDIAN_	*/
118*4882a593Smuzhiyun 	u8 r_RFMOD : 2;
119*4882a593Smuzhiyun 	u8 sub_chnl : 4;
120*4882a593Smuzhiyun 	u8 chl_num_MSB : 2;
121*4882a593Smuzhiyun #endif
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun 	/*	@DWORD 1*/
124*4882a593Smuzhiyun 	u8 pwdb_all; /*@CCK signal quality / OFDM pwdb all*/
125*4882a593Smuzhiyun 	s8 cfosho[2]; /*@CCK AGC report and CCK_BB_Power*/
126*4882a593Smuzhiyun 		      /*OFDM path-A and path-B short CFO*/
127*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
128*4882a593Smuzhiyun 	u8 resvd_0 : 6;
129*4882a593Smuzhiyun 	u8 bt_RF_ch_MSB : 2; /*@8812A:2'b0  8814A: bt rf channel keep[7:6]*/
130*4882a593Smuzhiyun #else /*@_BIG_ENDIAN_*/
131*4882a593Smuzhiyun 	u8 bt_RF_ch_MSB : 2;
132*4882a593Smuzhiyun 	u8 resvd_0 : 6;
133*4882a593Smuzhiyun #endif
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun /*	@DWORD 2*/
136*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
137*4882a593Smuzhiyun 	u8 ant_div_sw_a : 1; /*@8812A: ant_div_sw_a    8814A: 1'b0*/
138*4882a593Smuzhiyun 	u8 ant_div_sw_b : 1; /*@8812A: ant_div_sw_b    8814A: 1'b0*/
139*4882a593Smuzhiyun 	u8 bt_RF_ch_LSB : 6; /*@8812A: 6'b0     8814A: bt rf channel keep[5:0]*/
140*4882a593Smuzhiyun #else /*@_BIG_ENDIAN_	*/
141*4882a593Smuzhiyun 	u8 bt_RF_ch_LSB : 6;
142*4882a593Smuzhiyun 	u8 ant_div_sw_b : 1;
143*4882a593Smuzhiyun 	u8 ant_div_sw_a : 1;
144*4882a593Smuzhiyun #endif
145*4882a593Smuzhiyun 	s8 cfotail[2]; /*@DW2 byte 1 DW2 byte 2	path-A and path-B CFO tail*/
146*4882a593Smuzhiyun 	u8 PCTS_MSK_RPT_0; /*PCTS mask report[7:0]*/
147*4882a593Smuzhiyun 	u8 PCTS_MSK_RPT_1; /*PCTS mask report[15:8]*/
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun 	/*	@DWORD 3*/
150*4882a593Smuzhiyun 	s8 rxevm[2]; /*@DW3 byte 1 DW3 byte 2	stream 1 and stream 2 RX EVM*/
151*4882a593Smuzhiyun 	s8 rxsnr[2]; /*@DW3 byte 3 DW4 byte 0	path-A and path-B RX SNR*/
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun 	/*	@DWORD 4*/
154*4882a593Smuzhiyun 	u8 PCTS_MSK_RPT_2; /*PCTS mask report[23:16]*/
155*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
156*4882a593Smuzhiyun 	u8 PCTS_MSK_RPT_3 : 6; /*PCTS mask report[29:24]*/
157*4882a593Smuzhiyun 	u8 pcts_rpt_valid : 1; /*pcts_rpt_valid*/
158*4882a593Smuzhiyun 	u8 resvd_1 : 1; /*@1'b0*/
159*4882a593Smuzhiyun #else /*@_BIG_ENDIAN_*/
160*4882a593Smuzhiyun 	u8 resvd_1 : 1;
161*4882a593Smuzhiyun 	u8 pcts_rpt_valid : 1;
162*4882a593Smuzhiyun 	u8 PCTS_MSK_RPT_3 : 6;
163*4882a593Smuzhiyun #endif
164*4882a593Smuzhiyun 	s8 rxevm_cd[2]; /*@8812A: 16'b0*/
165*4882a593Smuzhiyun 			/*@8814A: stream 3 and stream 4 RX EVM*/
166*4882a593Smuzhiyun 	/*	@DWORD 5*/
167*4882a593Smuzhiyun 	u8 csi_current[2]; /*@8812A: stream 1 and 2 CSI*/
168*4882a593Smuzhiyun 			   /*@8814A:  path-C and path-D RX SNR*/
169*4882a593Smuzhiyun 	u8 gain_trsw_cd[2]; /*path-C and path-D {TRSW, gain[6:0] }*/
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun 	/*	@DWORD 6*/
172*4882a593Smuzhiyun 	s8 sigevm; /*signal field EVM*/
173*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
174*4882a593Smuzhiyun 	u8 antidx_antc : 3;	/*@8812A: 3'b0	8814A: antidx_antc[2:0]*/
175*4882a593Smuzhiyun 	u8 antidx_antd : 3;	/*@8812A: 3'b0	8814A: antidx_antd[2:0]*/
176*4882a593Smuzhiyun 	u8 dpdt_ctrl_keep : 1;	/*@8812A: 1'b0	8814A: dpdt_ctrl_keep*/
177*4882a593Smuzhiyun 	u8 GNT_BT_keep : 1;	/*@8812A: 1'b0	8814A: GNT_BT_keep*/
178*4882a593Smuzhiyun #else /*@_BIG_ENDIAN_*/
179*4882a593Smuzhiyun 	u8 GNT_BT_keep : 1;
180*4882a593Smuzhiyun 	u8 dpdt_ctrl_keep : 1;
181*4882a593Smuzhiyun 	u8 antidx_antd : 3;
182*4882a593Smuzhiyun 	u8 antidx_antc : 3;
183*4882a593Smuzhiyun #endif
184*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
185*4882a593Smuzhiyun 	u8 antidx_anta : 3; /*@antidx_anta[2:0]*/
186*4882a593Smuzhiyun 	u8 antidx_antb : 3; /*@antidx_antb[2:0]*/
187*4882a593Smuzhiyun 	u8 hw_antsw_occur : 2; /*@1'b0*/
188*4882a593Smuzhiyun #else /*@_BIG_ENDIAN_*/
189*4882a593Smuzhiyun 	u8 hw_antsw_occur : 2;
190*4882a593Smuzhiyun 	u8 antidx_antb : 3;
191*4882a593Smuzhiyun 	u8 antidx_anta : 3;
192*4882a593Smuzhiyun #endif
193*4882a593Smuzhiyun };
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr2_type0 {
198*4882a593Smuzhiyun 	/* @DW0 */
199*4882a593Smuzhiyun 	u8 page_num;
200*4882a593Smuzhiyun 	u8 pwdb;
201*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
202*4882a593Smuzhiyun 	u8 gain : 6;
203*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
204*4882a593Smuzhiyun 	u8 trsw : 1;
205*4882a593Smuzhiyun #else
206*4882a593Smuzhiyun 	u8 trsw : 1;
207*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
208*4882a593Smuzhiyun 	u8 gain : 6;
209*4882a593Smuzhiyun #endif
210*4882a593Smuzhiyun 	u8 rsvd_1;
211*4882a593Smuzhiyun 
212*4882a593Smuzhiyun 	/* @DW1 */
213*4882a593Smuzhiyun 	u8 rsvd_2;
214*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
215*4882a593Smuzhiyun 	u8 rxsc : 4;
216*4882a593Smuzhiyun 	u8 agc_table : 4;
217*4882a593Smuzhiyun #else
218*4882a593Smuzhiyun 	u8 agc_table : 4;
219*4882a593Smuzhiyun 	u8 rxsc : 4;
220*4882a593Smuzhiyun #endif
221*4882a593Smuzhiyun 	u8 channel;
222*4882a593Smuzhiyun 	u8 band;
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun 	/* @DW2 */
225*4882a593Smuzhiyun 	u16 length;
226*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
227*4882a593Smuzhiyun 	u8 antidx_a : 3;
228*4882a593Smuzhiyun 	u8 antidx_b : 3;
229*4882a593Smuzhiyun 	u8 rsvd_3 : 2;
230*4882a593Smuzhiyun 	u8 antidx_c : 3;
231*4882a593Smuzhiyun 	u8 antidx_d : 3;
232*4882a593Smuzhiyun 	u8 rsvd_4 : 2;
233*4882a593Smuzhiyun #else
234*4882a593Smuzhiyun 	u8 rsvd_3 : 2;
235*4882a593Smuzhiyun 	u8 antidx_b : 3;
236*4882a593Smuzhiyun 	u8 antidx_a : 3;
237*4882a593Smuzhiyun 	u8 rsvd_4 : 2;
238*4882a593Smuzhiyun 	u8 antidx_d : 3;
239*4882a593Smuzhiyun 	u8 antidx_c : 3;
240*4882a593Smuzhiyun #endif
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun 	/* @DW3 */
243*4882a593Smuzhiyun 	u8 signal_quality;
244*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
245*4882a593Smuzhiyun 	u8 vga : 5;
246*4882a593Smuzhiyun 	u8 lna_l : 3;
247*4882a593Smuzhiyun 	u8 bb_power : 6;
248*4882a593Smuzhiyun 	u8 rsvd_9 : 1;
249*4882a593Smuzhiyun 	u8 lna_h : 1;
250*4882a593Smuzhiyun #else
251*4882a593Smuzhiyun 	u8 lna_l : 3;
252*4882a593Smuzhiyun 	u8 vga : 5;
253*4882a593Smuzhiyun 	u8 lna_h : 1;
254*4882a593Smuzhiyun 	u8 rsvd_9 : 1;
255*4882a593Smuzhiyun 	u8 bb_power : 6;
256*4882a593Smuzhiyun #endif
257*4882a593Smuzhiyun 	u8 rsvd_5;
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun 	/* @DW4 */
260*4882a593Smuzhiyun 	u32 rsvd_6;
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun 	/* @DW5 */
263*4882a593Smuzhiyun 	u32 rsvd_7;
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun 	/* @DW6 */
266*4882a593Smuzhiyun 	u32 rsvd_8;
267*4882a593Smuzhiyun };
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr2_type1 {
270*4882a593Smuzhiyun 	/* @DW0 and DW1 */
271*4882a593Smuzhiyun 	u8 page_num;
272*4882a593Smuzhiyun 	u8 pwdb[4];
273*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
274*4882a593Smuzhiyun 	u8 l_rxsc : 4;
275*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
276*4882a593Smuzhiyun #else
277*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
278*4882a593Smuzhiyun 	u8 l_rxsc : 4;
279*4882a593Smuzhiyun #endif
280*4882a593Smuzhiyun 	u8 channel;
281*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
282*4882a593Smuzhiyun 	u8 band : 2;
283*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
284*4882a593Smuzhiyun 	u8 hw_antsw_occu : 1;
285*4882a593Smuzhiyun 	u8 gnt_bt : 1;
286*4882a593Smuzhiyun 	u8 ldpc : 1;
287*4882a593Smuzhiyun 	u8 stbc : 1;
288*4882a593Smuzhiyun 	u8 beamformed : 1;
289*4882a593Smuzhiyun #else
290*4882a593Smuzhiyun 	u8 beamformed : 1;
291*4882a593Smuzhiyun 	u8 stbc : 1;
292*4882a593Smuzhiyun 	u8 ldpc : 1;
293*4882a593Smuzhiyun 	u8 gnt_bt : 1;
294*4882a593Smuzhiyun 	u8 hw_antsw_occu : 1;
295*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
296*4882a593Smuzhiyun 	u8 band : 2;
297*4882a593Smuzhiyun #endif
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun 	/* @DW2 */
300*4882a593Smuzhiyun 	u16 lsig_length;
301*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
302*4882a593Smuzhiyun 	u8 antidx_a : 3;
303*4882a593Smuzhiyun 	u8 antidx_b : 3;
304*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
305*4882a593Smuzhiyun 	u8 antidx_c : 3;
306*4882a593Smuzhiyun 	u8 antidx_d : 3;
307*4882a593Smuzhiyun 	u8 rsvd_2 : 2;
308*4882a593Smuzhiyun #else
309*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
310*4882a593Smuzhiyun 	u8 antidx_b : 3;
311*4882a593Smuzhiyun 	u8 antidx_a : 3;
312*4882a593Smuzhiyun 	u8 rsvd_2 : 2;
313*4882a593Smuzhiyun 	u8 antidx_d : 3;
314*4882a593Smuzhiyun 	u8 antidx_c : 3;
315*4882a593Smuzhiyun #endif
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun 	/* @DW3 */
318*4882a593Smuzhiyun 	u8 paid;
319*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
320*4882a593Smuzhiyun 	u8 paid_msb : 1;
321*4882a593Smuzhiyun 	u8 gid : 6;
322*4882a593Smuzhiyun 	u8 rsvd_3 : 1;
323*4882a593Smuzhiyun #else
324*4882a593Smuzhiyun 	u8 rsvd_3 : 1;
325*4882a593Smuzhiyun 	u8 gid : 6;
326*4882a593Smuzhiyun 	u8 paid_msb : 1;
327*4882a593Smuzhiyun #endif
328*4882a593Smuzhiyun 	u8 intf_pos;
329*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
330*4882a593Smuzhiyun 	u8 intf_pos_msb : 1;
331*4882a593Smuzhiyun 	u8 rsvd_4 : 2;
332*4882a593Smuzhiyun 	u8 nb_intf_flag : 1;
333*4882a593Smuzhiyun 	u8 rf_mode : 2;
334*4882a593Smuzhiyun 	u8 rsvd_5 : 2;
335*4882a593Smuzhiyun #else
336*4882a593Smuzhiyun 	u8 rsvd_5 : 2;
337*4882a593Smuzhiyun 	u8 rf_mode : 2;
338*4882a593Smuzhiyun 	u8 nb_intf_flag : 1;
339*4882a593Smuzhiyun 	u8 rsvd_4 : 2;
340*4882a593Smuzhiyun 	u8 intf_pos_msb : 1;
341*4882a593Smuzhiyun #endif
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun 	/* @DW4 */
344*4882a593Smuzhiyun 	s8 rxevm[4]; /* s(8,1) */
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun 	/* @DW5 */
347*4882a593Smuzhiyun 	s8 cfo_tail[4]; /* s(8,7) */
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun 	/* @DW6 */
350*4882a593Smuzhiyun 	s8 rxsnr[4]; /* s(8,1) */
351*4882a593Smuzhiyun };
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr2_type2 {
354*4882a593Smuzhiyun 	/* @DW0 ane DW1 */
355*4882a593Smuzhiyun 	u8 page_num;
356*4882a593Smuzhiyun 	u8 pwdb[4];
357*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
358*4882a593Smuzhiyun 	u8 l_rxsc : 4;
359*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
360*4882a593Smuzhiyun #else
361*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
362*4882a593Smuzhiyun 	u8 l_rxsc : 4;
363*4882a593Smuzhiyun #endif
364*4882a593Smuzhiyun 	u8 channel;
365*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
366*4882a593Smuzhiyun 	u8 band : 2;
367*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
368*4882a593Smuzhiyun 	u8 hw_antsw_occu : 1;
369*4882a593Smuzhiyun 	u8 gnt_bt : 1;
370*4882a593Smuzhiyun 	u8 ldpc : 1;
371*4882a593Smuzhiyun 	u8 stbc : 1;
372*4882a593Smuzhiyun 	u8 beamformed : 1;
373*4882a593Smuzhiyun #else
374*4882a593Smuzhiyun 	u8 beamformed : 1;
375*4882a593Smuzhiyun 	u8 stbc : 1;
376*4882a593Smuzhiyun 	u8 ldpc : 1;
377*4882a593Smuzhiyun 	u8 gnt_bt : 1;
378*4882a593Smuzhiyun 	u8 hw_antsw_occu : 1;
379*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
380*4882a593Smuzhiyun 	u8 band : 2;
381*4882a593Smuzhiyun #endif
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun /* @DW2 */
384*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
385*4882a593Smuzhiyun 	u8 shift_l_map : 6;
386*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
387*4882a593Smuzhiyun #else
388*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
389*4882a593Smuzhiyun 	u8 shift_l_map : 6;
390*4882a593Smuzhiyun #endif
391*4882a593Smuzhiyun 	u8 cnt_pw2cca;
392*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
393*4882a593Smuzhiyun 	u8 agc_table_a : 4;
394*4882a593Smuzhiyun 	u8 agc_table_b : 4;
395*4882a593Smuzhiyun 	u8 agc_table_c : 4;
396*4882a593Smuzhiyun 	u8 agc_table_d : 4;
397*4882a593Smuzhiyun #else
398*4882a593Smuzhiyun 	u8 agc_table_b : 4;
399*4882a593Smuzhiyun 	u8 agc_table_a : 4;
400*4882a593Smuzhiyun 	u8 agc_table_d : 4;
401*4882a593Smuzhiyun 	u8 agc_table_c : 4;
402*4882a593Smuzhiyun #endif
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun 	/* @DW3 ~ DW6*/
405*4882a593Smuzhiyun 	u8 cnt_cca2agc_rdy;
406*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
407*4882a593Smuzhiyun 	u8 gain_a : 6;
408*4882a593Smuzhiyun 	u8 rsvd_2 : 1;
409*4882a593Smuzhiyun 	u8 trsw_a : 1;
410*4882a593Smuzhiyun 	u8 gain_b : 6;
411*4882a593Smuzhiyun 	u8 rsvd_3 : 1;
412*4882a593Smuzhiyun 	u8 trsw_b : 1;
413*4882a593Smuzhiyun 	u8 gain_c : 6;
414*4882a593Smuzhiyun 	u8 rsvd_4 : 1;
415*4882a593Smuzhiyun 	u8 trsw_c : 1;
416*4882a593Smuzhiyun 	u8 gain_d : 6;
417*4882a593Smuzhiyun 	u8 rsvd_5 : 1;
418*4882a593Smuzhiyun 	u8 trsw_d : 1;
419*4882a593Smuzhiyun 	u8 aagc_step_a : 2;
420*4882a593Smuzhiyun 	u8 aagc_step_b : 2;
421*4882a593Smuzhiyun 	u8 aagc_step_c : 2;
422*4882a593Smuzhiyun 	u8 aagc_step_d : 2;
423*4882a593Smuzhiyun #else
424*4882a593Smuzhiyun 	u8 trsw_a : 1;
425*4882a593Smuzhiyun 	u8 rsvd_2 : 1;
426*4882a593Smuzhiyun 	u8 gain_a : 6;
427*4882a593Smuzhiyun 	u8 trsw_b : 1;
428*4882a593Smuzhiyun 	u8 rsvd_3 : 1;
429*4882a593Smuzhiyun 	u8 gain_b : 6;
430*4882a593Smuzhiyun 	u8 trsw_c : 1;
431*4882a593Smuzhiyun 	u8 rsvd_4 : 1;
432*4882a593Smuzhiyun 	u8 gain_c : 6;
433*4882a593Smuzhiyun 	u8 trsw_d : 1;
434*4882a593Smuzhiyun 	u8 rsvd_5 : 1;
435*4882a593Smuzhiyun 	u8 gain_d : 6;
436*4882a593Smuzhiyun 	u8 aagc_step_d : 2;
437*4882a593Smuzhiyun 	u8 aagc_step_c : 2;
438*4882a593Smuzhiyun 	u8 aagc_step_b : 2;
439*4882a593Smuzhiyun 	u8 aagc_step_a : 2;
440*4882a593Smuzhiyun #endif
441*4882a593Smuzhiyun 	u8 ht_aagc_gain[4];
442*4882a593Smuzhiyun 	u8 dagc_gain[4];
443*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
444*4882a593Smuzhiyun 	u8 counter : 6;
445*4882a593Smuzhiyun 	u8 rsvd_6 : 2;
446*4882a593Smuzhiyun 	u8 syn_count : 5;
447*4882a593Smuzhiyun 	u8 rsvd_7 : 3;
448*4882a593Smuzhiyun #else
449*4882a593Smuzhiyun 	u8 rsvd_6 : 2;
450*4882a593Smuzhiyun 	u8 counter : 6;
451*4882a593Smuzhiyun 	u8 rsvd_7 : 3;
452*4882a593Smuzhiyun 	u8 syn_count : 5;
453*4882a593Smuzhiyun #endif
454*4882a593Smuzhiyun };
455*4882a593Smuzhiyun #endif
456*4882a593Smuzhiyun 
457*4882a593Smuzhiyun /*@==============================================*/
458*4882a593Smuzhiyun #ifdef PHYSTS_3RD_TYPE_SUPPORT
459*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_type0 {
460*4882a593Smuzhiyun /* @DW0 : Offset 0 */
461*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
462*4882a593Smuzhiyun 	u8 page_num : 4;
463*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
464*4882a593Smuzhiyun 	u8 channel_msb : 2;
465*4882a593Smuzhiyun #else
466*4882a593Smuzhiyun 	u8 channel_msb : 2;
467*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
468*4882a593Smuzhiyun 	u8 page_num : 4;
469*4882a593Smuzhiyun #endif
470*4882a593Smuzhiyun 	u8 pwdb_a;
471*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
472*4882a593Smuzhiyun 	u8 gain_a : 6;
473*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
474*4882a593Smuzhiyun 	u8 trsw : 1;
475*4882a593Smuzhiyun #else
476*4882a593Smuzhiyun 	u8 trsw : 1;
477*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
478*4882a593Smuzhiyun 	u8 gain_a : 6;
479*4882a593Smuzhiyun #endif
480*4882a593Smuzhiyun 
481*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
482*4882a593Smuzhiyun 	u8 agc_table_b : 4;
483*4882a593Smuzhiyun 	u8 agc_table_c : 4;
484*4882a593Smuzhiyun #else
485*4882a593Smuzhiyun 	u8 agc_table_c : 4;
486*4882a593Smuzhiyun 	u8 agc_table_b : 4;
487*4882a593Smuzhiyun #endif
488*4882a593Smuzhiyun 
489*4882a593Smuzhiyun /* @DW1 : Offset 4 */
490*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
491*4882a593Smuzhiyun 	u8 rsvd_1 : 4;
492*4882a593Smuzhiyun 	u8 agc_table_d : 4;
493*4882a593Smuzhiyun #else
494*4882a593Smuzhiyun 	u8 agc_table_d : 4;
495*4882a593Smuzhiyun 	u8 rsvd_1 : 4;
496*4882a593Smuzhiyun #endif
497*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
498*4882a593Smuzhiyun 	u8 l_rxsc : 4;
499*4882a593Smuzhiyun 	u8 agc_table_a : 4;
500*4882a593Smuzhiyun #else
501*4882a593Smuzhiyun 	u8 agc_table_a : 4;
502*4882a593Smuzhiyun 	u8 l_rxsc : 4;
503*4882a593Smuzhiyun #endif
504*4882a593Smuzhiyun 	u8 channel;
505*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
506*4882a593Smuzhiyun 	u8 band : 2;
507*4882a593Smuzhiyun 	u8 rsvd_2_1 : 1;
508*4882a593Smuzhiyun 	u8 hw_antsw_occur_keep_cck : 1;
509*4882a593Smuzhiyun 	u8 gnt_bt_keep_cck : 1;
510*4882a593Smuzhiyun 	u8 rsvd_2_2 : 1;
511*4882a593Smuzhiyun 	u8 path_sel_o : 2;
512*4882a593Smuzhiyun #else
513*4882a593Smuzhiyun 	u8 path_sel_o : 2;
514*4882a593Smuzhiyun 	u8 rsvd_2_2 : 1;
515*4882a593Smuzhiyun 	u8 gnt_bt_keep_cck : 1;
516*4882a593Smuzhiyun 	u8 hw_antsw_occur_keep_cck : 1;
517*4882a593Smuzhiyun 	u8 rsvd_2_1 : 1;
518*4882a593Smuzhiyun 	u8 band : 2;
519*4882a593Smuzhiyun #endif
520*4882a593Smuzhiyun 
521*4882a593Smuzhiyun 	/* @DW2 : Offset 8 */
522*4882a593Smuzhiyun 	u16 length;
523*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
524*4882a593Smuzhiyun 	u8 antidx_a : 4;
525*4882a593Smuzhiyun 	u8 antidx_b : 4;
526*4882a593Smuzhiyun #else
527*4882a593Smuzhiyun 	u8 antidx_b : 4;
528*4882a593Smuzhiyun 	u8 antidx_a : 4;
529*4882a593Smuzhiyun #endif
530*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
531*4882a593Smuzhiyun 	u8 antidx_c : 4;
532*4882a593Smuzhiyun 	u8 antidx_d : 4;
533*4882a593Smuzhiyun #else
534*4882a593Smuzhiyun 	u8 antidx_d : 4;
535*4882a593Smuzhiyun 	u8 antidx_c : 4;
536*4882a593Smuzhiyun #endif
537*4882a593Smuzhiyun 
538*4882a593Smuzhiyun 	/* @DW3 : Offset 12 */
539*4882a593Smuzhiyun 	u8 signal_quality;
540*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
541*4882a593Smuzhiyun 	u8 vga_a : 5;
542*4882a593Smuzhiyun 	u8 lna_l_a : 3;
543*4882a593Smuzhiyun #else
544*4882a593Smuzhiyun 	u8 lna_l_a : 3;
545*4882a593Smuzhiyun 	u8 vga_a : 5;
546*4882a593Smuzhiyun #endif
547*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
548*4882a593Smuzhiyun 	u8 bb_power_a : 6;
549*4882a593Smuzhiyun 	u8 rsvd_3_1 : 1;
550*4882a593Smuzhiyun 	u8 lna_h_a : 1;
551*4882a593Smuzhiyun #else
552*4882a593Smuzhiyun 
553*4882a593Smuzhiyun 	u8 lna_h_a : 1;
554*4882a593Smuzhiyun 	u8 rsvd_3_1 : 1;
555*4882a593Smuzhiyun 	u8 bb_power_a : 6;
556*4882a593Smuzhiyun #endif
557*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
558*4882a593Smuzhiyun 	u8 rxrate : 2;
559*4882a593Smuzhiyun 	u8 raterr : 1;
560*4882a593Smuzhiyun 	u8 lockbit : 1;
561*4882a593Smuzhiyun 	u8 sqloss : 1;
562*4882a593Smuzhiyun 	u8 mf_off : 1;
563*4882a593Smuzhiyun 	u8 rsvd_3_2 : 2;
564*4882a593Smuzhiyun #else
565*4882a593Smuzhiyun 	u8 rsvd_3_2 : 2;
566*4882a593Smuzhiyun 	u8 mf_off : 1;
567*4882a593Smuzhiyun 	u8 sqloss : 1;
568*4882a593Smuzhiyun 	u8 lockbit : 1;
569*4882a593Smuzhiyun 	u8 raterr : 1;
570*4882a593Smuzhiyun 	u8 rxrate : 2;
571*4882a593Smuzhiyun #endif
572*4882a593Smuzhiyun 
573*4882a593Smuzhiyun 	/* @DW4 : Offset 16 */
574*4882a593Smuzhiyun 	u8 pwdb_b;
575*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
576*4882a593Smuzhiyun 	u8 vga_b : 5;
577*4882a593Smuzhiyun 	u8 lna_l_b : 3;
578*4882a593Smuzhiyun #else
579*4882a593Smuzhiyun 	u8 lna_l_b : 3;
580*4882a593Smuzhiyun 	u8 vga_b : 5;
581*4882a593Smuzhiyun #endif
582*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
583*4882a593Smuzhiyun 	u8 bb_power_b : 6;
584*4882a593Smuzhiyun 	u8 rsvd_4_1 : 1;
585*4882a593Smuzhiyun 	u8 lna_h_b : 1;
586*4882a593Smuzhiyun #else
587*4882a593Smuzhiyun 	u8 lna_h_b : 1;
588*4882a593Smuzhiyun 	u8 rsvd_4_1 : 1;
589*4882a593Smuzhiyun 	u8 bb_power_b : 6;
590*4882a593Smuzhiyun #endif
591*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
592*4882a593Smuzhiyun 	u8 gain_b : 6;
593*4882a593Smuzhiyun 	u8 rsvd_4_2 : 2;
594*4882a593Smuzhiyun #else
595*4882a593Smuzhiyun 	u8 rsvd_4_2 : 2;
596*4882a593Smuzhiyun 	u8 gain_b : 6;
597*4882a593Smuzhiyun #endif
598*4882a593Smuzhiyun 
599*4882a593Smuzhiyun 	/* @DW5 : Offset 20 */
600*4882a593Smuzhiyun 	u8 pwdb_c;
601*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
602*4882a593Smuzhiyun 	u8 vga_c : 5;
603*4882a593Smuzhiyun 	u8 lna_l_c : 3;
604*4882a593Smuzhiyun #else
605*4882a593Smuzhiyun 	u8 lna_l_c : 3;
606*4882a593Smuzhiyun 	u8 vga_c : 5;
607*4882a593Smuzhiyun #endif
608*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
609*4882a593Smuzhiyun 	u8 bb_power_c : 6;
610*4882a593Smuzhiyun 	u8 rsvd_5_1 : 1;
611*4882a593Smuzhiyun 	u8 lna_h_c : 1;
612*4882a593Smuzhiyun #else
613*4882a593Smuzhiyun 	u8 lna_h_c : 1;
614*4882a593Smuzhiyun 	u8 rsvd_5_1 : 1;
615*4882a593Smuzhiyun 	u8 bb_power_c : 6;
616*4882a593Smuzhiyun #endif
617*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
618*4882a593Smuzhiyun 	u8 gain_c : 6;
619*4882a593Smuzhiyun 	u8 rsvd_5_2 : 2;
620*4882a593Smuzhiyun #else
621*4882a593Smuzhiyun 	u8 rsvd_5_2 : 2;
622*4882a593Smuzhiyun 	u8 gain_c : 6;
623*4882a593Smuzhiyun #endif
624*4882a593Smuzhiyun 
625*4882a593Smuzhiyun 	/* @DW6 : Offset 24 */
626*4882a593Smuzhiyun 	u8 pwdb_d;
627*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
628*4882a593Smuzhiyun 	u8 vga_d : 5;
629*4882a593Smuzhiyun 	u8 lna_l_d : 3;
630*4882a593Smuzhiyun #else
631*4882a593Smuzhiyun 	u8 lna_l_d : 3;
632*4882a593Smuzhiyun 	u8 vga_d : 5;
633*4882a593Smuzhiyun #endif
634*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
635*4882a593Smuzhiyun 	u8 bb_power_d : 6;
636*4882a593Smuzhiyun 	u8 rsvd_6_1 : 1;
637*4882a593Smuzhiyun 	u8 lna_h_d : 1;
638*4882a593Smuzhiyun #else
639*4882a593Smuzhiyun 	u8 lna_h_d : 1;
640*4882a593Smuzhiyun 	u8 rsvd_6_1 : 1;
641*4882a593Smuzhiyun 	u8 bb_power_d : 6;
642*4882a593Smuzhiyun #endif
643*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
644*4882a593Smuzhiyun 	u8 gain_d : 6;
645*4882a593Smuzhiyun 	u8 rsvd_6_2 : 2;
646*4882a593Smuzhiyun #else
647*4882a593Smuzhiyun 	u8 rsvd_6_2 : 2;
648*4882a593Smuzhiyun 	u8 gain_d : 6;
649*4882a593Smuzhiyun #endif
650*4882a593Smuzhiyun };
651*4882a593Smuzhiyun #if(RTL8723F_SUPPORT)
652*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_type6 {
653*4882a593Smuzhiyun 	/* judy_add_8723F_0512 */
654*4882a593Smuzhiyun /* @DW0 : Offset 0 */
655*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
656*4882a593Smuzhiyun 	u8 pop_idx : 4;
657*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
658*4882a593Smuzhiyun 	u8 channel_msb : 2;
659*4882a593Smuzhiyun #else
660*4882a593Smuzhiyun 	u8 channel_msb : 2;
661*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
662*4882a593Smuzhiyun 	u8 pop_idx : 4;
663*4882a593Smuzhiyun #endif
664*4882a593Smuzhiyun 
665*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
666*4882a593Smuzhiyun 	u8 agc_table_a : 4;
667*4882a593Smuzhiyun 	u8 rsvd_0 : 4;
668*4882a593Smuzhiyun #else
669*4882a593Smuzhiyun 	u8 rsvd_0 : 4;
670*4882a593Smuzhiyun 	u8 agc_table_a : 4;
671*4882a593Smuzhiyun #endif
672*4882a593Smuzhiyun 	u8 rsvd_1 : 8;
673*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
674*4882a593Smuzhiyun 	u8 trsw : 1;
675*4882a593Smuzhiyun 	u8 hw_antsw_occur_keep_cck : 1;
676*4882a593Smuzhiyun 	u8 gnt_bt_keep_cck : 1;
677*4882a593Smuzhiyun 	u8 rssi_msb : 3;
678*4882a593Smuzhiyun 	u8 rsvd_2 : 2;
679*4882a593Smuzhiyun #else
680*4882a593Smuzhiyun 	u8 rsvd_2 : 2;
681*4882a593Smuzhiyun 	u8 rssi_msb : 3;
682*4882a593Smuzhiyun 	u8 gnt_bt_keep_cck : 1;
683*4882a593Smuzhiyun 	u8 hw_antsw_occur_keep_cck : 1;
684*4882a593Smuzhiyun 	u8 trsw : 1;
685*4882a593Smuzhiyun #endif
686*4882a593Smuzhiyun 
687*4882a593Smuzhiyun /* @DW1 : Offset 4 */
688*4882a593Smuzhiyun 	u8 channel;
689*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
690*4882a593Smuzhiyun 	u8 antidx_a : 4;
691*4882a593Smuzhiyun 	u8 rsvd_2_1 : 4;
692*4882a593Smuzhiyun #else
693*4882a593Smuzhiyun 	u8 rsvd_2_1 : 4;
694*4882a593Smuzhiyun 	u8 antidx_a : 4;
695*4882a593Smuzhiyun #endif
696*4882a593Smuzhiyun 	u8 rsvd_2_2;
697*4882a593Smuzhiyun 	u8 mp_gain_idx_a;
698*4882a593Smuzhiyun 
699*4882a593Smuzhiyun /* @DW2 : Offset 8 */
700*4882a593Smuzhiyun 	u16 rsvd_3_1;
701*4882a593Smuzhiyun 	u8 rsvd_4_1;
702*4882a593Smuzhiyun 	u8 rssi;
703*4882a593Smuzhiyun 
704*4882a593Smuzhiyun /* @DW3 : Offset 12 */
705*4882a593Smuzhiyun 	u16 rsvd_4_2;
706*4882a593Smuzhiyun 	u8 rsvd_5_1;
707*4882a593Smuzhiyun 	u8 avg_cfo;
708*4882a593Smuzhiyun /* @DW4 : Offset 16 */
709*4882a593Smuzhiyun 	u8 coarse_cfo;
710*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
711*4882a593Smuzhiyun 	u8 coarse_cfo_msb : 4;
712*4882a593Smuzhiyun 	u8 avg_cfo_msb : 4;
713*4882a593Smuzhiyun #else
714*4882a593Smuzhiyun 	u8 avg_cfo_msb : 4;
715*4882a593Smuzhiyun 	u8 coarse_cfo_msb : 4;
716*4882a593Smuzhiyun #endif
717*4882a593Smuzhiyun 	u8 evm_hdr;
718*4882a593Smuzhiyun 	u8 evm_pld;
719*4882a593Smuzhiyun /* @DW5 : Offset 20 */
720*4882a593Smuzhiyun 	u32 rsvd_6_1;
721*4882a593Smuzhiyun 	u32 rsvd_7_1;
722*4882a593Smuzhiyun };
723*4882a593Smuzhiyun #endif
724*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_type1 {
725*4882a593Smuzhiyun /* @DW0 : Offset 0 */
726*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
727*4882a593Smuzhiyun 	u8 page_num : 4;
728*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
729*4882a593Smuzhiyun 	u8 channel_pri_msb : 2;
730*4882a593Smuzhiyun #else
731*4882a593Smuzhiyun 	u8 channel_pri_msb : 2;
732*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
733*4882a593Smuzhiyun 	u8 page_num : 4;
734*4882a593Smuzhiyun #endif
735*4882a593Smuzhiyun 	u8 pwdb_a;
736*4882a593Smuzhiyun 	u8 pwdb_b;
737*4882a593Smuzhiyun 	u8 pwdb_c;
738*4882a593Smuzhiyun 
739*4882a593Smuzhiyun 	/* @DW1 : Offset 4 */
740*4882a593Smuzhiyun 	u8 pwdb_d;
741*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
742*4882a593Smuzhiyun 	u8 l_rxsc : 4;
743*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
744*4882a593Smuzhiyun #else
745*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
746*4882a593Smuzhiyun 	u8 l_rxsc : 4;
747*4882a593Smuzhiyun #endif
748*4882a593Smuzhiyun 	u8 channel_pri_lsb;
749*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
750*4882a593Smuzhiyun 	u8 band : 2;
751*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
752*4882a593Smuzhiyun 	u8 gnt_bt : 1;
753*4882a593Smuzhiyun 	u8 ldpc : 1;
754*4882a593Smuzhiyun 	u8 stbc : 1;
755*4882a593Smuzhiyun 	u8 beamformed : 1;
756*4882a593Smuzhiyun #else
757*4882a593Smuzhiyun 	u8 beamformed : 1;
758*4882a593Smuzhiyun 	u8 stbc : 1;
759*4882a593Smuzhiyun 	u8 ldpc : 1;
760*4882a593Smuzhiyun 	u8 gnt_bt : 1;
761*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
762*4882a593Smuzhiyun 	u8 band : 2;
763*4882a593Smuzhiyun #endif
764*4882a593Smuzhiyun 
765*4882a593Smuzhiyun 	/* @DW2 : Offset 8 */
766*4882a593Smuzhiyun 	u8 channel_sec_lsb;
767*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
768*4882a593Smuzhiyun 	u8 channel_sec_msb : 2;
769*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
770*4882a593Smuzhiyun 	u8 hw_antsw_occur_a : 1;
771*4882a593Smuzhiyun 	u8 hw_antsw_occur_b : 1;
772*4882a593Smuzhiyun 	u8 hw_antsw_occur_c : 1;
773*4882a593Smuzhiyun 	u8 hw_antsw_occur_d : 1;
774*4882a593Smuzhiyun #else
775*4882a593Smuzhiyun 	u8 hw_antsw_occur_d : 1;
776*4882a593Smuzhiyun 	u8 hw_antsw_occur_c : 1;
777*4882a593Smuzhiyun 	u8 hw_antsw_occur_b : 1;
778*4882a593Smuzhiyun 	u8 hw_antsw_occur_a : 1;
779*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
780*4882a593Smuzhiyun 	u8 channel_sec_msb : 2;
781*4882a593Smuzhiyun 
782*4882a593Smuzhiyun #endif
783*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
784*4882a593Smuzhiyun 	u8 antidx_a : 4;
785*4882a593Smuzhiyun 	u8 antidx_b : 4;
786*4882a593Smuzhiyun #else
787*4882a593Smuzhiyun 	u8 antidx_b : 4;
788*4882a593Smuzhiyun 	u8 antidx_a : 4;
789*4882a593Smuzhiyun #endif
790*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
791*4882a593Smuzhiyun 	u8 antidx_c : 4;
792*4882a593Smuzhiyun 	u8 antidx_d : 4;
793*4882a593Smuzhiyun #else
794*4882a593Smuzhiyun 	u8 antidx_d : 4;
795*4882a593Smuzhiyun 	u8 antidx_c : 4;
796*4882a593Smuzhiyun #endif
797*4882a593Smuzhiyun 
798*4882a593Smuzhiyun 	/* @DW3 : Offset 12 */
799*4882a593Smuzhiyun 	u8 paid;
800*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
801*4882a593Smuzhiyun 	u8 paid_msb : 1;
802*4882a593Smuzhiyun 	u8 gid : 6;
803*4882a593Smuzhiyun 	u8 rsvd_3 : 1;
804*4882a593Smuzhiyun #else
805*4882a593Smuzhiyun 	u8 rsvd_3 : 1;
806*4882a593Smuzhiyun 	u8 gid : 6;
807*4882a593Smuzhiyun 	u8 paid_msb : 1;
808*4882a593Smuzhiyun #endif
809*4882a593Smuzhiyun 	u16 rsvd_4;
810*4882a593Smuzhiyun #if 0
811*4882a593Smuzhiyun 	/*@
812*4882a593Smuzhiyun 	u8		rsvd_4;
813*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
814*4882a593Smuzhiyun 	u8		rsvd_5: 6;
815*4882a593Smuzhiyun 	u8		rf_mode: 2;
816*4882a593Smuzhiyun #else
817*4882a593Smuzhiyun 	u8		rf_mode: 2;
818*4882a593Smuzhiyun 	u8		rsvd_5: 6;
819*4882a593Smuzhiyun #endif
820*4882a593Smuzhiyun */
821*4882a593Smuzhiyun #endif
822*4882a593Smuzhiyun 	/* @DW4 : Offset 16 */
823*4882a593Smuzhiyun 	s8 rxevm[4]; /* s(8,1) */
824*4882a593Smuzhiyun 
825*4882a593Smuzhiyun 	/* @DW5 : Offset 20 */
826*4882a593Smuzhiyun 	s8 cfo_tail[4]; /* s(8,7) */
827*4882a593Smuzhiyun 
828*4882a593Smuzhiyun 	/* @DW6 : Offset 24 */
829*4882a593Smuzhiyun 	s8 rxsnr[4]; /* s(8,1) */
830*4882a593Smuzhiyun };
831*4882a593Smuzhiyun 
832*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_type2_3 {
833*4882a593Smuzhiyun /* Type2 is primary channel & type3 is secondary channel */
834*4882a593Smuzhiyun /* @DW0 and DW1: Offest 0 and Offset 4 */
835*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
836*4882a593Smuzhiyun 	u8 page_num : 4;
837*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
838*4882a593Smuzhiyun 	u8 channel_msb : 2;
839*4882a593Smuzhiyun #else
840*4882a593Smuzhiyun 	u8 channel_msb : 2;
841*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
842*4882a593Smuzhiyun 	u8 page_num : 4;
843*4882a593Smuzhiyun #endif
844*4882a593Smuzhiyun 	u8 pwdb[4];
845*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
846*4882a593Smuzhiyun 	u8 l_rxsc : 4;
847*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
848*4882a593Smuzhiyun #else
849*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
850*4882a593Smuzhiyun 	u8 l_rxsc : 4;
851*4882a593Smuzhiyun #endif
852*4882a593Smuzhiyun 	u8 channel_lsb;
853*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
854*4882a593Smuzhiyun 	u8 band : 2;
855*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
856*4882a593Smuzhiyun 	u8 gnt_bt : 1;
857*4882a593Smuzhiyun 	u8 ldpc : 1;
858*4882a593Smuzhiyun 	u8 stbc : 1;
859*4882a593Smuzhiyun 	u8 beamformed : 1;
860*4882a593Smuzhiyun #else
861*4882a593Smuzhiyun 	u8 beamformed : 1;
862*4882a593Smuzhiyun 	u8 stbc : 1;
863*4882a593Smuzhiyun 	u8 ldpc : 1;
864*4882a593Smuzhiyun 	u8 gnt_bt : 1;
865*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
866*4882a593Smuzhiyun 	u8 band : 2;
867*4882a593Smuzhiyun #endif
868*4882a593Smuzhiyun 
869*4882a593Smuzhiyun /* @DW2 : Offset 8 */
870*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
871*4882a593Smuzhiyun 	u8 shift_l_map : 6;
872*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
873*4882a593Smuzhiyun #else
874*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
875*4882a593Smuzhiyun 	u8 shift_l_map : 6;
876*4882a593Smuzhiyun #endif
877*4882a593Smuzhiyun 	s8 pwed_th; /* @dynamic energy threshold S(8,2) */
878*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
879*4882a593Smuzhiyun 	u8 agc_table_a : 4;
880*4882a593Smuzhiyun 	u8 agc_table_b : 4;
881*4882a593Smuzhiyun #else
882*4882a593Smuzhiyun 	u8 agc_table_b : 4;
883*4882a593Smuzhiyun 	u8 agc_table_a : 4;
884*4882a593Smuzhiyun #endif
885*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
886*4882a593Smuzhiyun 	u8 agc_table_c : 4;
887*4882a593Smuzhiyun 	u8 agc_table_d : 4;
888*4882a593Smuzhiyun #else
889*4882a593Smuzhiyun 	u8 agc_table_d : 4;
890*4882a593Smuzhiyun 	u8 agc_table_c : 4;
891*4882a593Smuzhiyun #endif
892*4882a593Smuzhiyun 
893*4882a593Smuzhiyun 	/* @DW3 : Offset 12 */
894*4882a593Smuzhiyun 	u8 cnt_cca2agc_rdy; /* Time(ns) = cnt_cca2agc_ready*25 */
895*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
896*4882a593Smuzhiyun 	u8 mp_gain_a : 6;
897*4882a593Smuzhiyun 	u8 mp_gain_b_lsb : 2;
898*4882a593Smuzhiyun #else
899*4882a593Smuzhiyun 	u8 mp_gain_b_lsb : 2;
900*4882a593Smuzhiyun 	u8 mp_gain_a : 6;
901*4882a593Smuzhiyun #endif
902*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
903*4882a593Smuzhiyun 	u8 mp_gain_b_msb : 4;
904*4882a593Smuzhiyun 	u8 mp_gain_c_lsb : 4;
905*4882a593Smuzhiyun #else
906*4882a593Smuzhiyun 	u8 mp_gain_c_lsb : 4;
907*4882a593Smuzhiyun 	u8 mp_gain_b_msb : 4;
908*4882a593Smuzhiyun #endif
909*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
910*4882a593Smuzhiyun 	u8 mp_gain_c_msb : 2;
911*4882a593Smuzhiyun 	u8 avg_noise_pwr_lsb : 4;
912*4882a593Smuzhiyun 	u8 rsvd_3 : 2;
913*4882a593Smuzhiyun 	/* u8		r_rfmod:2; */
914*4882a593Smuzhiyun #else
915*4882a593Smuzhiyun 	/* u8		r_rfmod:2; */
916*4882a593Smuzhiyun 	u8 rsvd_3 : 2;
917*4882a593Smuzhiyun 	u8 avg_noise_pwr_lsb : 4;
918*4882a593Smuzhiyun 	u8 mp_gain_c_msb : 2;
919*4882a593Smuzhiyun #endif
920*4882a593Smuzhiyun 	/* @DW4 ~ 5: offset 16 ~20 */
921*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
922*4882a593Smuzhiyun 	u8 mp_gain_d : 6;
923*4882a593Smuzhiyun 	u8 is_freq_select_fading : 1;
924*4882a593Smuzhiyun 	u8 rsvd_2 : 1;
925*4882a593Smuzhiyun #else
926*4882a593Smuzhiyun 	u8 rsvd_2 : 1;
927*4882a593Smuzhiyun 	u8 is_freq_select_fading : 1;
928*4882a593Smuzhiyun 	u8 mp_gain_d : 6;
929*4882a593Smuzhiyun #endif
930*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
931*4882a593Smuzhiyun 	u8 aagc_step_a : 2;
932*4882a593Smuzhiyun 	u8 aagc_step_b : 2;
933*4882a593Smuzhiyun 	u8 aagc_step_c : 2;
934*4882a593Smuzhiyun 	u8 aagc_step_d : 2;
935*4882a593Smuzhiyun #else
936*4882a593Smuzhiyun 	u8 aagc_step_d : 2;
937*4882a593Smuzhiyun 	u8 aagc_step_c : 2;
938*4882a593Smuzhiyun 	u8 aagc_step_b : 2;
939*4882a593Smuzhiyun 	u8 aagc_step_a : 2;
940*4882a593Smuzhiyun #endif
941*4882a593Smuzhiyun 	u8 ht_aagc_gain[4];
942*4882a593Smuzhiyun 	u8 dagc_gain[4];
943*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
944*4882a593Smuzhiyun 	u8 counter : 6;
945*4882a593Smuzhiyun 	u8 syn_count_lsb : 2;
946*4882a593Smuzhiyun #else
947*4882a593Smuzhiyun 	u8 syn_count_lsb : 2;
948*4882a593Smuzhiyun 	u8 counter : 6;
949*4882a593Smuzhiyun #endif
950*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
951*4882a593Smuzhiyun 	u8 syn_count_msb : 3;
952*4882a593Smuzhiyun 	u8 avg_noise_pwr_msb : 5;
953*4882a593Smuzhiyun #else
954*4882a593Smuzhiyun 	u8 avg_noise_pwr_msb : 5;
955*4882a593Smuzhiyun 	u8 syn_count_msb : 3;
956*4882a593Smuzhiyun #endif
957*4882a593Smuzhiyun };
958*4882a593Smuzhiyun 
959*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_type4 {
960*4882a593Smuzhiyun /* smart antenna */
961*4882a593Smuzhiyun /* @DW0 and DW1 : offset 0 and 4  */
962*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
963*4882a593Smuzhiyun 	u8 page_num : 4;
964*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
965*4882a593Smuzhiyun 	u8 channel_msb : 2;
966*4882a593Smuzhiyun #else
967*4882a593Smuzhiyun 	u8 channel_msb : 2;
968*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
969*4882a593Smuzhiyun 	u8 page_num : 4;
970*4882a593Smuzhiyun #endif
971*4882a593Smuzhiyun 	u8 pwdb[4];
972*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
973*4882a593Smuzhiyun 	u8 l_rxsc : 4;
974*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
975*4882a593Smuzhiyun #else
976*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
977*4882a593Smuzhiyun 	u8 l_rxsc : 4;
978*4882a593Smuzhiyun #endif
979*4882a593Smuzhiyun 	u8 channel_lsb;
980*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
981*4882a593Smuzhiyun 	u8 band : 2;
982*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
983*4882a593Smuzhiyun 	u8 gnt_bt : 1;
984*4882a593Smuzhiyun 	u8 ldpc : 1;
985*4882a593Smuzhiyun 	u8 stbc : 1;
986*4882a593Smuzhiyun 	u8 beamformed : 1;
987*4882a593Smuzhiyun #else
988*4882a593Smuzhiyun 	u8 beamformed : 1;
989*4882a593Smuzhiyun 	u8 stbc : 1;
990*4882a593Smuzhiyun 	u8 ldpc : 1;
991*4882a593Smuzhiyun 	u8 gnt_bt : 1;
992*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
993*4882a593Smuzhiyun 	u8 band : 2;
994*4882a593Smuzhiyun #endif
995*4882a593Smuzhiyun 
996*4882a593Smuzhiyun /* @DW2 : offset 8 */
997*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
998*4882a593Smuzhiyun 	u8 bad_tone_cnt_min_eign_0 : 4;
999*4882a593Smuzhiyun 	u8 bad_tone_cnt_cn_excess_0 : 4;
1000*4882a593Smuzhiyun #else
1001*4882a593Smuzhiyun 	u8 bad_tone_cnt_cn_excess_0 : 4;
1002*4882a593Smuzhiyun 	u8 bad_tone_cnt_min_eign_0 : 4;
1003*4882a593Smuzhiyun #endif
1004*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1005*4882a593Smuzhiyun 	u8 training_done_a : 1;
1006*4882a593Smuzhiyun 	u8 training_done_b : 1;
1007*4882a593Smuzhiyun 	u8 training_done_c : 1;
1008*4882a593Smuzhiyun 	u8 training_done_d : 1;
1009*4882a593Smuzhiyun 	u8 hw_antsw_occur_a : 1;
1010*4882a593Smuzhiyun 	u8 hw_antsw_occur_b : 1;
1011*4882a593Smuzhiyun 	u8 hw_antsw_occur_c : 1;
1012*4882a593Smuzhiyun 	u8 hw_antsw_occur_d : 1;
1013*4882a593Smuzhiyun #else
1014*4882a593Smuzhiyun 	u8 hw_antsw_occur_d : 1;
1015*4882a593Smuzhiyun 	u8 hw_antsw_occur_c : 1;
1016*4882a593Smuzhiyun 	u8 hw_antsw_occur_b : 1;
1017*4882a593Smuzhiyun 	u8 hw_antsw_occur_a : 1;
1018*4882a593Smuzhiyun 	u8 training_done_d : 1;
1019*4882a593Smuzhiyun 	u8 training_done_c : 1;
1020*4882a593Smuzhiyun 	u8 training_done_b : 1;
1021*4882a593Smuzhiyun 	u8 training_done_a : 1;
1022*4882a593Smuzhiyun #endif
1023*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1024*4882a593Smuzhiyun 	u8 antidx_a : 4;
1025*4882a593Smuzhiyun 	u8 antidx_b : 4;
1026*4882a593Smuzhiyun #else
1027*4882a593Smuzhiyun 	u8 antidx_b : 4;
1028*4882a593Smuzhiyun 	u8 antidx_a : 4;
1029*4882a593Smuzhiyun #endif
1030*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1031*4882a593Smuzhiyun 	u8 antidx_c : 4;
1032*4882a593Smuzhiyun 	u8 antidx_d : 4;
1033*4882a593Smuzhiyun #else
1034*4882a593Smuzhiyun 	u8 antidx_d : 4;
1035*4882a593Smuzhiyun 	u8 antidx_c : 4;
1036*4882a593Smuzhiyun #endif
1037*4882a593Smuzhiyun /* @DW3 : offset 12 */
1038*4882a593Smuzhiyun 	u8 tx_pkt_cnt;
1039*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1040*4882a593Smuzhiyun 	u8 bad_tone_cnt_min_eign_1 : 4;
1041*4882a593Smuzhiyun 	u8 bad_tone_cnt_cn_excess_1 : 4;
1042*4882a593Smuzhiyun #else
1043*4882a593Smuzhiyun 	u8 bad_tone_cnt_cn_excess_1 : 4;
1044*4882a593Smuzhiyun 	u8 bad_tone_cnt_min_eign_1 : 4;
1045*4882a593Smuzhiyun #endif
1046*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1047*4882a593Smuzhiyun 	u8 avg_cond_num_0 : 7;
1048*4882a593Smuzhiyun 	u8 avg_cond_num_1_lsb : 1;
1049*4882a593Smuzhiyun #else
1050*4882a593Smuzhiyun 	u8 avg_cond_num_1_lsb : 1;
1051*4882a593Smuzhiyun 	u8 avg_cond_num_0 : 7;
1052*4882a593Smuzhiyun #endif
1053*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1054*4882a593Smuzhiyun 	u8 avg_cond_num_1_msb : 6;
1055*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
1056*4882a593Smuzhiyun #else
1057*4882a593Smuzhiyun 	u8 rsvd_1 : 2;
1058*4882a593Smuzhiyun 	u8 avg_cond_num_1_msb : 6;
1059*4882a593Smuzhiyun #endif
1060*4882a593Smuzhiyun 
1061*4882a593Smuzhiyun 	/* @DW4 : offset 16 */
1062*4882a593Smuzhiyun 	s8 rxevm[4]; /* s(8,1) */
1063*4882a593Smuzhiyun 
1064*4882a593Smuzhiyun 	/* @DW5 : offset 20 */
1065*4882a593Smuzhiyun 	u8 eigenvalue[4]; /* @eigenvalue or eigenvalue of seg0 (in dB) */
1066*4882a593Smuzhiyun 
1067*4882a593Smuzhiyun 	/* @DW6 : ofset 24 */
1068*4882a593Smuzhiyun 	s8 rxsnr[4]; /* s(8,1) */
1069*4882a593Smuzhiyun };
1070*4882a593Smuzhiyun 
1071*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_type5 {
1072*4882a593Smuzhiyun /* @Debug */
1073*4882a593Smuzhiyun /* @DW0 ane DW1 : offset 0 and 4 */
1074*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1075*4882a593Smuzhiyun 	u8 page_num : 4;
1076*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
1077*4882a593Smuzhiyun 	u8 channel_msb : 2;
1078*4882a593Smuzhiyun #else
1079*4882a593Smuzhiyun 	u8 channel_msb : 2;
1080*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
1081*4882a593Smuzhiyun 	u8 page_num : 4;
1082*4882a593Smuzhiyun #endif
1083*4882a593Smuzhiyun 	u8 pwdb[4];
1084*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1085*4882a593Smuzhiyun 	u8 l_rxsc : 4;
1086*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
1087*4882a593Smuzhiyun #else
1088*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
1089*4882a593Smuzhiyun 	u8 l_rxsc : 4;
1090*4882a593Smuzhiyun #endif
1091*4882a593Smuzhiyun 	u8 channel_lsb;
1092*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1093*4882a593Smuzhiyun 	u8 band : 2;
1094*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
1095*4882a593Smuzhiyun 	u8 gnt_bt : 1;
1096*4882a593Smuzhiyun 	u8 ldpc : 1;
1097*4882a593Smuzhiyun 	u8 stbc : 1;
1098*4882a593Smuzhiyun 	u8 beamformed : 1;
1099*4882a593Smuzhiyun #else
1100*4882a593Smuzhiyun 	u8 beamformed : 1;
1101*4882a593Smuzhiyun 	u8 stbc : 1;
1102*4882a593Smuzhiyun 	u8 ldpc : 1;
1103*4882a593Smuzhiyun 	u8 gnt_bt : 1;
1104*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
1105*4882a593Smuzhiyun 	u8 band : 2;
1106*4882a593Smuzhiyun #endif
1107*4882a593Smuzhiyun 	/* @DW2 : offset 8 */
1108*4882a593Smuzhiyun 	u8 rsvd_1;
1109*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1110*4882a593Smuzhiyun 	u8 rsvd_2 : 4;
1111*4882a593Smuzhiyun 	u8 hw_antsw_occur_a : 1;
1112*4882a593Smuzhiyun 	u8 hw_antsw_occur_b : 1;
1113*4882a593Smuzhiyun 	u8 hw_antsw_occur_c : 1;
1114*4882a593Smuzhiyun 	u8 hw_antsw_occur_d : 1;
1115*4882a593Smuzhiyun #else
1116*4882a593Smuzhiyun 	u8 hw_antsw_occur_d : 1;
1117*4882a593Smuzhiyun 	u8 hw_antsw_occur_c : 1;
1118*4882a593Smuzhiyun 	u8 hw_antsw_occur_b : 1;
1119*4882a593Smuzhiyun 	u8 hw_antsw_occur_a : 1;
1120*4882a593Smuzhiyun 	u8 rsvd_2 : 4;
1121*4882a593Smuzhiyun #endif
1122*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1123*4882a593Smuzhiyun 	u8 antidx_a : 4;
1124*4882a593Smuzhiyun 	u8 antidx_b : 4;
1125*4882a593Smuzhiyun #else
1126*4882a593Smuzhiyun 	u8 antidx_b : 4;
1127*4882a593Smuzhiyun 	u8 antidx_a : 4;
1128*4882a593Smuzhiyun #endif
1129*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1130*4882a593Smuzhiyun 	u8 antidx_c : 4;
1131*4882a593Smuzhiyun 	u8 antidx_d : 4;
1132*4882a593Smuzhiyun #else
1133*4882a593Smuzhiyun 	u8 antidx_d : 4;
1134*4882a593Smuzhiyun 	u8 antidx_c : 4;
1135*4882a593Smuzhiyun #endif
1136*4882a593Smuzhiyun 	/* @DW3 : offset 12 */
1137*4882a593Smuzhiyun 	u8 tx_pkt_cnt;
1138*4882a593Smuzhiyun #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1139*4882a593Smuzhiyun 	u8 inf_pos_0_A_flg : 1;
1140*4882a593Smuzhiyun 	u8 inf_pos_1_A_flg : 1;
1141*4882a593Smuzhiyun 	u8 inf_pos_0_B_flg : 1;
1142*4882a593Smuzhiyun 	u8 inf_pos_1_B_flg : 1;
1143*4882a593Smuzhiyun 	u8 inf_pos_0_C_flg : 1;
1144*4882a593Smuzhiyun 	u8 inf_pos_1_C_flg : 1;
1145*4882a593Smuzhiyun 	u8 inf_pos_0_D_flg : 1;
1146*4882a593Smuzhiyun 	u8 inf_pos_1_D_flg : 1;
1147*4882a593Smuzhiyun #else
1148*4882a593Smuzhiyun 	u8 inf_pos_1_D_flg : 1;
1149*4882a593Smuzhiyun 	u8 inf_pos_0_D_flg : 1;
1150*4882a593Smuzhiyun 	u8 inf_pos_1_C_flg : 1;
1151*4882a593Smuzhiyun 	u8 inf_pos_0_C_flg : 1;
1152*4882a593Smuzhiyun 	u8 inf_pos_1_B_flg : 1;
1153*4882a593Smuzhiyun 	u8 inf_pos_0_B_flg : 1;
1154*4882a593Smuzhiyun 	u8 inf_pos_1_A_flg : 1;
1155*4882a593Smuzhiyun 	u8 inf_pos_0_A_flg : 1;
1156*4882a593Smuzhiyun #endif
1157*4882a593Smuzhiyun 	u8 rsvd_3;
1158*4882a593Smuzhiyun 	u8 rsvd_4;
1159*4882a593Smuzhiyun 	/* @DW4 : offset 16 */
1160*4882a593Smuzhiyun 	u8 inf_pos_0_a;
1161*4882a593Smuzhiyun 	u8 inf_pos_1_a;
1162*4882a593Smuzhiyun 	u8 inf_pos_0_b;
1163*4882a593Smuzhiyun 	u8 inf_pos_1_b;
1164*4882a593Smuzhiyun 	/* @DW5 : offset 20 */
1165*4882a593Smuzhiyun 	u8 inf_pos_0_c;
1166*4882a593Smuzhiyun 	u8 inf_pos_1_c;
1167*4882a593Smuzhiyun 	u8 inf_pos_0_d;
1168*4882a593Smuzhiyun 	u8 inf_pos_1_d;
1169*4882a593Smuzhiyun };
1170*4882a593Smuzhiyun 
1171*4882a593Smuzhiyun __PACK struct phy_sts_rpt_jgr3_ofdm_cmn {
1172*4882a593Smuzhiyun 	#if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1173*4882a593Smuzhiyun 	u8 page_num : 4;
1174*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
1175*4882a593Smuzhiyun 	u8 channel_msb : 2;
1176*4882a593Smuzhiyun 	#else
1177*4882a593Smuzhiyun 	u8 channel_msb : 2;
1178*4882a593Smuzhiyun 	u8 pkt_cnt : 2;
1179*4882a593Smuzhiyun 	u8 page_num : 4;
1180*4882a593Smuzhiyun 	#endif
1181*4882a593Smuzhiyun 	u8 pwdb[4];
1182*4882a593Smuzhiyun 	#if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1183*4882a593Smuzhiyun 	u8 l_rxsc : 4;
1184*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
1185*4882a593Smuzhiyun 	#else
1186*4882a593Smuzhiyun 	u8 ht_rxsc : 4;
1187*4882a593Smuzhiyun 	u8 l_rxsc : 4;
1188*4882a593Smuzhiyun 	#endif
1189*4882a593Smuzhiyun 	u8 channel_lsb;
1190*4882a593Smuzhiyun 	#if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
1191*4882a593Smuzhiyun 	u8 band : 2;
1192*4882a593Smuzhiyun 	u8 rsvd_0 : 2;
1193*4882a593Smuzhiyun 	u8 gnt_bt : 1;
1194*4882a593Smuzhiyun 	u8 ldpc : 1;
1195*4882a593Smuzhiyun 	u8 stbc : 1;
1196*4882a593Smuzhiyun 	u8 beamformed : 1;
1197*4882a593Smuzhiyun 	#else
1198*4882a593Smuzhiyun 	u8 beamformed : 1;
1199*4882a593Smuzhiyun 	u8 stbc : 1;
1200*4882a593Smuzhiyun 	u8 ldpc : 1;
1201*4882a593Smuzhiyun 	u8 gnt_bt : 1;
1202*4882a593Smuzhiyun 	u8 rsvd_0 : 1;
1203*4882a593Smuzhiyun 	u8 band : 2;
1204*4882a593Smuzhiyun 	#endif
1205*4882a593Smuzhiyun };
1206*4882a593Smuzhiyun #endif /*@#ifdef PHYSTS_3RD_TYPE_SUPPORT*/
1207*4882a593Smuzhiyun 
1208*4882a593Smuzhiyun #ifdef PHYDM_PHYSTAUS_AUTO_SWITCH
1209*4882a593Smuzhiyun void phydm_physts_auto_switch_jgr3_set(void *dm_void, boolean enable,
1210*4882a593Smuzhiyun 				       u8 bitmap_en);
1211*4882a593Smuzhiyun #endif
1212*4882a593Smuzhiyun 
1213*4882a593Smuzhiyun #if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)
1214*4882a593Smuzhiyun boolean
1215*4882a593Smuzhiyun phydm_query_is_mu_api(struct dm_struct *phydm, u8 ppdu_idx, u8 *p_data_rate,
1216*4882a593Smuzhiyun 		      u8 *p_gid);
1217*4882a593Smuzhiyun #endif
1218*4882a593Smuzhiyun 
1219*4882a593Smuzhiyun void phydm_reset_phystatus_avg(struct dm_struct *dm);
1220*4882a593Smuzhiyun 
1221*4882a593Smuzhiyun void phydm_reset_phystatus_statistic(struct dm_struct *dm);
1222*4882a593Smuzhiyun 
1223*4882a593Smuzhiyun void phydm_reset_rssi_for_dm(struct dm_struct *dm, u8 station_id);
1224*4882a593Smuzhiyun 
1225*4882a593Smuzhiyun void phydm_get_cck_rssi_table_from_reg(struct dm_struct *dm);
1226*4882a593Smuzhiyun 
1227*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1228*4882a593Smuzhiyun void phydm_normal_driver_rx_sniffer(
1229*4882a593Smuzhiyun 	struct dm_struct *dm,
1230*4882a593Smuzhiyun 	u8 *desc,
1231*4882a593Smuzhiyun 	PRT_RFD_STATUS rt_rfd_status,
1232*4882a593Smuzhiyun 	u8 *drv_info,
1233*4882a593Smuzhiyun 	u8 phy_status);
1234*4882a593Smuzhiyun #endif
1235*4882a593Smuzhiyun 
1236*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
1237*4882a593Smuzhiyun s32 phydm_signal_scale_mapping(struct dm_struct *dm, s32 curr_sig);
1238*4882a593Smuzhiyun #endif
1239*4882a593Smuzhiyun 
1240*4882a593Smuzhiyun boolean odm_phy_status_query(struct dm_struct *dm,
1241*4882a593Smuzhiyun 			     struct phydm_phyinfo_struct *phy_info,
1242*4882a593Smuzhiyun 			     u8 *phy_sts,
1243*4882a593Smuzhiyun 			     struct phydm_perpkt_info_struct *pktinfo);
1244*4882a593Smuzhiyun 
1245*4882a593Smuzhiyun void phydm_rx_phy_status_init(void *dm_void);
1246*4882a593Smuzhiyun 
1247*4882a593Smuzhiyun void phydm_physts_dbg(void *dm_void, char input[][16], u32 *_used,
1248*4882a593Smuzhiyun 		      char *output, u32 *_out_len);
1249*4882a593Smuzhiyun 
1250*4882a593Smuzhiyun #endif /*@#ifndef	__HALHWOUTSRC_H__*/
1251