xref: /wlan-driver/qca-wifi-host-cmn/target_if/spectral/target_if_spectral_sim_int.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2015,2017-2020 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #ifndef _SPECTRAL_SIM_INTERNAL_H_
21*5113495bSYour Name #define _SPECTRAL_SIM_INTERNAL_H_
22*5113495bSYour Name 
23*5113495bSYour Name #ifdef QCA_SUPPORT_SPECTRAL_SIMULATION
24*5113495bSYour Name #include "target_if_spectral.h"
25*5113495bSYour Name 
26*5113495bSYour Name /* #define SPECTRAL_SIM_DUMP_PARAM_DATA 1 */
27*5113495bSYour Name /**
28*5113495bSYour Name  * struct spectralsim_report - Linked list node of spectal simulation report
29*5113495bSYour Name  * Spectral report data instance. Usable in a linked list.
30*5113495bSYour Name  * In the case of Direct Attach chipsets, one instance should correspond to
31*5113495bSYour Name  * one PHY Data Error frame received from the HW.
32*5113495bSYour Name  * XXX Direct Attach support to be implemented if needed. Any modifications
33*5113495bSYour Name  * required here can be made at the time of implementation.
34*5113495bSYour Name  * In the case of 802.11ac offload chipsets, one instance should correspond to
35*5113495bSYour Name  * one report received from HW, inclusive of all TLVs.
36*5113495bSYour Name  *
37*5113495bSYour Name  * @rfqual_info: RF measurement information
38*5113495bSYour Name  * @chan_info: Channel information
39*5113495bSYour Name  * @datasize: Length of report data
40*5113495bSYour Name  * @data: Pointer to report data
41*5113495bSYour Name  * @next: Pointer to next node in the struct spectralsim_report
42*5113495bSYour Name  */
43*5113495bSYour Name struct spectralsim_report {
44*5113495bSYour Name 	/* 11ac onwards only */
45*5113495bSYour Name 	struct target_if_spectral_rfqual_info rfqual_info;
46*5113495bSYour Name 	/* 11ac onwards only */
47*5113495bSYour Name 	struct target_if_spectral_chan_info chan_info;
48*5113495bSYour Name 	uint32_t datasize;
49*5113495bSYour Name 	uint8_t *data;
50*5113495bSYour Name 	struct spectralsim_report *next;
51*5113495bSYour Name };
52*5113495bSYour Name 
53*5113495bSYour Name /**
54*5113495bSYour Name  * struct spectralsim_reportset - Set of Spectral report data instances
55*5113495bSYour Name  * corresponding to one particular configuration. Usable in a linked list.
56*5113495bSYour Name  * @config: Spectral config parameters
57*5113495bSYour Name  * @headreport: Pointer to the linked list of struct spectralsim_report
58*5113495bSYour Name  * @curr_report: Pointer to current node in the linked list of
59*5113495bSYour Name  * struct spectralsim_report
60*5113495bSYour Name  * @next: Pointer to next node in the struct spectralsim_reportset
61*5113495bSYour Name  */
62*5113495bSYour Name struct spectralsim_reportset {
63*5113495bSYour Name 	struct spectral_config config;
64*5113495bSYour Name 	struct spectralsim_report *headreport;
65*5113495bSYour Name 	struct spectralsim_report *curr_report;
66*5113495bSYour Name 	struct spectralsim_reportset *next;
67*5113495bSYour Name };
68*5113495bSYour Name 
69*5113495bSYour Name /*
70*5113495bSYour Name  * struct spectralsim_context - Main structure for Spectral simulation.
71*5113495bSYour Name  * All data and controls get linked here.
72*5113495bSYour Name  *
73*5113495bSYour Name  * For each width (20/40/80/160/80+80), we will have a linked list of
74*5113495bSYour Name  * spectralsim_reportset nodes. Each struct spectralsim_reportset will have a
75*5113495bSYour Name  * linked list of struct spectralsim_report nodes. When the user requests for a
76*5113495bSYour Name  * given PHY mode and Spectral configuration, we find the appropriate
77*5113495bSYour Name  * spectralsim_reportset, and then serve struct spectralsim_report instances
78*5113495bSYour Name  * from the linked list. If required report count is higher than size of linked
79*5113495bSYour Name  * list (or infinite), we repeatedly cycle through the linked list.  There can
80*5113495bSYour Name  * be more elaborate data structures devised taking care of a large number of
81*5113495bSYour Name  * possibilities, but we stick to a simple scheme given limited simulation
82*5113495bSYour Name  * needs.
83*5113495bSYour Name  *
84*5113495bSYour Name  * @bw20_headreportset : Linked list of spectralsim_reportset for 20MHz width
85*5113495bSYour Name  * @bw20_headreportset : Linked list of spectralsim_reportset for 40MHz width
86*5113495bSYour Name  * @bw20_headreportset : Linked list of spectralsim_reportset for 80MHz width
87*5113495bSYour Name  * @bw20_headreportset : Linked list of spectralsim_reportset for 160MHz width
88*5113495bSYour Name  * @bw20_headreportset : Linked list of spectralsim_reportset for 80_80MHz width
89*5113495bSYour Name  * @curr_reportset : Pointer to current node in the linked list of
90*5113495bSYour Name  * struct spectralsim_reportset
91*5113495bSYour Name  * @is_enabled : Whether the simulated spectral scan is set as enabled
92*5113495bSYour Name  * @is_active : Whether the simulated spectral scan is set as active
93*5113495bSYour Name  * @ssim_pherrdelivery_timer : Simulated Phyerr delivery timer
94*5113495bSYour Name  * @ssim_starting_tsf64 : Starting 64-bit TSF value for spectral simulation
95*5113495bSYour Name  * @ssim_period_ms : Simulated Phyerr delivery period in ms
96*5113495bSYour Name  * @ssim_count : Number of simulated spectral samples to deliver
97*5113495bSYour Name  * @populate_report_static : Pointer to function to populate static spectral
98*5113495bSYour Name  * report data
99*5113495bSYour Name  */
100*5113495bSYour Name struct spectralsim_context {
101*5113495bSYour Name 	struct spectralsim_reportset *bw20_headreportset;
102*5113495bSYour Name 	struct spectralsim_reportset *bw40_headreportset;
103*5113495bSYour Name 	struct spectralsim_reportset *bw80_headreportset;
104*5113495bSYour Name 	struct spectralsim_reportset *bw160_headreportset;
105*5113495bSYour Name 	struct spectralsim_reportset *bw80_80_headreportset;
106*5113495bSYour Name 
107*5113495bSYour Name 	struct spectralsim_reportset *curr_reportset;
108*5113495bSYour Name 	bool is_enabled;
109*5113495bSYour Name 	bool is_active;
110*5113495bSYour Name 
111*5113495bSYour Name 	qdf_timer_t ssim_pherrdelivery_timer;
112*5113495bSYour Name 	uint64_t ssim_starting_tsf64;
113*5113495bSYour Name 	uint32_t ssim_period_ms;	/* TODO: Support in microseconds */
114*5113495bSYour Name 	uint32_t ssim_count;
115*5113495bSYour Name 	int (*populate_report_static)(struct spectralsim_report *report,
116*5113495bSYour Name 				      enum phy_ch_width width, bool is_80_80);
117*5113495bSYour Name };
118*5113495bSYour Name 
119*5113495bSYour Name /* Helper Macros */
120*5113495bSYour Name 
121*5113495bSYour Name /* Allocate and populate reportset for a single configuration */
122*5113495bSYour Name #define SPECTRAL_SIM_REPORTSET_ALLOCPOPL_SINGLE(simctx, reportset, width) \
123*5113495bSYour Name 	do {                                                                 \
124*5113495bSYour Name 	(reportset) = (struct spectralsim_reportset *)                       \
125*5113495bSYour Name 		qdf_mem_malloc(sizeof(struct spectralsim_reportset));        \
126*5113495bSYour Name 									  \
127*5113495bSYour Name 	if ((reportset) == NULL) {                                        \
128*5113495bSYour Name 		target_if_depopulate_simdata((simctx));                     \
129*5113495bSYour Name 		return -EPERM;                                              \
130*5113495bSYour Name 	}                                                                 \
131*5113495bSYour Name 									  \
132*5113495bSYour Name 	qdf_mem_zero((reportset), sizeof(struct spectralsim_reportset));     \
133*5113495bSYour Name 									  \
134*5113495bSYour Name 	if (target_if_populate_reportset_static( \
135*5113495bSYour Name 		(simctx), (reportset), (width)) != 0) { \
136*5113495bSYour Name 		target_if_depopulate_simdata((simctx));        \
137*5113495bSYour Name 		return -EPERM;                                 \
138*5113495bSYour Name 	}                                                                 \
139*5113495bSYour Name 									  \
140*5113495bSYour Name 	(reportset)->next = NULL;                                         \
141*5113495bSYour Name 	} while (0)
142*5113495bSYour Name 
143*5113495bSYour Name /* Depopulate and free list of report sets */
144*5113495bSYour Name #define SPECTRAL_SIM_REPORTSET_DEPOPLFREE_LIST(reportset)                 \
145*5113495bSYour Name 	{                                                                 \
146*5113495bSYour Name 	struct spectralsim_reportset *curr_reportset = NULL;                 \
147*5113495bSYour Name 	struct spectralsim_reportset *next_reportset = NULL;                 \
148*5113495bSYour Name 									\
149*5113495bSYour Name 	curr_reportset = (reportset);                                   \
150*5113495bSYour Name 									\
151*5113495bSYour Name 	while (curr_reportset) {                                        \
152*5113495bSYour Name 		next_reportset = curr_reportset->next;                  \
153*5113495bSYour Name 		target_if_depopulate_reportset(curr_reportset);         \
154*5113495bSYour Name 		qdf_mem_free(curr_reportset);                           \
155*5113495bSYour Name 		curr_reportset = next_reportset;                        \
156*5113495bSYour Name 	}                                                               \
157*5113495bSYour Name 									\
158*5113495bSYour Name 	(reportset) = NULL;                                             \
159*5113495bSYour Name 	}
160*5113495bSYour Name 
161*5113495bSYour Name /* Values for static population */
162*5113495bSYour Name 
163*5113495bSYour Name /* 20 MHz */
164*5113495bSYour Name 
165*5113495bSYour Name /* Report data for 20MHz bandwidth for generation 2 chipsets */
166*5113495bSYour Name static uint8_t reportdata_20_gen2[] = {
167*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
168*5113495bSYour Name 	0xbb,			/* Signature */
169*5113495bSYour Name 	0xfb,			/* Tag */
170*5113495bSYour Name 	0x00,			/* Size */
171*5113495bSYour Name 	0x54,
172*5113495bSYour Name 	0x2e, 0x60, 0x0f, 0xe8,	/* FFT Summary A */
173*5113495bSYour Name 	0x00, 0x00, 0x04, 0x00,	/* FFT Summary B */
174*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
175*5113495bSYour Name #else
176*5113495bSYour Name 	0x54,			/* Length */
177*5113495bSYour Name 	0x00,
178*5113495bSYour Name 	0xfb,			/* Tag */
179*5113495bSYour Name 	0xbb,			/* Signature */
180*5113495bSYour Name 	0xe8, 0x0f, 0x60, 0x2e,	/* FFT Summary A */
181*5113495bSYour Name 	0x00, 0x04, 0x00, 0x00,	/* FFT Summary B */
182*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
183*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
184*5113495bSYour Name 	/* FFT Data */
185*5113495bSYour Name 	1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 2, 0, 1, 1, 1, 0,
186*5113495bSYour Name 	0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1,
187*5113495bSYour Name 	1, 1, 0, 2, 1, 2, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0,
188*5113495bSYour Name };
189*5113495bSYour Name 
190*5113495bSYour Name /* Report data for 20MHz bandwidth for generation 3 chipsets */
191*5113495bSYour Name static uint8_t reportdata_20_gen3[] = {
192*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
193*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
194*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
195*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
196*5113495bSYour Name 	0x00,			/* fft_hdr_length */
197*5113495bSYour Name 	0x14,
198*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe0,
199*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
200*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
201*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
202*5113495bSYour Name #else
203*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
204*5113495bSYour Name 	0x14,			/* fft_hdr_length */
205*5113495bSYour Name 	0x00,
206*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
207*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
208*5113495bSYour Name 	0xe0, 0x00, 0xf6, 0x0f,
209*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
210*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
211*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
212*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
213*5113495bSYour Name 	/* FFT Data */
214*5113495bSYour Name 	1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 2, 0, 1, 1, 1, 0,
215*5113495bSYour Name 	0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1,
216*5113495bSYour Name 	1, 1, 0, 2, 1, 2, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0,
217*5113495bSYour Name };
218*5113495bSYour Name 
219*5113495bSYour Name /* RF measurement information for 20 MHz bandwidth */
220*5113495bSYour Name static struct target_if_spectral_rfqual_info rfqual_info_20 = {
221*5113495bSYour Name 	.rssi_comb = 1,
222*5113495bSYour Name 
223*5113495bSYour Name 	.pc_rssi_info[0].rssi_pri20 = 1,
224*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec20 = 128,
225*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec40 = 128,
226*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec80 = 128,
227*5113495bSYour Name 
228*5113495bSYour Name 	.pc_rssi_info[1].rssi_pri20 = 128,
229*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec20 = 128,
230*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec40 = 128,
231*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec80 = 128,
232*5113495bSYour Name 
233*5113495bSYour Name 	.pc_rssi_info[2].rssi_pri20 = 128,
234*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec20 = 128,
235*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec40 = 128,
236*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec80 = 128,
237*5113495bSYour Name 
238*5113495bSYour Name 	.pc_rssi_info[3].rssi_pri20 = 128,
239*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec20 = 128,
240*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec40 = 128,
241*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec80 = 128,
242*5113495bSYour Name 
243*5113495bSYour Name 	.noise_floor[0] = -90,
244*5113495bSYour Name 	.noise_floor[1] = -90,
245*5113495bSYour Name 	.noise_floor[2] = -90,
246*5113495bSYour Name 	.noise_floor[3] = -90,
247*5113495bSYour Name };
248*5113495bSYour Name 
249*5113495bSYour Name /* Channel information for 20 MHz bandwidth */
250*5113495bSYour Name static struct target_if_spectral_chan_info chan_info_20 = {
251*5113495bSYour Name 	.center_freq1 = 5180,
252*5113495bSYour Name 	.center_freq2 = 0,
253*5113495bSYour Name 	.chan_width = 20,
254*5113495bSYour Name };
255*5113495bSYour Name 
256*5113495bSYour Name /* Spectral config parameters for 20 MHz bandwidth */
257*5113495bSYour Name static struct spectral_config config_20_1 = {
258*5113495bSYour Name 	.ss_fft_period = 1,
259*5113495bSYour Name 	.ss_period = 35,
260*5113495bSYour Name 	.ss_count = 0,
261*5113495bSYour Name 	.ss_short_report = 1,
262*5113495bSYour Name 	.radar_bin_thresh_sel = 0,
263*5113495bSYour Name 	.ss_spectral_pri = 1,
264*5113495bSYour Name 	.ss_fft_size = 7,
265*5113495bSYour Name 	.ss_gc_ena = 1,
266*5113495bSYour Name 	.ss_restart_ena = 0,
267*5113495bSYour Name 	.ss_noise_floor_ref = 65440,
268*5113495bSYour Name 	.ss_init_delay = 80,
269*5113495bSYour Name 	.ss_nb_tone_thr = 12,
270*5113495bSYour Name 	.ss_str_bin_thr = 8,
271*5113495bSYour Name 	.ss_wb_rpt_mode = 0,
272*5113495bSYour Name 	.ss_rssi_rpt_mode = 0,
273*5113495bSYour Name 	.ss_rssi_thr = 240,
274*5113495bSYour Name 	.ss_pwr_format = 0,
275*5113495bSYour Name 	.ss_rpt_mode = 2,
276*5113495bSYour Name 	.ss_bin_scale = 1,
277*5113495bSYour Name 	.ss_dbm_adj = 1,
278*5113495bSYour Name 	.ss_chn_mask = 1,
279*5113495bSYour Name 	.ss_nf_cal[0] = 0,
280*5113495bSYour Name 	.ss_nf_cal[1] = 0,
281*5113495bSYour Name 	.ss_nf_cal[2] = 0,
282*5113495bSYour Name 	.ss_nf_cal[3] = 0,
283*5113495bSYour Name 	.ss_nf_cal[4] = 0,
284*5113495bSYour Name 	.ss_nf_cal[5] = 0,
285*5113495bSYour Name 	.ss_nf_pwr[0] = 0,
286*5113495bSYour Name 	.ss_nf_pwr[1] = 0,
287*5113495bSYour Name 	.ss_nf_pwr[2] = 0,
288*5113495bSYour Name 	.ss_nf_pwr[3] = 0,
289*5113495bSYour Name 	.ss_nf_pwr[4] = 0,
290*5113495bSYour Name 	.ss_nf_pwr[5] = 0,
291*5113495bSYour Name 	.ss_nf_temp_data = 0,
292*5113495bSYour Name };
293*5113495bSYour Name 
294*5113495bSYour Name /* 40 MHz */
295*5113495bSYour Name 
296*5113495bSYour Name /* Report data for 40MHz bandwidth for generation 2 chipsets */
297*5113495bSYour Name static uint8_t reportdata_40_gen2[] = {
298*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
299*5113495bSYour Name 	0xbb,			/* Signature */
300*5113495bSYour Name 	0xfb,			/* Tag */
301*5113495bSYour Name 	0x00,			/* Size */
302*5113495bSYour Name 	0x94,
303*5113495bSYour Name 	0x2e, 0x61, 0x0f, 0x80,	/* FFT Summary A */
304*5113495bSYour Name 	0x00, 0x00, 0x06, 0x00,	/* FFT Summary B */
305*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
306*5113495bSYour Name #else
307*5113495bSYour Name 	0x94,			/* Length */
308*5113495bSYour Name 	0x00,
309*5113495bSYour Name 	0xfb,			/* Tag */
310*5113495bSYour Name 	0xbb,			/* Signature */
311*5113495bSYour Name 	0x80, 0x0f, 0x61, 0x2e,	/* FFT Summary A */
312*5113495bSYour Name 	0x00, 0x06, 0x00, 0x00,	/* FFT Summary B */
313*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
314*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
315*5113495bSYour Name 	/* FFT Data */
316*5113495bSYour Name 	1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
317*5113495bSYour Name 	0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
318*5113495bSYour Name 	0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,
319*5113495bSYour Name 	0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0,
320*5113495bSYour Name 	1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0,
321*5113495bSYour Name 	0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0,
322*5113495bSYour Name };
323*5113495bSYour Name 
324*5113495bSYour Name /* Report data for 40MHz bandwidth for generation 3 chipsets */
325*5113495bSYour Name static uint8_t reportdata_40_gen3[] = {
326*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
327*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
328*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
329*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
330*5113495bSYour Name 	0x00,			/* fft_hdr_length */
331*5113495bSYour Name 	0x24,
332*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe0,
333*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
334*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
335*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
336*5113495bSYour Name #else
337*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
338*5113495bSYour Name 	0x24,			/* fft_hdr_length */
339*5113495bSYour Name 	0x00,
340*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
341*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
342*5113495bSYour Name 	0xe0, 0x00, 0xf6, 0x0f,
343*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
344*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
345*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
346*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
347*5113495bSYour Name 	/* FFT Data */
348*5113495bSYour Name 	1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
349*5113495bSYour Name 	0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
350*5113495bSYour Name 	0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,
351*5113495bSYour Name 	0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0,
352*5113495bSYour Name 	1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0,
353*5113495bSYour Name 	0, 0, 0, 1, 0, 0, 0, 0,
354*5113495bSYour Name };
355*5113495bSYour Name 
356*5113495bSYour Name /* RF measurement information for 40 MHz bandwidth */
357*5113495bSYour Name static struct target_if_spectral_rfqual_info rfqual_info_40 = {
358*5113495bSYour Name 	.rssi_comb = 1,
359*5113495bSYour Name 
360*5113495bSYour Name 	.pc_rssi_info[0].rssi_pri20 = 1,
361*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec20 = 2,
362*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec40 = 128,
363*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec80 = 128,
364*5113495bSYour Name 
365*5113495bSYour Name 	.pc_rssi_info[1].rssi_pri20 = 128,
366*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec20 = 128,
367*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec40 = 128,
368*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec80 = 128,
369*5113495bSYour Name 
370*5113495bSYour Name 	.pc_rssi_info[2].rssi_pri20 = 128,
371*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec20 = 128,
372*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec40 = 128,
373*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec80 = 128,
374*5113495bSYour Name 
375*5113495bSYour Name 	.pc_rssi_info[3].rssi_pri20 = 128,
376*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec20 = 128,
377*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec40 = 128,
378*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec80 = 128,
379*5113495bSYour Name 
380*5113495bSYour Name 	.noise_floor[0] = -90,
381*5113495bSYour Name 	.noise_floor[1] = -90,
382*5113495bSYour Name 	.noise_floor[2] = -90,
383*5113495bSYour Name 	.noise_floor[3] = -90,
384*5113495bSYour Name };
385*5113495bSYour Name 
386*5113495bSYour Name /* Channel information for 40 MHz bandwidth */
387*5113495bSYour Name static struct target_if_spectral_chan_info chan_info_40 = {
388*5113495bSYour Name 	.center_freq1 = 5180,
389*5113495bSYour Name 	.center_freq2 = 0,
390*5113495bSYour Name 	.chan_width = 40,
391*5113495bSYour Name };
392*5113495bSYour Name 
393*5113495bSYour Name /* Spectral config parameters for 40 MHz bandwidth */
394*5113495bSYour Name static struct spectral_config config_40_1 = {
395*5113495bSYour Name 	.ss_fft_period = 1,
396*5113495bSYour Name 	.ss_period = 35,
397*5113495bSYour Name 	.ss_count = 0,
398*5113495bSYour Name 	.ss_short_report = 1,
399*5113495bSYour Name 	.radar_bin_thresh_sel = 0,
400*5113495bSYour Name 	.ss_spectral_pri = 1,
401*5113495bSYour Name 	.ss_fft_size = 8,
402*5113495bSYour Name 	.ss_gc_ena = 1,
403*5113495bSYour Name 	.ss_restart_ena = 0,
404*5113495bSYour Name 	.ss_noise_floor_ref = 65440,
405*5113495bSYour Name 	.ss_init_delay = 80,
406*5113495bSYour Name 	.ss_nb_tone_thr = 12,
407*5113495bSYour Name 	.ss_str_bin_thr = 8,
408*5113495bSYour Name 	.ss_wb_rpt_mode = 0,
409*5113495bSYour Name 	.ss_rssi_rpt_mode = 0,
410*5113495bSYour Name 	.ss_rssi_thr = 240,
411*5113495bSYour Name 	.ss_pwr_format = 0,
412*5113495bSYour Name 	.ss_rpt_mode = 2,
413*5113495bSYour Name 	.ss_bin_scale = 1,
414*5113495bSYour Name 	.ss_dbm_adj = 1,
415*5113495bSYour Name 	.ss_chn_mask = 1,
416*5113495bSYour Name 	.ss_nf_cal[0] = 0,
417*5113495bSYour Name 	.ss_nf_cal[1] = 0,
418*5113495bSYour Name 	.ss_nf_cal[2] = 0,
419*5113495bSYour Name 	.ss_nf_cal[3] = 0,
420*5113495bSYour Name 	.ss_nf_cal[4] = 0,
421*5113495bSYour Name 	.ss_nf_cal[5] = 0,
422*5113495bSYour Name 	.ss_nf_pwr[0] = 0,
423*5113495bSYour Name 	.ss_nf_pwr[1] = 0,
424*5113495bSYour Name 	.ss_nf_pwr[2] = 0,
425*5113495bSYour Name 	.ss_nf_pwr[3] = 0,
426*5113495bSYour Name 	.ss_nf_pwr[4] = 0,
427*5113495bSYour Name 	.ss_nf_pwr[5] = 0,
428*5113495bSYour Name 	.ss_nf_temp_data = 0,
429*5113495bSYour Name };
430*5113495bSYour Name 
431*5113495bSYour Name /* 80 MHz */
432*5113495bSYour Name 
433*5113495bSYour Name /* Report data for 80MHz bandwidth for generation 2 chipsets */
434*5113495bSYour Name static uint8_t reportdata_80_gen2[] = {
435*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
436*5113495bSYour Name 	0xbb,			/* Signature */
437*5113495bSYour Name 	0xfb,			/* Tag */
438*5113495bSYour Name 	0x01,			/* Size */
439*5113495bSYour Name 	0x14,
440*5113495bSYour Name 	0x19, 0xeb, 0x80, 0x40,	/* FFT Summary A */
441*5113495bSYour Name 	0x00, 0x00, 0x10, 0x00,	/* FFT Summary B */
442*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
443*5113495bSYour Name #else
444*5113495bSYour Name 	0x14,			/* Length */
445*5113495bSYour Name 	0x01,
446*5113495bSYour Name 	0xfb,			/* Tag */
447*5113495bSYour Name 	0xbb,			/* Signature */
448*5113495bSYour Name 	0x40, 0x80, 0xeb, 0x19,	/* FFT Summary A */
449*5113495bSYour Name 	0x00, 0x10, 0x00, 0x00,	/* FFT Summary B */
450*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
451*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
452*5113495bSYour Name 	/* FFT Data */
453*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
454*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
455*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
456*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
457*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
458*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
459*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
460*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461*5113495bSYour Name 	0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
464*5113495bSYour Name };
465*5113495bSYour Name 
466*5113495bSYour Name /* Report data for 80MHz bandwidth for generation 3 chipsets */
467*5113495bSYour Name static uint8_t reportdata_80_gen3[] = {
468*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
469*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
470*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
471*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
472*5113495bSYour Name 	0x00,			/* fft_hdr_length */
473*5113495bSYour Name 	0x44,
474*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe0,
475*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
476*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
477*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
478*5113495bSYour Name #else
479*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
480*5113495bSYour Name 	0x44,			/* fft_hdr_length */
481*5113495bSYour Name 	0x00,
482*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
483*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
484*5113495bSYour Name 	0xe0, 0x00, 0xf6, 0x0f,
485*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
486*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
487*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
488*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
489*5113495bSYour Name 	/* FFT Data */
490*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
491*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
492*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
493*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
496*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
497*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498*5113495bSYour Name 	0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
500*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
501*5113495bSYour Name };
502*5113495bSYour Name 
503*5113495bSYour Name /* RF measurement information for 80 MHz bandwidth */
504*5113495bSYour Name static struct target_if_spectral_rfqual_info rfqual_info_80 = {
505*5113495bSYour Name 	.rssi_comb = 16,
506*5113495bSYour Name 
507*5113495bSYour Name 	.pc_rssi_info[0].rssi_pri20 = 16,
508*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec20 = 17,
509*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec40 = 0,
510*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec80 = 128,
511*5113495bSYour Name 
512*5113495bSYour Name 	.pc_rssi_info[1].rssi_pri20 = 128,
513*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec20 = 128,
514*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec40 = 128,
515*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec80 = 128,
516*5113495bSYour Name 
517*5113495bSYour Name 	.pc_rssi_info[2].rssi_pri20 = 128,
518*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec20 = 128,
519*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec40 = 128,
520*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec80 = 128,
521*5113495bSYour Name 
522*5113495bSYour Name 	.pc_rssi_info[3].rssi_pri20 = 128,
523*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec20 = 128,
524*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec40 = 128,
525*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec80 = 128,
526*5113495bSYour Name 
527*5113495bSYour Name 	.noise_floor[0] = -90,
528*5113495bSYour Name 	.noise_floor[1] = -90,
529*5113495bSYour Name 	.noise_floor[2] = -90,
530*5113495bSYour Name 	.noise_floor[3] = -90,
531*5113495bSYour Name };
532*5113495bSYour Name 
533*5113495bSYour Name /* Channel information for 80 MHz bandwidth */
534*5113495bSYour Name static struct target_if_spectral_chan_info chan_info_80 = {
535*5113495bSYour Name 	.center_freq1 = 5210,
536*5113495bSYour Name 	.center_freq2 = 0,
537*5113495bSYour Name 	.chan_width = 80,
538*5113495bSYour Name };
539*5113495bSYour Name 
540*5113495bSYour Name /* Spectral config parameters for 80 MHz bandwidth */
541*5113495bSYour Name static struct spectral_config config_80_1 = {
542*5113495bSYour Name 	.ss_fft_period = 1,
543*5113495bSYour Name 	.ss_period = 35,
544*5113495bSYour Name 	.ss_count = 0,
545*5113495bSYour Name 	.ss_short_report = 1,
546*5113495bSYour Name 	.radar_bin_thresh_sel = 0,
547*5113495bSYour Name 	.ss_spectral_pri = 1,
548*5113495bSYour Name 	.ss_fft_size = 9,
549*5113495bSYour Name 	.ss_gc_ena = 1,
550*5113495bSYour Name 	.ss_restart_ena = 0,
551*5113495bSYour Name 	.ss_noise_floor_ref = 65440,
552*5113495bSYour Name 	.ss_init_delay = 80,
553*5113495bSYour Name 	.ss_nb_tone_thr = 12,
554*5113495bSYour Name 	.ss_str_bin_thr = 8,
555*5113495bSYour Name 	.ss_wb_rpt_mode = 0,
556*5113495bSYour Name 	.ss_rssi_rpt_mode = 0,
557*5113495bSYour Name 	.ss_rssi_thr = 240,
558*5113495bSYour Name 	.ss_pwr_format = 0,
559*5113495bSYour Name 	.ss_rpt_mode = 2,
560*5113495bSYour Name 	.ss_bin_scale = 1,
561*5113495bSYour Name 	.ss_dbm_adj = 1,
562*5113495bSYour Name 	.ss_chn_mask = 1,
563*5113495bSYour Name 	.ss_nf_cal[0] = 0,
564*5113495bSYour Name 	.ss_nf_cal[1] = 0,
565*5113495bSYour Name 	.ss_nf_cal[2] = 0,
566*5113495bSYour Name 	.ss_nf_cal[3] = 0,
567*5113495bSYour Name 	.ss_nf_cal[4] = 0,
568*5113495bSYour Name 	.ss_nf_cal[5] = 0,
569*5113495bSYour Name 	.ss_nf_pwr[0] = 0,
570*5113495bSYour Name 	.ss_nf_pwr[1] = 0,
571*5113495bSYour Name 	.ss_nf_pwr[2] = 0,
572*5113495bSYour Name 	.ss_nf_pwr[3] = 0,
573*5113495bSYour Name 	.ss_nf_pwr[4] = 0,
574*5113495bSYour Name 	.ss_nf_pwr[5] = 0,
575*5113495bSYour Name 	.ss_nf_temp_data = 0,
576*5113495bSYour Name };
577*5113495bSYour Name 
578*5113495bSYour Name /* 160 MHz */
579*5113495bSYour Name 
580*5113495bSYour Name /* Report data for 160MHz bandwidth for generation 2 chipsets */
581*5113495bSYour Name static uint8_t reportdata_160_gen2[] = {
582*5113495bSYour Name 	/* Segment 1 */
583*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
584*5113495bSYour Name 	0xbb,			/* Signature */
585*5113495bSYour Name 	0xfb,			/* Tag */
586*5113495bSYour Name 	0x01,			/* Size */
587*5113495bSYour Name 	0x14,
588*5113495bSYour Name 	0x23, 0x66, 0x00, 0x40,	/* FFT Summary A */
589*5113495bSYour Name 	0x5c, 0x5c, 0x78, 0x00,	/* FFT Summary B */
590*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
591*5113495bSYour Name #else
592*5113495bSYour Name 	0x14,			/* Length */
593*5113495bSYour Name 	0x01,
594*5113495bSYour Name 	0xfb,			/* Tag */
595*5113495bSYour Name 	0xbb,			/* Signature */
596*5113495bSYour Name 	0x40, 0x00, 0x66, 0x23,	/* FFT Summary A */
597*5113495bSYour Name 	0x00, 0x78, 0x5c, 0x5c,	/* FFT Summary B */
598*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
599*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
600*5113495bSYour Name 	/* FFT Data */
601*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
604*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
606*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
607*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
609*5113495bSYour Name 	1, 1, 2, 4, 60, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
610*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
611*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612*5113495bSYour Name 	0,
613*5113495bSYour Name 
614*5113495bSYour Name 	/* Segment 2 */
615*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
616*5113495bSYour Name 	0xbb,			/* Signature */
617*5113495bSYour Name 	0xfb,			/* Tag */
618*5113495bSYour Name 	0x01,			/* Size */
619*5113495bSYour Name 	0x14,
620*5113495bSYour Name 	0x23, 0x66, 0x00, 0x40,	/* FFT Summary A */
621*5113495bSYour Name 	0x5c, 0x5c, 0x78, 0x00,	/* FFT Summary B */
622*5113495bSYour Name 	0x00, 0x00, 0x00, 0x01,	/* Segment ID */
623*5113495bSYour Name #else
624*5113495bSYour Name 	0x14,			/* Length */
625*5113495bSYour Name 	0x01,
626*5113495bSYour Name 	0xfb,			/* Tag */
627*5113495bSYour Name 	0xbb,			/* Signature */
628*5113495bSYour Name 	0x40, 0x00, 0x66, 0x23,	/* FFT Summary A */
629*5113495bSYour Name 	0x00, 0x78, 0x5c, 0x5c,	/* FFT Summary B */
630*5113495bSYour Name 	0x01, 0x00, 0x00, 0x00,	/* Segment ID */
631*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
632*5113495bSYour Name 	/* FFT Data */
633*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
634*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
635*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
636*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
637*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
638*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
639*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
640*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
641*5113495bSYour Name 	1, 1, 2, 4, 60, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
642*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
643*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
644*5113495bSYour Name 	0,
645*5113495bSYour Name };
646*5113495bSYour Name 
647*5113495bSYour Name /* Report data for 160MHz bandwidth for generation 3 chipsets */
648*5113495bSYour Name static uint8_t reportdata_160_gen3[] = {
649*5113495bSYour Name 	/* Segment 1 */
650*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
651*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
652*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
653*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
654*5113495bSYour Name 	0x00,			/* fft_hdr_length */
655*5113495bSYour Name 	0x44,
656*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe0,
657*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
658*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
659*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
660*5113495bSYour Name #else
661*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
662*5113495bSYour Name 	0x44,			/* fft_hdr_length */
663*5113495bSYour Name 	0x00,
664*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
665*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
666*5113495bSYour Name 	0xe0, 0x00, 0xf6, 0x0f,
667*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
668*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
669*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
670*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
671*5113495bSYour Name 	/* FFT Data */
672*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
673*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
674*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
676*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
677*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
680*5113495bSYour Name 	1, 1, 2, 4, 60, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
681*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
682*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
683*5113495bSYour Name 
684*5113495bSYour Name 	/* Segment 2 */
685*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
686*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
687*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
688*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
689*5113495bSYour Name 	0x00,			/* fft_hdr_length */
690*5113495bSYour Name 	0x44,
691*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe1,
692*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
693*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
694*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
695*5113495bSYour Name #else
696*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
697*5113495bSYour Name 	0x44,			/* fft_hdr_length */
698*5113495bSYour Name 	0x00,
699*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
700*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
701*5113495bSYour Name 	0xe1, 0x00, 0xf6, 0x0f,
702*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
703*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
704*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
705*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
706*5113495bSYour Name 	/* FFT Data */
707*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
708*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
713*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715*5113495bSYour Name 	1, 1, 2, 4, 60, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
718*5113495bSYour Name };
719*5113495bSYour Name 
720*5113495bSYour Name /* RF measurement information for 160 MHz bandwidth */
721*5113495bSYour Name static struct target_if_spectral_rfqual_info rfqual_info_160 = {
722*5113495bSYour Name 	.rssi_comb = 3,
723*5113495bSYour Name 
724*5113495bSYour Name 	.pc_rssi_info[0].rssi_pri20 = 3,
725*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec20 = 12,
726*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec40 = 41,
727*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec80 = 128,
728*5113495bSYour Name 
729*5113495bSYour Name 	.pc_rssi_info[1].rssi_pri20 = 128,
730*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec20 = 128,
731*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec40 = 128,
732*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec80 = 128,
733*5113495bSYour Name 
734*5113495bSYour Name 	.pc_rssi_info[2].rssi_pri20 = 128,
735*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec20 = 128,
736*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec40 = 128,
737*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec80 = 128,
738*5113495bSYour Name 
739*5113495bSYour Name 	.pc_rssi_info[3].rssi_pri20 = 128,
740*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec20 = 128,
741*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec40 = 128,
742*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec80 = 128,
743*5113495bSYour Name 
744*5113495bSYour Name 	.noise_floor[0] = -90,
745*5113495bSYour Name 	.noise_floor[1] = -90,
746*5113495bSYour Name 	.noise_floor[2] = -90,
747*5113495bSYour Name 	.noise_floor[3] = -90,
748*5113495bSYour Name };
749*5113495bSYour Name 
750*5113495bSYour Name /* Channel information for 160 MHz bandwidth */
751*5113495bSYour Name static struct target_if_spectral_chan_info chan_info_160 = {
752*5113495bSYour Name 	.center_freq1 = 5250,
753*5113495bSYour Name 	.center_freq2 = 0,
754*5113495bSYour Name 	.chan_width = 160,
755*5113495bSYour Name };
756*5113495bSYour Name 
757*5113495bSYour Name /* Spectral config parameters for 160 MHz bandwidth */
758*5113495bSYour Name static struct spectral_config config_160_1 = {
759*5113495bSYour Name 	.ss_fft_period = 1,
760*5113495bSYour Name 	.ss_period = 35,
761*5113495bSYour Name 	.ss_count = 0,
762*5113495bSYour Name 	.ss_short_report = 1,
763*5113495bSYour Name 	.radar_bin_thresh_sel = 0,
764*5113495bSYour Name 	.ss_spectral_pri = 1,
765*5113495bSYour Name 	.ss_fft_size = 9,
766*5113495bSYour Name 	.ss_gc_ena = 1,
767*5113495bSYour Name 	.ss_restart_ena = 0,
768*5113495bSYour Name 	.ss_noise_floor_ref = 65440,
769*5113495bSYour Name 	.ss_init_delay = 80,
770*5113495bSYour Name 	.ss_nb_tone_thr = 12,
771*5113495bSYour Name 	.ss_str_bin_thr = 8,
772*5113495bSYour Name 	.ss_wb_rpt_mode = 0,
773*5113495bSYour Name 	.ss_rssi_rpt_mode = 0,
774*5113495bSYour Name 	.ss_rssi_thr = 240,
775*5113495bSYour Name 	.ss_pwr_format = 0,
776*5113495bSYour Name 	.ss_rpt_mode = 2,
777*5113495bSYour Name 	.ss_bin_scale = 1,
778*5113495bSYour Name 	.ss_dbm_adj = 1,
779*5113495bSYour Name 	.ss_chn_mask = 1,
780*5113495bSYour Name 	.ss_nf_cal[0] = 0,
781*5113495bSYour Name 	.ss_nf_cal[1] = 0,
782*5113495bSYour Name 	.ss_nf_cal[2] = 0,
783*5113495bSYour Name 	.ss_nf_cal[3] = 0,
784*5113495bSYour Name 	.ss_nf_cal[4] = 0,
785*5113495bSYour Name 	.ss_nf_cal[5] = 0,
786*5113495bSYour Name 	.ss_nf_pwr[0] = 0,
787*5113495bSYour Name 	.ss_nf_pwr[1] = 0,
788*5113495bSYour Name 	.ss_nf_pwr[2] = 0,
789*5113495bSYour Name 	.ss_nf_pwr[3] = 0,
790*5113495bSYour Name 	.ss_nf_pwr[4] = 0,
791*5113495bSYour Name 	.ss_nf_pwr[5] = 0,
792*5113495bSYour Name 	.ss_nf_temp_data = 0,
793*5113495bSYour Name };
794*5113495bSYour Name 
795*5113495bSYour Name /* 80+80 MHz */
796*5113495bSYour Name 
797*5113495bSYour Name /* Report data for 80_80MHz bandwidth for generation 2 chipsets */
798*5113495bSYour Name static uint8_t reportdata_80_80_gen2[] = {
799*5113495bSYour Name 	/* Segment 1 */
800*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
801*5113495bSYour Name 	0xbb,			/* Signature */
802*5113495bSYour Name 	0xfb,			/* Tag */
803*5113495bSYour Name 	0x01,			/* Size */
804*5113495bSYour Name 	0x14,
805*5113495bSYour Name 	0x23, 0x66, 0x00, 0x40,	/* FFT Summary A */
806*5113495bSYour Name 	0x64, 0x64, 0x89, 0x00,	/* FFT Summary B */
807*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
808*5113495bSYour Name #else
809*5113495bSYour Name 	0x14,			/* Length */
810*5113495bSYour Name 	0x01,
811*5113495bSYour Name 	0xfb,			/* Tag */
812*5113495bSYour Name 	0xbb,			/* Signature */
813*5113495bSYour Name 	0x40, 0x00, 0x66, 0x23,	/* FFT Summary A */
814*5113495bSYour Name 	0x00, 0x89, 0x64, 0x64,	/* FFT Summary B */
815*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* Segment ID */
816*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
817*5113495bSYour Name 	/* FFT Data */
818*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
819*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
821*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
822*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
823*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
824*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
825*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
826*5113495bSYour Name 	1, 1, 2, 6, 68, 5, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
827*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
828*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
829*5113495bSYour Name 	0,
830*5113495bSYour Name 
831*5113495bSYour Name 	/* Segment 2 */
832*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
833*5113495bSYour Name 	0xbb,			/* Signature */
834*5113495bSYour Name 	0xfb,			/* Tag */
835*5113495bSYour Name 	0x01,			/* Size */
836*5113495bSYour Name 	0x14,
837*5113495bSYour Name 	0x23, 0x66, 0x00, 0x40,	/* FFT Summary A */
838*5113495bSYour Name 	0x64, 0x64, 0x89, 0x00,	/* FFT Summary B */
839*5113495bSYour Name 	0x00, 0x00, 0x00, 0x01,	/* Segment ID */
840*5113495bSYour Name #else
841*5113495bSYour Name 	0x14,			/* Length */
842*5113495bSYour Name 	0x01,
843*5113495bSYour Name 	0xfb,			/* Tag */
844*5113495bSYour Name 	0xbb,			/* Signature */
845*5113495bSYour Name 	0x40, 0x00, 0x66, 0x23,	/* FFT Summary A */
846*5113495bSYour Name 	0x00, 0x89, 0x64, 0x64,	/* FFT Summary B */
847*5113495bSYour Name 	0x01, 0x00, 0x00, 0x00,	/* Segment ID */
848*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
849*5113495bSYour Name 	/* FFT Data */
850*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
851*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
853*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
854*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
855*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
856*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
857*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
858*5113495bSYour Name 	1, 1, 2, 6, 68, 5, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
859*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
860*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861*5113495bSYour Name 	0,
862*5113495bSYour Name };
863*5113495bSYour Name 
864*5113495bSYour Name /* Report data for 80_80MHz bandwidth for generation 3 chipsets */
865*5113495bSYour Name static uint8_t reportdata_80_80_gen3[] = {
866*5113495bSYour Name 	/* Segment 1 */
867*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
868*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
869*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
870*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
871*5113495bSYour Name 	0x00,			/* fft_hdr_length */
872*5113495bSYour Name 	0x44,
873*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe0,
874*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
875*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
876*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
877*5113495bSYour Name #else
878*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
879*5113495bSYour Name 	0x44,			/* fft_hdr_length */
880*5113495bSYour Name 	0x00,
881*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
882*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
883*5113495bSYour Name 	0xe0, 0x00, 0xf6, 0x0f,
884*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
885*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
886*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
887*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
888*5113495bSYour Name 	/* FFT Data */
889*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
890*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
891*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
893*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
894*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
895*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
897*5113495bSYour Name 	1, 1, 2, 6, 68, 5, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
900*5113495bSYour Name 
901*5113495bSYour Name 	/* Segment 2 */
902*5113495bSYour Name #ifdef BIG_ENDIAN_HOST
903*5113495bSYour Name 	0x12, 0x34, 0x56, 0x78,	/* fft_timestamp */
904*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
905*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
906*5113495bSYour Name 	0x00,			/* fft_hdr_length */
907*5113495bSYour Name 	0x44,
908*5113495bSYour Name 	0x0f, 0xf6, 0x00, 0xe1,
909*5113495bSYour Name 	0x00, 0x00, 0x2f, 0xba,
910*5113495bSYour Name 	0x20, 0xb4, 0x2c, 0x01,
911*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
912*5113495bSYour Name #else
913*5113495bSYour Name 	0x78, 0x56, 0x34, 0x12,	/* fft_timestamp */
914*5113495bSYour Name 	0x44,			/* fft_hdr_length */
915*5113495bSYour Name 	0x00,
916*5113495bSYour Name 	0x03,			/* fft_hdr_tag */
917*5113495bSYour Name 	0xfa,			/* fft_hdr_sig */
918*5113495bSYour Name 	0xe1, 0x00, 0xf6, 0x0f,
919*5113495bSYour Name 	0xba, 0x2f, 0x00, 0x00,
920*5113495bSYour Name 	0x01, 0x2c, 0xb4, 0x20,
921*5113495bSYour Name 	0x00, 0x00, 0x00, 0x00,	/* reserved */
922*5113495bSYour Name #endif				/* BIG_ENDIAN_HOST */
923*5113495bSYour Name 	/* FFT Data */
924*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
925*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
927*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
928*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
929*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
930*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
931*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
932*5113495bSYour Name 	1, 1, 2, 6, 68, 5, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
934*5113495bSYour Name 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
935*5113495bSYour Name };
936*5113495bSYour Name 
937*5113495bSYour Name /* RF measurement information for 80_80 MHz bandwidth */
938*5113495bSYour Name static struct target_if_spectral_rfqual_info rfqual_info_80_80 = {
939*5113495bSYour Name 	.rssi_comb = 1,
940*5113495bSYour Name 
941*5113495bSYour Name 	.pc_rssi_info[0].rssi_pri20 = 1,
942*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec20 = 17,
943*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec40 = 40,
944*5113495bSYour Name 	.pc_rssi_info[0].rssi_sec80 = 128,
945*5113495bSYour Name 
946*5113495bSYour Name 	.pc_rssi_info[1].rssi_pri20 = 128,
947*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec20 = 128,
948*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec40 = 128,
949*5113495bSYour Name 	.pc_rssi_info[1].rssi_sec80 = 128,
950*5113495bSYour Name 
951*5113495bSYour Name 	.pc_rssi_info[2].rssi_pri20 = 128,
952*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec20 = 128,
953*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec40 = 128,
954*5113495bSYour Name 	.pc_rssi_info[2].rssi_sec80 = 128,
955*5113495bSYour Name 
956*5113495bSYour Name 	.pc_rssi_info[3].rssi_pri20 = 128,
957*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec20 = 128,
958*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec40 = 128,
959*5113495bSYour Name 	.pc_rssi_info[3].rssi_sec80 = 128,
960*5113495bSYour Name 
961*5113495bSYour Name 	.noise_floor[0] = -90,
962*5113495bSYour Name 	.noise_floor[1] = -90,
963*5113495bSYour Name 	.noise_floor[2] = -90,
964*5113495bSYour Name 	.noise_floor[3] = -90,
965*5113495bSYour Name };
966*5113495bSYour Name 
967*5113495bSYour Name /* Channel information for 80_80 MHz bandwidth */
968*5113495bSYour Name static struct target_if_spectral_chan_info chan_info_80_80 = {
969*5113495bSYour Name 	.center_freq1 = 5210,
970*5113495bSYour Name 	.center_freq2 = 5530,
971*5113495bSYour Name 	.chan_width = 160,
972*5113495bSYour Name };
973*5113495bSYour Name 
974*5113495bSYour Name /* Spectral config parameters for 80_80 MHz bandwidth */
975*5113495bSYour Name static struct spectral_config config_80_80_1 = {
976*5113495bSYour Name 	.ss_fft_period = 1,
977*5113495bSYour Name 	.ss_period = 35,
978*5113495bSYour Name 	.ss_count = 0,
979*5113495bSYour Name 	.ss_short_report = 1,
980*5113495bSYour Name 	.radar_bin_thresh_sel = 0,
981*5113495bSYour Name 	.ss_spectral_pri = 1,
982*5113495bSYour Name 	.ss_fft_size = 9,
983*5113495bSYour Name 	.ss_gc_ena = 1,
984*5113495bSYour Name 	.ss_restart_ena = 0,
985*5113495bSYour Name 	.ss_noise_floor_ref = 65440,
986*5113495bSYour Name 	.ss_init_delay = 80,
987*5113495bSYour Name 	.ss_nb_tone_thr = 12,
988*5113495bSYour Name 	.ss_str_bin_thr = 8,
989*5113495bSYour Name 	.ss_wb_rpt_mode = 0,
990*5113495bSYour Name 	.ss_rssi_rpt_mode = 0,
991*5113495bSYour Name 	.ss_rssi_thr = 240,
992*5113495bSYour Name 	.ss_pwr_format = 0,
993*5113495bSYour Name 	.ss_rpt_mode = 2,
994*5113495bSYour Name 	.ss_bin_scale = 1,
995*5113495bSYour Name 	.ss_dbm_adj = 1,
996*5113495bSYour Name 	.ss_chn_mask = 1,
997*5113495bSYour Name 	.ss_nf_cal[0] = 0,
998*5113495bSYour Name 	.ss_nf_cal[1] = 0,
999*5113495bSYour Name 	.ss_nf_cal[2] = 0,
1000*5113495bSYour Name 	.ss_nf_cal[3] = 0,
1001*5113495bSYour Name 	.ss_nf_cal[4] = 0,
1002*5113495bSYour Name 	.ss_nf_cal[5] = 0,
1003*5113495bSYour Name 	.ss_nf_pwr[0] = 0,
1004*5113495bSYour Name 	.ss_nf_pwr[1] = 0,
1005*5113495bSYour Name 	.ss_nf_pwr[2] = 0,
1006*5113495bSYour Name 	.ss_nf_pwr[3] = 0,
1007*5113495bSYour Name 	.ss_nf_pwr[4] = 0,
1008*5113495bSYour Name 	.ss_nf_pwr[5] = 0,
1009*5113495bSYour Name 	.ss_nf_temp_data = 0,
1010*5113495bSYour Name };
1011*5113495bSYour Name 
1012*5113495bSYour Name #endif				/* QCA_SUPPORT_SPECTRAL_SIMULATION */
1013*5113495bSYour Name #endif				/* _SPECTRAL_SIM_INTERNAL_H_ */
1014