/*
 * Copyright (c) 2017 The Linux Foundation. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef _RX_LOCATION_INFO_H_
#define _RX_LOCATION_INFO_H_
#if !defined(__ASSEMBLER__)
#endif


// ################ START SUMMARY #################
//
//	Dword	Fields
//	0	rtt_fac_legacy[15:0], rtt_fac_legacy_ext80[31:16]
//	1	rtt_fac_vht[15:0], rtt_fac_vht_ext80[31:16]
//	2	rtt_fac_legacy_status[0], rtt_fac_legacy_ext80_status[1], rtt_fac_vht_status[2], rtt_fac_vht_ext80_status[3], rtt_fac_sifs[15:4], rtt_fac_sifs_status[17:16], rtt_cfr_status[18], rtt_cir_status[19], rtt_channel_dump_size[30:20], rtt_hw_ifft_mode[31]
//	3	rtt_btcf_status[0], rtt_preamble_type[5:1], rtt_pkt_bw_leg[7:6], rtt_pkt_bw_vht[9:8], rtt_gi_type[11:10], rtt_mcs_rate[16:12], rtt_strongest_chain[19:17], rtt_strongest_chain_ext80[22:20], rtt_rx_chain_mask[30:23], reserved_3[31]
//	4	rx_start_ts[31:0]
//	5	rx_end_ts[31:0]
//	6	sfo_phase_pkt_start[11:0], sfo_phase_pkt_end[23:12], rtt_che_buffer_pointer_high8[31:24]
//	7	rtt_che_buffer_pointer_low32[31:0]
//	8	rtt_cfo_measurement[13:0], rtt_chan_spread[21:14], rtt_timing_backoff_sel[23:22], reserved_8[30:24], rx_location_info_valid[31]
//
// ################ END SUMMARY #################

#define NUM_OF_DWORDS_RX_LOCATION_INFO 9

struct rx_location_info {
             uint32_t rtt_fac_legacy                  : 16, //[15:0]
                      rtt_fac_legacy_ext80            : 16; //[31:16]
             uint32_t rtt_fac_vht                     : 16, //[15:0]
                      rtt_fac_vht_ext80               : 16; //[31:16]
             uint32_t rtt_fac_legacy_status           :  1, //[0]
                      rtt_fac_legacy_ext80_status     :  1, //[1]
                      rtt_fac_vht_status              :  1, //[2]
                      rtt_fac_vht_ext80_status        :  1, //[3]
                      rtt_fac_sifs                    : 12, //[15:4]
                      rtt_fac_sifs_status             :  2, //[17:16]
                      rtt_cfr_status                  :  1, //[18]
                      rtt_cir_status                  :  1, //[19]
                      rtt_channel_dump_size           : 11, //[30:20]
                      rtt_hw_ifft_mode                :  1; //[31]
             uint32_t rtt_btcf_status                 :  1, //[0]
                      rtt_preamble_type               :  5, //[5:1]
                      rtt_pkt_bw_leg                  :  2, //[7:6]
                      rtt_pkt_bw_vht                  :  2, //[9:8]
                      rtt_gi_type                     :  2, //[11:10]
                      rtt_mcs_rate                    :  5, //[16:12]
                      rtt_strongest_chain             :  3, //[19:17]
                      rtt_strongest_chain_ext80       :  3, //[22:20]
                      rtt_rx_chain_mask               :  8, //[30:23]
                      reserved_3                      :  1; //[31]
             uint32_t rx_start_ts                     : 32; //[31:0]
             uint32_t rx_end_ts                       : 32; //[31:0]
             uint32_t sfo_phase_pkt_start             : 12, //[11:0]
                      sfo_phase_pkt_end               : 12, //[23:12]
                      rtt_che_buffer_pointer_high8    :  8; //[31:24]
             uint32_t rtt_che_buffer_pointer_low32    : 32; //[31:0]
             uint32_t rtt_cfo_measurement             : 14, //[13:0]
                      rtt_chan_spread                 :  8, //[21:14]
                      rtt_timing_backoff_sel          :  2, //[23:22]
                      reserved_8                      :  7, //[30:24]
                      rx_location_info_valid          :  1; //[31]
};

/*

rtt_fac_legacy
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from L-LTF on the first selected
			Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from L-LTF on pri80 on the
			selected pri80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>

rtt_fac_legacy_ext80
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from L-LTF on the second selected
			Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from L-LTF on ext80 on the
			selected ext80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>

rtt_fac_vht
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on the first
			selected Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on pri80 on the
			selected pri80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>

rtt_fac_vht_ext80
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on the second
			selected Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on ext80 on the
			selected ext80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>

rtt_fac_legacy_status
			
			Status of rtt_fac_legacy
			
			
			
			<enum 0 location_fac_legacy_status_not_valid>
			
			<enum 1 location_fac_legacy_status_valid>
			
			<legal all>

rtt_fac_legacy_ext80_status
			
			Status of rtt_fac_legacy_ext80
			
			
			
			<enum 0 location_fac_legacy_ext80_status_not_valid>
			
			<enum 1 location_fac_legacy_ext80_status_valid>
			
			<legal all>

rtt_fac_vht_status
			
			Status of rtt_fac_vht
			
			
			
			<enum 0 location_fac_vht_status_not_valid>
			
			<enum 1 location_fac_vht_status_valid>
			
			<legal all>

rtt_fac_vht_ext80_status
			
			Status of rtt_fac_vht_ext80
			
			
			
			<enum 0 location_fac_vht_ext80_status_not_valid>
			
			<enum 1 location_fac_vht_ext80_status_valid>
			
			<legal all>

rtt_fac_sifs
			
			To support fine SIFS adjustment, need to provide FAC
			value @ integer number of 320 MHz clock cycles to MAC.  It
			is from L-LTF if it is a Legacy packet and from (V)HT/HE-LTF
			if it is a (V)HT/HE packet
			
			
			
			12 bits, signed, no fractional part
			
			<legal all>

rtt_fac_sifs_status
			
			Status of rtt_fac_sifs
			
			0: not valid
			
			1: valid and from L-LTF
			
			2: valid and from (V)HT/HE-LTF
			
			3: reserved
			
			<legal 0-2>

rtt_cfr_status
			
			Status of channel frequency response dump
			
			
			
			<enum 0 location_CFR_dump_not_valid>
			
			<enum 1 location_CFR_dump_valid>
			
			<legal all>

rtt_cir_status
			
			Status of channel impulse response dump
			
			
			
			<enum 0 location_CIR_dump_not_valid>
			
			<enum 1 location_CIR_dump_valid>
			
			<legal all>

rtt_channel_dump_size
			
			Channel dump size.  It shows how many tones in CFR in
			one chain, for example, it will show 52 for Legacy20 and 484
			for VHT160
			
			
			
			<legal all>

rtt_hw_ifft_mode
			
			Indicator showing if HW IFFT mode or SW IFFT mode
			
			
			
			<enum 0 location_sw_ifft_mode>
			
			<enum 1 location_hw_ifft_mode>
			
			<legal all>

rtt_btcf_status
			
			Indicate if BTCF is used to capture the timestamps
			
			
			
			<enum 0 location_not_BTCF_based_ts>
			
			<enum 1 location_BTCF_based_ts>
			
			<legal all>

rtt_preamble_type
			
			Indicate preamble type
			
			
			
			<enum 0 location_preamble_type_legacy>
			
			<enum 1 location_preamble_type_ht>
			
			<enum 2 location_preamble_type_vht>
			
			<enum 3 location_preamble_type_he_su_4xltf>
			
			<enum 4 location_preamble_type_he_su_2xltf>
			
			<enum 5 location_preamble_type_he_su_1xltf>
			
			<enum 6
			location_preamble_type_he_trigger_based_ul_4xltf>
			
			<enum 7
			location_preamble_type_he_trigger_based_ul_2xltf>
			
			<enum 8
			location_preamble_type_he_trigger_based_ul_1xltf>
			
			<enum 9 location_preamble_type_he_mu_4xltf>
			
			<enum 10 location_preamble_type_he_mu_2xltf>
			
			<enum 11 location_preamble_type_he_mu_1xltf>
			
			<enum 12
			location_preamble_type_he_extended_range_su_4xltf>
			
			<enum 13
			location_preamble_type_he_extended_range_su_2xltf>
			
			<enum 14
			location_preamble_type_he_extended_range_su_1xltf>
			
			<legal 0-14>

rtt_pkt_bw_leg
			
			Indicate the bandwidth of L-LTF
			
			
			
			<enum 0 location_pkt_bw_20MHz>
			
			<enum 1 location_pkt_bw_40MHz>
			
			<enum 2 location_pkt_bw_80MHz>
			
			<enum 3 location_pkt_bw_160MHz>
			
			<legal all>

rtt_pkt_bw_vht
			
			Indicate the bandwidth of (V)HT/HE-LTF
			
			
			
			<enum 0 location_pkt_bw_20MHz>
			
			<enum 1 location_pkt_bw_40MHz>
			
			<enum 2 location_pkt_bw_80MHz>
			
			<enum 3 location_pkt_bw_160MHz>
			
			<legal all>

rtt_gi_type
			
			Indicate GI (guard interval) type
			
			
			
			<enum 0     gi_0_8_us > HE related GI. Can also be used
			for HE
			
			<enum 1     gi_0_4_us > HE related GI. Can also be used
			for HE
			
			<enum 2     gi_1_6_us > HE related GI
			
			<enum 3     gi_3_2_us > HE related GI
			
			<legal 0 - 3>

rtt_mcs_rate
			
			Bits 0~4 indicate MCS rate, if Legacy, 
			
			0: 48 Mbps,
			
			1: 24 Mbps,
			
			2: 12 Mbps,
			
			3: 6 Mbps,
			
			4: 54 Mbps,
			
			5: 36 Mbps,
			
			6: 18 Mbps,
			
			7: 9 Mbps,
			
			
			
			if HT, 0-7: MCS0-MCS7, 
			
			if VHT, 0-9: MCS0-MCS9, 
			
			
			<legal all>

rtt_strongest_chain
			
			For 20/40/80, this field shows the first selected Rx
			chain that is used in HW IFFT mode
			
			
			
			For 80+80, this field shows the selected pri80 Rx chain
			that is used in HW IFFT mode
			
			
			
			<enum 0 location_strongest_chain_is_0>
			
			<enum 1 location_strongest_chain_is_1>
			
			<enum 2 location_strongest_chain_is_2>
			
			<enum 3 location_strongest_chain_is_3>
			
			<enum 4 location_strongest_chain_is_4>
			
			<enum 5 location_strongest_chain_is_5>
			
			<enum 6 location_strongest_chain_is_6>
			
			<enum 7 location_strongest_chain_is_7>
			
			<legal all>

rtt_strongest_chain_ext80
			
			For 20/40/80, this field shows the second selected Rx
			chain that is used in HW IFFT mode
			
			
			
			For 80+80, this field shows the selected ext80 Rx chain
			that is used in HW IFFT mode
			
			
			
			<enum 0 location_strongest_chain_is_0>
			
			<enum 1 location_strongest_chain_is_1>
			
			<enum 2 location_strongest_chain_is_2>
			
			<enum 3 location_strongest_chain_is_3>
			
			<enum 4 location_strongest_chain_is_4>
			
			<enum 5 location_strongest_chain_is_5>
			
			<enum 6 location_strongest_chain_is_6>
			
			<enum 7 location_strongest_chain_is_7>
			
			<legal all>

rtt_rx_chain_mask
			
			Rx chain mask, each bit is a Rx chain
			
			0: the Rx chain is not used
			
			1: the Rx chain is used
			
			Support up to 8 Rx chains
			
			<legal all>

reserved_3
			
			<legal 0>

rx_start_ts
			
			RX packet start timestamp
			
			
			
			It reports the time the first L-STF ADC sample arrived
			at RX antenna
			
			
			
			clock unit is 480MHz
			
			<legal all>

rx_end_ts
			
			RX packet end timestamp
			
			
			
			It reports the time the last symbol's last ADC sample
			arrived at RX antenna
			
			
			
			clock unit is 480MHz
			
			<legal all>

sfo_phase_pkt_start
			
			The phase of the SFO of the first symbol's first FFT
			input sample
			
			
			
			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
			66.7ns, and 6 bits fraction to provide a resolution of
			0.03ns
			
			
			
			clock unit is 480MHz
			
			<legal all>

sfo_phase_pkt_end
			
			The phase of the SFO of the last symbol's last FFT input
			sample
			
			
			
			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
			66.7ns, and 6 bits fraction to provide a resolution of
			0.03ns
			
			
			
			clock unit is 480MHz
			
			<legal all>

rtt_che_buffer_pointer_high8
			
			The high 8 bits of the 40 bits pointer pointed to the
			external RTT channel information buffer
			
			
			
			8 bits
			
			<legal all>

rtt_che_buffer_pointer_low32
			
			The low 32 bits of the 40 bits pointer pointed to the
			external RTT channel information buffer
			
			
			
			32 bits
			
			<legal all>

rtt_cfo_measurement
			
			CFO measurement. Needed for passive locationing
			
			
			
			14 bits, signed 1.13. 13 bits fraction to provide a
			resolution of 153 Hz
			
			
			
			In units of cycles/800 ns
			
			<legal all>

rtt_chan_spread
			
			Channel delay spread measurement. Needed for selecting
			GI length
			
			
			
			8 bits, unsigned. At 25 ns step. Can represent up to
			6375 ns
			
			
			
			In units of cycles @ 40 MHz
			
			<legal all>

rtt_timing_backoff_sel
			
			Indicate which timing backoff value is used
			
			
			
			<enum 0 timing_backoff_low_rssi>
			
			<enum 1 timing_backoff_mid_rssi>
			
			<enum 2 timing_backoff_high_rssi>
			
			<enum 3 reserved>
			
			<legal all>

reserved_8
			
			<legal 0>

rx_location_info_valid
			
			<enum 0 rx_location_info_is_not_valid>
			
			<enum 1 rx_location_info_is_valid>
			
			<legal all>
*/


/* Description		RX_LOCATION_INFO_0_RTT_FAC_LEGACY
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from L-LTF on the first selected
			Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from L-LTF on pri80 on the
			selected pri80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_OFFSET                     0x00000000
#define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_LSB                        0
#define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_MASK                       0x0000ffff

/* Description		RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from L-LTF on the second selected
			Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from L-LTF on ext80 on the
			selected ext80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80_OFFSET               0x00000000
#define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80_LSB                  16
#define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80_MASK                 0xffff0000

/* Description		RX_LOCATION_INFO_1_RTT_FAC_VHT
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on the first
			selected Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on pri80 on the
			selected pri80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_1_RTT_FAC_VHT_OFFSET                        0x00000004
#define RX_LOCATION_INFO_1_RTT_FAC_VHT_LSB                           0
#define RX_LOCATION_INFO_1_RTT_FAC_VHT_MASK                          0x0000ffff

/* Description		RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80
			
			For 20/40/80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on the second
			selected Rx chain
			
			
			
			For 80+80, this field shows the RTT first arrival
			correction value computed from (V)HT/HE-LTF on ext80 on the
			selected ext80 Rx chain
			
			
			
			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
			interpolation
			
			
			
			clock unit is 320MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80_OFFSET                  0x00000004
#define RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80_LSB                     16
#define RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80_MASK                    0xffff0000

/* Description		RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS
			
			Status of rtt_fac_legacy
			
			
			
			<enum 0 location_fac_legacy_status_not_valid>
			
			<enum 1 location_fac_legacy_status_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS_OFFSET              0x00000008
#define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS_LSB                 0
#define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS_MASK                0x00000001

/* Description		RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS
			
			Status of rtt_fac_legacy_ext80
			
			
			
			<enum 0 location_fac_legacy_ext80_status_not_valid>
			
			<enum 1 location_fac_legacy_ext80_status_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS_OFFSET        0x00000008
#define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS_LSB           1
#define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS_MASK          0x00000002

/* Description		RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS
			
			Status of rtt_fac_vht
			
			
			
			<enum 0 location_fac_vht_status_not_valid>
			
			<enum 1 location_fac_vht_status_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS_OFFSET                 0x00000008
#define RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS_LSB                    2
#define RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS_MASK                   0x00000004

/* Description		RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS
			
			Status of rtt_fac_vht_ext80
			
			
			
			<enum 0 location_fac_vht_ext80_status_not_valid>
			
			<enum 1 location_fac_vht_ext80_status_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS_OFFSET           0x00000008
#define RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS_LSB              3
#define RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS_MASK             0x00000008

/* Description		RX_LOCATION_INFO_2_RTT_FAC_SIFS
			
			To support fine SIFS adjustment, need to provide FAC
			value @ integer number of 320 MHz clock cycles to MAC.  It
			is from L-LTF if it is a Legacy packet and from (V)HT/HE-LTF
			if it is a (V)HT/HE packet
			
			
			
			12 bits, signed, no fractional part
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_FAC_SIFS_OFFSET                       0x00000008
#define RX_LOCATION_INFO_2_RTT_FAC_SIFS_LSB                          4
#define RX_LOCATION_INFO_2_RTT_FAC_SIFS_MASK                         0x0000fff0

/* Description		RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS
			
			Status of rtt_fac_sifs
			
			0: not valid
			
			1: valid and from L-LTF
			
			2: valid and from (V)HT/HE-LTF
			
			3: reserved
			
			<legal 0-2>
*/
#define RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS_OFFSET                0x00000008
#define RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS_LSB                   16
#define RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS_MASK                  0x00030000

/* Description		RX_LOCATION_INFO_2_RTT_CFR_STATUS
			
			Status of channel frequency response dump
			
			
			
			<enum 0 location_CFR_dump_not_valid>
			
			<enum 1 location_CFR_dump_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_CFR_STATUS_OFFSET                     0x00000008
#define RX_LOCATION_INFO_2_RTT_CFR_STATUS_LSB                        18
#define RX_LOCATION_INFO_2_RTT_CFR_STATUS_MASK                       0x00040000

/* Description		RX_LOCATION_INFO_2_RTT_CIR_STATUS
			
			Status of channel impulse response dump
			
			
			
			<enum 0 location_CIR_dump_not_valid>
			
			<enum 1 location_CIR_dump_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_CIR_STATUS_OFFSET                     0x00000008
#define RX_LOCATION_INFO_2_RTT_CIR_STATUS_LSB                        19
#define RX_LOCATION_INFO_2_RTT_CIR_STATUS_MASK                       0x00080000

/* Description		RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE
			
			Channel dump size.  It shows how many tones in CFR in
			one chain, for example, it will show 52 for Legacy20 and 484
			for VHT160
			
			
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE_OFFSET              0x00000008
#define RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE_LSB                 20
#define RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE_MASK                0x7ff00000

/* Description		RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE
			
			Indicator showing if HW IFFT mode or SW IFFT mode
			
			
			
			<enum 0 location_sw_ifft_mode>
			
			<enum 1 location_hw_ifft_mode>
			
			<legal all>
*/
#define RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE_OFFSET                   0x00000008
#define RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE_LSB                      31
#define RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE_MASK                     0x80000000

/* Description		RX_LOCATION_INFO_3_RTT_BTCF_STATUS
			
			Indicate if BTCF is used to capture the timestamps
			
			
			
			<enum 0 location_not_BTCF_based_ts>
			
			<enum 1 location_BTCF_based_ts>
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_BTCF_STATUS_OFFSET                    0x0000000c
#define RX_LOCATION_INFO_3_RTT_BTCF_STATUS_LSB                       0
#define RX_LOCATION_INFO_3_RTT_BTCF_STATUS_MASK                      0x00000001

/* Description		RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE
			
			Indicate preamble type
			
			
			
			<enum 0 location_preamble_type_legacy>
			
			<enum 1 location_preamble_type_ht>
			
			<enum 2 location_preamble_type_vht>
			
			<enum 3 location_preamble_type_he_su_4xltf>
			
			<enum 4 location_preamble_type_he_su_2xltf>
			
			<enum 5 location_preamble_type_he_su_1xltf>
			
			<enum 6
			location_preamble_type_he_trigger_based_ul_4xltf>
			
			<enum 7
			location_preamble_type_he_trigger_based_ul_2xltf>
			
			<enum 8
			location_preamble_type_he_trigger_based_ul_1xltf>
			
			<enum 9 location_preamble_type_he_mu_4xltf>
			
			<enum 10 location_preamble_type_he_mu_2xltf>
			
			<enum 11 location_preamble_type_he_mu_1xltf>
			
			<enum 12
			location_preamble_type_he_extended_range_su_4xltf>
			
			<enum 13
			location_preamble_type_he_extended_range_su_2xltf>
			
			<enum 14
			location_preamble_type_he_extended_range_su_1xltf>
			
			<legal 0-14>
*/
#define RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE_OFFSET                  0x0000000c
#define RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE_LSB                     1
#define RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE_MASK                    0x0000003e

/* Description		RX_LOCATION_INFO_3_RTT_PKT_BW_LEG
			
			Indicate the bandwidth of L-LTF
			
			
			
			<enum 0 location_pkt_bw_20MHz>
			
			<enum 1 location_pkt_bw_40MHz>
			
			<enum 2 location_pkt_bw_80MHz>
			
			<enum 3 location_pkt_bw_160MHz>
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_PKT_BW_LEG_OFFSET                     0x0000000c
#define RX_LOCATION_INFO_3_RTT_PKT_BW_LEG_LSB                        6
#define RX_LOCATION_INFO_3_RTT_PKT_BW_LEG_MASK                       0x000000c0

/* Description		RX_LOCATION_INFO_3_RTT_PKT_BW_VHT
			
			Indicate the bandwidth of (V)HT/HE-LTF
			
			
			
			<enum 0 location_pkt_bw_20MHz>
			
			<enum 1 location_pkt_bw_40MHz>
			
			<enum 2 location_pkt_bw_80MHz>
			
			<enum 3 location_pkt_bw_160MHz>
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_PKT_BW_VHT_OFFSET                     0x0000000c
#define RX_LOCATION_INFO_3_RTT_PKT_BW_VHT_LSB                        8
#define RX_LOCATION_INFO_3_RTT_PKT_BW_VHT_MASK                       0x00000300

/* Description		RX_LOCATION_INFO_3_RTT_GI_TYPE
			
			Indicate GI (guard interval) type
			
			
			
			<enum 0     gi_0_8_us > HE related GI. Can also be used
			for HE
			
			<enum 1     gi_0_4_us > HE related GI. Can also be used
			for HE
			
			<enum 2     gi_1_6_us > HE related GI
			
			<enum 3     gi_3_2_us > HE related GI
			
			<legal 0 - 3>
*/
#define RX_LOCATION_INFO_3_RTT_GI_TYPE_OFFSET                        0x0000000c
#define RX_LOCATION_INFO_3_RTT_GI_TYPE_LSB                           10
#define RX_LOCATION_INFO_3_RTT_GI_TYPE_MASK                          0x00000c00

/* Description		RX_LOCATION_INFO_3_RTT_MCS_RATE
			
			Bits 0~4 indicate MCS rate, if Legacy, 
			
			0: 48 Mbps,
			
			1: 24 Mbps,
			
			2: 12 Mbps,
			
			3: 6 Mbps,
			
			4: 54 Mbps,
			
			5: 36 Mbps,
			
			6: 18 Mbps,
			
			7: 9 Mbps,
			
			
			
			if HT, 0-7: MCS0-MCS7, 
			
			if VHT, 0-9: MCS0-MCS9, 
			
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_MCS_RATE_OFFSET                       0x0000000c
#define RX_LOCATION_INFO_3_RTT_MCS_RATE_LSB                          12
#define RX_LOCATION_INFO_3_RTT_MCS_RATE_MASK                         0x0001f000

/* Description		RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN
			
			For 20/40/80, this field shows the first selected Rx
			chain that is used in HW IFFT mode
			
			
			
			For 80+80, this field shows the selected pri80 Rx chain
			that is used in HW IFFT mode
			
			
			
			<enum 0 location_strongest_chain_is_0>
			
			<enum 1 location_strongest_chain_is_1>
			
			<enum 2 location_strongest_chain_is_2>
			
			<enum 3 location_strongest_chain_is_3>
			
			<enum 4 location_strongest_chain_is_4>
			
			<enum 5 location_strongest_chain_is_5>
			
			<enum 6 location_strongest_chain_is_6>
			
			<enum 7 location_strongest_chain_is_7>
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_OFFSET                0x0000000c
#define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_LSB                   17
#define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_MASK                  0x000e0000

/* Description		RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80
			
			For 20/40/80, this field shows the second selected Rx
			chain that is used in HW IFFT mode
			
			
			
			For 80+80, this field shows the selected ext80 Rx chain
			that is used in HW IFFT mode
			
			
			
			<enum 0 location_strongest_chain_is_0>
			
			<enum 1 location_strongest_chain_is_1>
			
			<enum 2 location_strongest_chain_is_2>
			
			<enum 3 location_strongest_chain_is_3>
			
			<enum 4 location_strongest_chain_is_4>
			
			<enum 5 location_strongest_chain_is_5>
			
			<enum 6 location_strongest_chain_is_6>
			
			<enum 7 location_strongest_chain_is_7>
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80_OFFSET          0x0000000c
#define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80_LSB             20
#define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80_MASK            0x00700000

/* Description		RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK
			
			Rx chain mask, each bit is a Rx chain
			
			0: the Rx chain is not used
			
			1: the Rx chain is used
			
			Support up to 8 Rx chains
			
			<legal all>
*/
#define RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK_OFFSET                  0x0000000c
#define RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK_LSB                     23
#define RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK_MASK                    0x7f800000

/* Description		RX_LOCATION_INFO_3_RESERVED_3
			
			<legal 0>
*/
#define RX_LOCATION_INFO_3_RESERVED_3_OFFSET                         0x0000000c
#define RX_LOCATION_INFO_3_RESERVED_3_LSB                            31
#define RX_LOCATION_INFO_3_RESERVED_3_MASK                           0x80000000

/* Description		RX_LOCATION_INFO_4_RX_START_TS
			
			RX packet start timestamp
			
			
			
			It reports the time the first L-STF ADC sample arrived
			at RX antenna
			
			
			
			clock unit is 480MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_4_RX_START_TS_OFFSET                        0x00000010
#define RX_LOCATION_INFO_4_RX_START_TS_LSB                           0
#define RX_LOCATION_INFO_4_RX_START_TS_MASK                          0xffffffff

/* Description		RX_LOCATION_INFO_5_RX_END_TS
			
			RX packet end timestamp
			
			
			
			It reports the time the last symbol's last ADC sample
			arrived at RX antenna
			
			
			
			clock unit is 480MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_5_RX_END_TS_OFFSET                          0x00000014
#define RX_LOCATION_INFO_5_RX_END_TS_LSB                             0
#define RX_LOCATION_INFO_5_RX_END_TS_MASK                            0xffffffff

/* Description		RX_LOCATION_INFO_6_SFO_PHASE_PKT_START
			
			The phase of the SFO of the first symbol's first FFT
			input sample
			
			
			
			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
			66.7ns, and 6 bits fraction to provide a resolution of
			0.03ns
			
			
			
			clock unit is 480MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_6_SFO_PHASE_PKT_START_OFFSET                0x00000018
#define RX_LOCATION_INFO_6_SFO_PHASE_PKT_START_LSB                   0
#define RX_LOCATION_INFO_6_SFO_PHASE_PKT_START_MASK                  0x00000fff

/* Description		RX_LOCATION_INFO_6_SFO_PHASE_PKT_END
			
			The phase of the SFO of the last symbol's last FFT input
			sample
			
			
			
			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
			66.7ns, and 6 bits fraction to provide a resolution of
			0.03ns
			
			
			
			clock unit is 480MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_6_SFO_PHASE_PKT_END_OFFSET                  0x00000018
#define RX_LOCATION_INFO_6_SFO_PHASE_PKT_END_LSB                     12
#define RX_LOCATION_INFO_6_SFO_PHASE_PKT_END_MASK                    0x00fff000

/* Description		RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8
			
			The high 8 bits of the 40 bits pointer pointed to the
			external RTT channel information buffer
			
			
			
			8 bits
			
			<legal all>
*/
#define RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8_OFFSET       0x00000018
#define RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8_LSB          24
#define RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8_MASK         0xff000000

/* Description		RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32
			
			The low 32 bits of the 40 bits pointer pointed to the
			external RTT channel information buffer
			
			
			
			32 bits
			
			<legal all>
*/
#define RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32_OFFSET       0x0000001c
#define RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32_LSB          0
#define RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32_MASK         0xffffffff

/* Description		RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT
			
			CFO measurement. Needed for passive locationing
			
			
			
			14 bits, signed 1.13. 13 bits fraction to provide a
			resolution of 153 Hz
			
			
			
			In units of cycles/800 ns
			
			<legal all>
*/
#define RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT_OFFSET                0x00000020
#define RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT_LSB                   0
#define RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT_MASK                  0x00003fff

/* Description		RX_LOCATION_INFO_8_RTT_CHAN_SPREAD
			
			Channel delay spread measurement. Needed for selecting
			GI length
			
			
			
			8 bits, unsigned. At 25 ns step. Can represent up to
			6375 ns
			
			
			
			In units of cycles @ 40 MHz
			
			<legal all>
*/
#define RX_LOCATION_INFO_8_RTT_CHAN_SPREAD_OFFSET                    0x00000020
#define RX_LOCATION_INFO_8_RTT_CHAN_SPREAD_LSB                       14
#define RX_LOCATION_INFO_8_RTT_CHAN_SPREAD_MASK                      0x003fc000

/* Description		RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL
			
			Indicate which timing backoff value is used
			
			
			
			<enum 0 timing_backoff_low_rssi>
			
			<enum 1 timing_backoff_mid_rssi>
			
			<enum 2 timing_backoff_high_rssi>
			
			<enum 3 reserved>
			
			<legal all>
*/
#define RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL_OFFSET             0x00000020
#define RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL_LSB                22
#define RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL_MASK               0x00c00000

/* Description		RX_LOCATION_INFO_8_RESERVED_8
			
			<legal 0>
*/
#define RX_LOCATION_INFO_8_RESERVED_8_OFFSET                         0x00000020
#define RX_LOCATION_INFO_8_RESERVED_8_LSB                            24
#define RX_LOCATION_INFO_8_RESERVED_8_MASK                           0x7f000000

/* Description		RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID
			
			<enum 0 rx_location_info_is_not_valid>
			
			<enum 1 rx_location_info_is_valid>
			
			<legal all>
*/
#define RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID_OFFSET             0x00000020
#define RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID_LSB                31
#define RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID_MASK               0x80000000


#endif // _RX_LOCATION_INFO_H_