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