1 /* 2 * Copyright (c) 2013 Qualcomm Atheros, Inc. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef SPECTRAL_COMMON_H 18 #define SPECTRAL_COMMON_H 19 20 #define SPECTRAL_HT20_NUM_BINS 56 21 #define SPECTRAL_HT20_40_NUM_BINS 128 22 23 /* TODO: could possibly be 512, but no samples this large 24 * could be acquired so far. 25 */ 26 #define SPECTRAL_ATH10K_MAX_NUM_BINS 256 27 28 /* FFT sample format given to userspace via debugfs. 29 * 30 * Please keep the type/length at the front position and change 31 * other fields after adding another sample type 32 * 33 * TODO: this might need rework when switching to nl80211-based 34 * interface. 35 */ 36 enum ath_fft_sample_type { 37 ATH_FFT_SAMPLE_HT20 = 1, 38 ATH_FFT_SAMPLE_HT20_40, 39 ATH_FFT_SAMPLE_ATH10K, 40 }; 41 42 struct fft_sample_tlv { 43 u8 type; /* see ath_fft_sample */ 44 __be16 length; 45 /* type dependent data follows */ 46 } __packed; 47 48 struct fft_sample_ht20 { 49 struct fft_sample_tlv tlv; 50 51 u8 max_exp; 52 53 __be16 freq; 54 s8 rssi; 55 s8 noise; 56 57 __be16 max_magnitude; 58 u8 max_index; 59 u8 bitmap_weight; 60 61 __be64 tsf; 62 63 u8 data[SPECTRAL_HT20_NUM_BINS]; 64 } __packed; 65 66 struct fft_sample_ht20_40 { 67 struct fft_sample_tlv tlv; 68 69 u8 channel_type; 70 __be16 freq; 71 72 s8 lower_rssi; 73 s8 upper_rssi; 74 75 __be64 tsf; 76 77 s8 lower_noise; 78 s8 upper_noise; 79 80 __be16 lower_max_magnitude; 81 __be16 upper_max_magnitude; 82 83 u8 lower_max_index; 84 u8 upper_max_index; 85 86 u8 lower_bitmap_weight; 87 u8 upper_bitmap_weight; 88 89 u8 max_exp; 90 91 u8 data[SPECTRAL_HT20_40_NUM_BINS]; 92 } __packed; 93 94 struct fft_sample_ath10k { 95 struct fft_sample_tlv tlv; 96 u8 chan_width_mhz; 97 __be16 freq1; 98 __be16 freq2; 99 __be16 noise; 100 __be16 max_magnitude; 101 __be16 total_gain_db; 102 __be16 base_pwr_db; 103 __be64 tsf; 104 s8 max_index; 105 u8 rssi; 106 u8 relpwr_db; 107 u8 avgpwr_db; 108 u8 max_exp; 109 110 u8 data[0]; 111 } __packed; 112 113 #endif /* SPECTRAL_COMMON_H */ 114