1 /*
2  * Copyright (c) 2018 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 // $ATH_LICENSE_HW_HDR_C$
20 //
21 // DO NOT EDIT!  This file is automatically generated
22 //               These definitions are tied to a particular hardware layout
23 
24 
25 #ifndef _RX_LOCATION_INFO_H_
26 #define _RX_LOCATION_INFO_H_
27 #if !defined(__ASSEMBLER__)
28 #endif
29 
30 
31 // ################ START SUMMARY #################
32 //
33 //	Dword	Fields
34 //	0	rtt_fac_legacy[15:0], rtt_fac_legacy_ext80[31:16]
35 //	1	rtt_fac_vht[15:0], rtt_fac_vht_ext80[31:16]
36 //	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]
37 //	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]
38 //	4	rx_start_ts[31:0]
39 //	5	rx_end_ts[31:0]
40 //	6	sfo_phase_pkt_start[11:0], sfo_phase_pkt_end[23:12], rtt_che_buffer_pointer_high8[31:24]
41 //	7	rtt_che_buffer_pointer_low32[31:0]
42 //	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]
43 //
44 // ################ END SUMMARY #################
45 
46 #define NUM_OF_DWORDS_RX_LOCATION_INFO 9
47 
48 struct rx_location_info {
49              uint32_t rtt_fac_legacy                  : 16, //[15:0]
50                       rtt_fac_legacy_ext80            : 16; //[31:16]
51              uint32_t rtt_fac_vht                     : 16, //[15:0]
52                       rtt_fac_vht_ext80               : 16; //[31:16]
53              uint32_t rtt_fac_legacy_status           :  1, //[0]
54                       rtt_fac_legacy_ext80_status     :  1, //[1]
55                       rtt_fac_vht_status              :  1, //[2]
56                       rtt_fac_vht_ext80_status        :  1, //[3]
57                       rtt_fac_sifs                    : 12, //[15:4]
58                       rtt_fac_sifs_status             :  2, //[17:16]
59                       rtt_cfr_status                  :  1, //[18]
60                       rtt_cir_status                  :  1, //[19]
61                       rtt_channel_dump_size           : 11, //[30:20]
62                       rtt_hw_ifft_mode                :  1; //[31]
63              uint32_t rtt_btcf_status                 :  1, //[0]
64                       rtt_preamble_type               :  5, //[5:1]
65                       rtt_pkt_bw_leg                  :  2, //[7:6]
66                       rtt_pkt_bw_vht                  :  2, //[9:8]
67                       rtt_gi_type                     :  2, //[11:10]
68                       rtt_mcs_rate                    :  5, //[16:12]
69                       rtt_strongest_chain             :  3, //[19:17]
70                       rtt_strongest_chain_ext80       :  3, //[22:20]
71                       rtt_rx_chain_mask               :  8, //[30:23]
72                       reserved_3                      :  1; //[31]
73              uint32_t rx_start_ts                     : 32; //[31:0]
74              uint32_t rx_end_ts                       : 32; //[31:0]
75              uint32_t sfo_phase_pkt_start             : 12, //[11:0]
76                       sfo_phase_pkt_end               : 12, //[23:12]
77                       rtt_che_buffer_pointer_high8    :  8; //[31:24]
78              uint32_t rtt_che_buffer_pointer_low32    : 32; //[31:0]
79              uint32_t rtt_cfo_measurement             : 14, //[13:0]
80                       rtt_chan_spread                 :  8, //[21:14]
81                       rtt_timing_backoff_sel          :  2, //[23:22]
82                       reserved_8                      :  7, //[30:24]
83                       rx_location_info_valid          :  1; //[31]
84 };
85 
86 /*
87 
88 rtt_fac_legacy
89 
90 			For 20/40/80, this field shows the RTT first arrival
91 			correction value computed from L-LTF on the first selected
92 			Rx chain
93 
94 
95 
96 			For 80+80, this field shows the RTT first arrival
97 			correction value computed from L-LTF on pri80 on the
98 			selected pri80 Rx chain
99 
100 
101 
102 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
103 			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
104 			interpolation
105 
106 
107 
108 			clock unit is 320MHz
109 
110 			<legal all>
111 
112 rtt_fac_legacy_ext80
113 
114 			For 20/40/80, this field shows the RTT first arrival
115 			correction value computed from L-LTF on the second selected
116 			Rx chain
117 
118 
119 
120 			For 80+80, this field shows the RTT first arrival
121 			correction value computed from L-LTF on ext80 on the
122 			selected ext80 Rx chain
123 
124 
125 
126 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
127 			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
128 			interpolation
129 
130 
131 
132 			clock unit is 320MHz
133 
134 			<legal all>
135 
136 rtt_fac_vht
137 
138 			For 20/40/80, this field shows the RTT first arrival
139 			correction value computed from (V)HT/HE-LTF on the first
140 			selected Rx chain
141 
142 
143 
144 			For 80+80, this field shows the RTT first arrival
145 			correction value computed from (V)HT/HE-LTF on pri80 on the
146 			selected pri80 Rx chain
147 
148 
149 
150 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
151 			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
152 			interpolation
153 
154 
155 
156 			clock unit is 320MHz
157 
158 			<legal all>
159 
160 rtt_fac_vht_ext80
161 
162 			For 20/40/80, this field shows the RTT first arrival
163 			correction value computed from (V)HT/HE-LTF on the second
164 			selected Rx chain
165 
166 
167 
168 			For 80+80, this field shows the RTT first arrival
169 			correction value computed from (V)HT/HE-LTF on ext80 on the
170 			selected ext80 Rx chain
171 
172 
173 
174 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
175 			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
176 			interpolation
177 
178 
179 
180 			clock unit is 320MHz
181 
182 			<legal all>
183 
184 rtt_fac_legacy_status
185 
186 			Status of rtt_fac_legacy
187 
188 
189 
190 			<enum 0 location_fac_legacy_status_not_valid>
191 
192 			<enum 1 location_fac_legacy_status_valid>
193 
194 			<legal all>
195 
196 rtt_fac_legacy_ext80_status
197 
198 			Status of rtt_fac_legacy_ext80
199 
200 
201 
202 			<enum 0 location_fac_legacy_ext80_status_not_valid>
203 
204 			<enum 1 location_fac_legacy_ext80_status_valid>
205 
206 			<legal all>
207 
208 rtt_fac_vht_status
209 
210 			Status of rtt_fac_vht
211 
212 
213 
214 			<enum 0 location_fac_vht_status_not_valid>
215 
216 			<enum 1 location_fac_vht_status_valid>
217 
218 			<legal all>
219 
220 rtt_fac_vht_ext80_status
221 
222 			Status of rtt_fac_vht_ext80
223 
224 
225 
226 			<enum 0 location_fac_vht_ext80_status_not_valid>
227 
228 			<enum 1 location_fac_vht_ext80_status_valid>
229 
230 			<legal all>
231 
232 rtt_fac_sifs
233 
234 			To support fine SIFS adjustment, need to provide FAC
235 			value @ integer number of 320 MHz clock cycles to MAC.  It
236 			is from L-LTF if it is a Legacy packet and from (V)HT/HE-LTF
237 			if it is a (V)HT/HE packet
238 
239 
240 
241 			12 bits, signed, no fractional part
242 
243 			<legal all>
244 
245 rtt_fac_sifs_status
246 
247 			Status of rtt_fac_sifs
248 
249 			0: not valid
250 
251 			1: valid and from L-LTF
252 
253 			2: valid and from (V)HT/HE-LTF
254 
255 			3: reserved
256 
257 			<legal 0-2>
258 
259 rtt_cfr_status
260 
261 			Status of channel frequency response dump
262 
263 
264 
265 			<enum 0 location_CFR_dump_not_valid>
266 
267 			<enum 1 location_CFR_dump_valid>
268 
269 			<legal all>
270 
271 rtt_cir_status
272 
273 			Status of channel impulse response dump
274 
275 
276 
277 			<enum 0 location_CIR_dump_not_valid>
278 
279 			<enum 1 location_CIR_dump_valid>
280 
281 			<legal all>
282 
283 rtt_channel_dump_size
284 
285 			Channel dump size.  It shows how many tones in CFR in
286 			one chain, for example, it will show 52 for Legacy20 and 484
287 			for VHT160
288 
289 
290 
291 			<legal all>
292 
293 rtt_hw_ifft_mode
294 
295 			Indicator showing if HW IFFT mode or SW IFFT mode
296 
297 
298 
299 			<enum 0 location_sw_ifft_mode>
300 
301 			<enum 1 location_hw_ifft_mode>
302 
303 			<legal all>
304 
305 rtt_btcf_status
306 
307 			Indicate if BTCF is used to capture the timestamps
308 
309 
310 
311 			<enum 0 location_not_BTCF_based_ts>
312 
313 			<enum 1 location_BTCF_based_ts>
314 
315 			<legal all>
316 
317 rtt_preamble_type
318 
319 			Indicate preamble type
320 
321 
322 
323 			<enum 0 location_preamble_type_legacy>
324 
325 			<enum 1 location_preamble_type_ht>
326 
327 			<enum 2 location_preamble_type_vht>
328 
329 			<enum 3 location_preamble_type_he_su_4xltf>
330 
331 			<enum 4 location_preamble_type_he_su_2xltf>
332 
333 			<enum 5 location_preamble_type_he_su_1xltf>
334 
335 			<enum 6
336 			location_preamble_type_he_trigger_based_ul_4xltf>
337 
338 			<enum 7
339 			location_preamble_type_he_trigger_based_ul_2xltf>
340 
341 			<enum 8
342 			location_preamble_type_he_trigger_based_ul_1xltf>
343 
344 			<enum 9 location_preamble_type_he_mu_4xltf>
345 
346 			<enum 10 location_preamble_type_he_mu_2xltf>
347 
348 			<enum 11 location_preamble_type_he_mu_1xltf>
349 
350 			<enum 12
351 			location_preamble_type_he_extended_range_su_4xltf>
352 
353 			<enum 13
354 			location_preamble_type_he_extended_range_su_2xltf>
355 
356 			<enum 14
357 			location_preamble_type_he_extended_range_su_1xltf>
358 
359 			<legal 0-14>
360 
361 rtt_pkt_bw_leg
362 
363 			Indicate the bandwidth of L-LTF
364 
365 
366 
367 			<enum 0 location_pkt_bw_20MHz>
368 
369 			<enum 1 location_pkt_bw_40MHz>
370 
371 			<enum 2 location_pkt_bw_80MHz>
372 
373 			<enum 3 location_pkt_bw_160MHz>
374 
375 			<legal all>
376 
377 rtt_pkt_bw_vht
378 
379 			Indicate the bandwidth of (V)HT/HE-LTF
380 
381 
382 
383 			<enum 0 location_pkt_bw_20MHz>
384 
385 			<enum 1 location_pkt_bw_40MHz>
386 
387 			<enum 2 location_pkt_bw_80MHz>
388 
389 			<enum 3 location_pkt_bw_160MHz>
390 
391 			<legal all>
392 
393 rtt_gi_type
394 
395 			Indicate GI (guard interval) type
396 
397 
398 
399 			<enum 0     gi_0_8_us > HE related GI. Can also be used
400 			for HE
401 
402 			<enum 1     gi_0_4_us > HE related GI. Can also be used
403 			for HE
404 
405 			<enum 2     gi_1_6_us > HE related GI
406 
407 			<enum 3     gi_3_2_us > HE related GI
408 
409 			<legal 0 - 3>
410 
411 rtt_mcs_rate
412 
413 			Bits 0~4 indicate MCS rate, if Legacy,
414 
415 			0: 48 Mbps,
416 
417 			1: 24 Mbps,
418 
419 			2: 12 Mbps,
420 
421 			3: 6 Mbps,
422 
423 			4: 54 Mbps,
424 
425 			5: 36 Mbps,
426 
427 			6: 18 Mbps,
428 
429 			7: 9 Mbps,
430 
431 
432 
433 			if HT, 0-7: MCS0-MCS7,
434 
435 			if VHT, 0-9: MCS0-MCS9,
436 
437 
438 			<legal all>
439 
440 rtt_strongest_chain
441 
442 			For 20/40/80, this field shows the first selected Rx
443 			chain that is used in HW IFFT mode
444 
445 
446 
447 			For 80+80, this field shows the selected pri80 Rx chain
448 			that is used in HW IFFT mode
449 
450 
451 
452 			<enum 0 location_strongest_chain_is_0>
453 
454 			<enum 1 location_strongest_chain_is_1>
455 
456 			<enum 2 location_strongest_chain_is_2>
457 
458 			<enum 3 location_strongest_chain_is_3>
459 
460 			<enum 4 location_strongest_chain_is_4>
461 
462 			<enum 5 location_strongest_chain_is_5>
463 
464 			<enum 6 location_strongest_chain_is_6>
465 
466 			<enum 7 location_strongest_chain_is_7>
467 
468 			<legal all>
469 
470 rtt_strongest_chain_ext80
471 
472 			For 20/40/80, this field shows the second selected Rx
473 			chain that is used in HW IFFT mode
474 
475 
476 
477 			For 80+80, this field shows the selected ext80 Rx chain
478 			that is used in HW IFFT mode
479 
480 
481 
482 			<enum 0 location_strongest_chain_is_0>
483 
484 			<enum 1 location_strongest_chain_is_1>
485 
486 			<enum 2 location_strongest_chain_is_2>
487 
488 			<enum 3 location_strongest_chain_is_3>
489 
490 			<enum 4 location_strongest_chain_is_4>
491 
492 			<enum 5 location_strongest_chain_is_5>
493 
494 			<enum 6 location_strongest_chain_is_6>
495 
496 			<enum 7 location_strongest_chain_is_7>
497 
498 			<legal all>
499 
500 rtt_rx_chain_mask
501 
502 			Rx chain mask, each bit is a Rx chain
503 
504 			0: the Rx chain is not used
505 
506 			1: the Rx chain is used
507 
508 			Support up to 8 Rx chains
509 
510 			<legal all>
511 
512 reserved_3
513 
514 			<legal 0>
515 
516 rx_start_ts
517 
518 			RX packet start timestamp
519 
520 
521 
522 			It reports the time the first L-STF ADC sample arrived
523 			at RX antenna
524 
525 
526 
527 			clock unit is 480MHz
528 
529 			<legal all>
530 
531 rx_end_ts
532 
533 			RX packet end timestamp
534 
535 
536 
537 			It reports the time the last symbol's last ADC sample
538 			arrived at RX antenna
539 
540 
541 
542 			clock unit is 480MHz
543 
544 			<legal all>
545 
546 sfo_phase_pkt_start
547 
548 			The phase of the SFO of the first symbol's first FFT
549 			input sample
550 
551 
552 
553 			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
554 			66.7ns, and 6 bits fraction to provide a resolution of
555 			0.03ns
556 
557 
558 
559 			clock unit is 480MHz
560 
561 			<legal all>
562 
563 sfo_phase_pkt_end
564 
565 			The phase of the SFO of the last symbol's last FFT input
566 			sample
567 
568 
569 
570 			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
571 			66.7ns, and 6 bits fraction to provide a resolution of
572 			0.03ns
573 
574 
575 
576 			clock unit is 480MHz
577 
578 			<legal all>
579 
580 rtt_che_buffer_pointer_high8
581 
582 			The high 8 bits of the 40 bits pointer pointed to the
583 			external RTT channel information buffer
584 
585 
586 
587 			8 bits
588 
589 			<legal all>
590 
591 rtt_che_buffer_pointer_low32
592 
593 			The low 32 bits of the 40 bits pointer pointed to the
594 			external RTT channel information buffer
595 
596 
597 
598 			32 bits
599 
600 			<legal all>
601 
602 rtt_cfo_measurement
603 
604 			CFO measurement. Needed for passive locationing
605 
606 
607 
608 			14 bits, signed 1.13. 13 bits fraction to provide a
609 			resolution of 153 Hz
610 
611 
612 
613 			In units of cycles/800 ns
614 
615 			<legal all>
616 
617 rtt_chan_spread
618 
619 			Channel delay spread measurement. Needed for selecting
620 			GI length
621 
622 
623 
624 			8 bits, unsigned. At 25 ns step. Can represent up to
625 			6375 ns
626 
627 
628 
629 			In units of cycles @ 40 MHz
630 
631 			<legal all>
632 
633 rtt_timing_backoff_sel
634 
635 			Indicate which timing backoff value is used
636 
637 
638 
639 			<enum 0 timing_backoff_low_rssi>
640 
641 			<enum 1 timing_backoff_mid_rssi>
642 
643 			<enum 2 timing_backoff_high_rssi>
644 
645 			<enum 3 reserved>
646 
647 			<legal all>
648 
649 reserved_8
650 
651 			<legal 0>
652 
653 rx_location_info_valid
654 
655 			<enum 0 rx_location_info_is_not_valid>
656 
657 			<enum 1 rx_location_info_is_valid>
658 
659 			<legal all>
660 */
661 
662 
663 /* Description		RX_LOCATION_INFO_0_RTT_FAC_LEGACY
664 
665 			For 20/40/80, this field shows the RTT first arrival
666 			correction value computed from L-LTF on the first selected
667 			Rx chain
668 
669 
670 
671 			For 80+80, this field shows the RTT first arrival
672 			correction value computed from L-LTF on pri80 on the
673 			selected pri80 Rx chain
674 
675 
676 
677 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
678 			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
679 			interpolation
680 
681 
682 
683 			clock unit is 320MHz
684 
685 			<legal all>
686 */
687 #define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_OFFSET                     0x00000000
688 #define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_LSB                        0
689 #define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_MASK                       0x0000ffff
690 
691 /* Description		RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80
692 
693 			For 20/40/80, this field shows the RTT first arrival
694 			correction value computed from L-LTF on the second selected
695 			Rx chain
696 
697 
698 
699 			For 80+80, this field shows the RTT first arrival
700 			correction value computed from L-LTF on ext80 on the
701 			selected ext80 Rx chain
702 
703 
704 
705 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
706 			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
707 			interpolation
708 
709 
710 
711 			clock unit is 320MHz
712 
713 			<legal all>
714 */
715 #define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80_OFFSET               0x00000000
716 #define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80_LSB                  16
717 #define RX_LOCATION_INFO_0_RTT_FAC_LEGACY_EXT80_MASK                 0xffff0000
718 
719 /* Description		RX_LOCATION_INFO_1_RTT_FAC_VHT
720 
721 			For 20/40/80, this field shows the RTT first arrival
722 			correction value computed from (V)HT/HE-LTF on the first
723 			selected Rx chain
724 
725 
726 
727 			For 80+80, this field shows the RTT first arrival
728 			correction value computed from (V)HT/HE-LTF on pri80 on the
729 			selected pri80 Rx chain
730 
731 
732 
733 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
734 			6.4us, and 4 bits fraction to cover pri80 and 32x FAC
735 			interpolation
736 
737 
738 
739 			clock unit is 320MHz
740 
741 			<legal all>
742 */
743 #define RX_LOCATION_INFO_1_RTT_FAC_VHT_OFFSET                        0x00000004
744 #define RX_LOCATION_INFO_1_RTT_FAC_VHT_LSB                           0
745 #define RX_LOCATION_INFO_1_RTT_FAC_VHT_MASK                          0x0000ffff
746 
747 /* Description		RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80
748 
749 			For 20/40/80, this field shows the RTT first arrival
750 			correction value computed from (V)HT/HE-LTF on the second
751 			selected Rx chain
752 
753 
754 
755 			For 80+80, this field shows the RTT first arrival
756 			correction value computed from (V)HT/HE-LTF on ext80 on the
757 			selected ext80 Rx chain
758 
759 
760 
761 			16 bits, signed 12.4. 12 bits integer to cover -6.4us to
762 			6.4us, and 4 bits fraction to cover ext80 and 32x FAC
763 			interpolation
764 
765 
766 
767 			clock unit is 320MHz
768 
769 			<legal all>
770 */
771 #define RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80_OFFSET                  0x00000004
772 #define RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80_LSB                     16
773 #define RX_LOCATION_INFO_1_RTT_FAC_VHT_EXT80_MASK                    0xffff0000
774 
775 /* Description		RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS
776 
777 			Status of rtt_fac_legacy
778 
779 
780 
781 			<enum 0 location_fac_legacy_status_not_valid>
782 
783 			<enum 1 location_fac_legacy_status_valid>
784 
785 			<legal all>
786 */
787 #define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS_OFFSET              0x00000008
788 #define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS_LSB                 0
789 #define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_STATUS_MASK                0x00000001
790 
791 /* Description		RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS
792 
793 			Status of rtt_fac_legacy_ext80
794 
795 
796 
797 			<enum 0 location_fac_legacy_ext80_status_not_valid>
798 
799 			<enum 1 location_fac_legacy_ext80_status_valid>
800 
801 			<legal all>
802 */
803 #define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS_OFFSET        0x00000008
804 #define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS_LSB           1
805 #define RX_LOCATION_INFO_2_RTT_FAC_LEGACY_EXT80_STATUS_MASK          0x00000002
806 
807 /* Description		RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS
808 
809 			Status of rtt_fac_vht
810 
811 
812 
813 			<enum 0 location_fac_vht_status_not_valid>
814 
815 			<enum 1 location_fac_vht_status_valid>
816 
817 			<legal all>
818 */
819 #define RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS_OFFSET                 0x00000008
820 #define RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS_LSB                    2
821 #define RX_LOCATION_INFO_2_RTT_FAC_VHT_STATUS_MASK                   0x00000004
822 
823 /* Description		RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS
824 
825 			Status of rtt_fac_vht_ext80
826 
827 
828 
829 			<enum 0 location_fac_vht_ext80_status_not_valid>
830 
831 			<enum 1 location_fac_vht_ext80_status_valid>
832 
833 			<legal all>
834 */
835 #define RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS_OFFSET           0x00000008
836 #define RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS_LSB              3
837 #define RX_LOCATION_INFO_2_RTT_FAC_VHT_EXT80_STATUS_MASK             0x00000008
838 
839 /* Description		RX_LOCATION_INFO_2_RTT_FAC_SIFS
840 
841 			To support fine SIFS adjustment, need to provide FAC
842 			value @ integer number of 320 MHz clock cycles to MAC.  It
843 			is from L-LTF if it is a Legacy packet and from (V)HT/HE-LTF
844 			if it is a (V)HT/HE packet
845 
846 
847 
848 			12 bits, signed, no fractional part
849 
850 			<legal all>
851 */
852 #define RX_LOCATION_INFO_2_RTT_FAC_SIFS_OFFSET                       0x00000008
853 #define RX_LOCATION_INFO_2_RTT_FAC_SIFS_LSB                          4
854 #define RX_LOCATION_INFO_2_RTT_FAC_SIFS_MASK                         0x0000fff0
855 
856 /* Description		RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS
857 
858 			Status of rtt_fac_sifs
859 
860 			0: not valid
861 
862 			1: valid and from L-LTF
863 
864 			2: valid and from (V)HT/HE-LTF
865 
866 			3: reserved
867 
868 			<legal 0-2>
869 */
870 #define RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS_OFFSET                0x00000008
871 #define RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS_LSB                   16
872 #define RX_LOCATION_INFO_2_RTT_FAC_SIFS_STATUS_MASK                  0x00030000
873 
874 /* Description		RX_LOCATION_INFO_2_RTT_CFR_STATUS
875 
876 			Status of channel frequency response dump
877 
878 
879 
880 			<enum 0 location_CFR_dump_not_valid>
881 
882 			<enum 1 location_CFR_dump_valid>
883 
884 			<legal all>
885 */
886 #define RX_LOCATION_INFO_2_RTT_CFR_STATUS_OFFSET                     0x00000008
887 #define RX_LOCATION_INFO_2_RTT_CFR_STATUS_LSB                        18
888 #define RX_LOCATION_INFO_2_RTT_CFR_STATUS_MASK                       0x00040000
889 
890 /* Description		RX_LOCATION_INFO_2_RTT_CIR_STATUS
891 
892 			Status of channel impulse response dump
893 
894 
895 
896 			<enum 0 location_CIR_dump_not_valid>
897 
898 			<enum 1 location_CIR_dump_valid>
899 
900 			<legal all>
901 */
902 #define RX_LOCATION_INFO_2_RTT_CIR_STATUS_OFFSET                     0x00000008
903 #define RX_LOCATION_INFO_2_RTT_CIR_STATUS_LSB                        19
904 #define RX_LOCATION_INFO_2_RTT_CIR_STATUS_MASK                       0x00080000
905 
906 /* Description		RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE
907 
908 			Channel dump size.  It shows how many tones in CFR in
909 			one chain, for example, it will show 52 for Legacy20 and 484
910 			for VHT160
911 
912 
913 
914 			<legal all>
915 */
916 #define RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE_OFFSET              0x00000008
917 #define RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE_LSB                 20
918 #define RX_LOCATION_INFO_2_RTT_CHANNEL_DUMP_SIZE_MASK                0x7ff00000
919 
920 /* Description		RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE
921 
922 			Indicator showing if HW IFFT mode or SW IFFT mode
923 
924 
925 
926 			<enum 0 location_sw_ifft_mode>
927 
928 			<enum 1 location_hw_ifft_mode>
929 
930 			<legal all>
931 */
932 #define RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE_OFFSET                   0x00000008
933 #define RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE_LSB                      31
934 #define RX_LOCATION_INFO_2_RTT_HW_IFFT_MODE_MASK                     0x80000000
935 
936 /* Description		RX_LOCATION_INFO_3_RTT_BTCF_STATUS
937 
938 			Indicate if BTCF is used to capture the timestamps
939 
940 
941 
942 			<enum 0 location_not_BTCF_based_ts>
943 
944 			<enum 1 location_BTCF_based_ts>
945 
946 			<legal all>
947 */
948 #define RX_LOCATION_INFO_3_RTT_BTCF_STATUS_OFFSET                    0x0000000c
949 #define RX_LOCATION_INFO_3_RTT_BTCF_STATUS_LSB                       0
950 #define RX_LOCATION_INFO_3_RTT_BTCF_STATUS_MASK                      0x00000001
951 
952 /* Description		RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE
953 
954 			Indicate preamble type
955 
956 
957 
958 			<enum 0 location_preamble_type_legacy>
959 
960 			<enum 1 location_preamble_type_ht>
961 
962 			<enum 2 location_preamble_type_vht>
963 
964 			<enum 3 location_preamble_type_he_su_4xltf>
965 
966 			<enum 4 location_preamble_type_he_su_2xltf>
967 
968 			<enum 5 location_preamble_type_he_su_1xltf>
969 
970 			<enum 6
971 			location_preamble_type_he_trigger_based_ul_4xltf>
972 
973 			<enum 7
974 			location_preamble_type_he_trigger_based_ul_2xltf>
975 
976 			<enum 8
977 			location_preamble_type_he_trigger_based_ul_1xltf>
978 
979 			<enum 9 location_preamble_type_he_mu_4xltf>
980 
981 			<enum 10 location_preamble_type_he_mu_2xltf>
982 
983 			<enum 11 location_preamble_type_he_mu_1xltf>
984 
985 			<enum 12
986 			location_preamble_type_he_extended_range_su_4xltf>
987 
988 			<enum 13
989 			location_preamble_type_he_extended_range_su_2xltf>
990 
991 			<enum 14
992 			location_preamble_type_he_extended_range_su_1xltf>
993 
994 			<legal 0-14>
995 */
996 #define RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE_OFFSET                  0x0000000c
997 #define RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE_LSB                     1
998 #define RX_LOCATION_INFO_3_RTT_PREAMBLE_TYPE_MASK                    0x0000003e
999 
1000 /* Description		RX_LOCATION_INFO_3_RTT_PKT_BW_LEG
1001 
1002 			Indicate the bandwidth of L-LTF
1003 
1004 
1005 
1006 			<enum 0 location_pkt_bw_20MHz>
1007 
1008 			<enum 1 location_pkt_bw_40MHz>
1009 
1010 			<enum 2 location_pkt_bw_80MHz>
1011 
1012 			<enum 3 location_pkt_bw_160MHz>
1013 
1014 			<legal all>
1015 */
1016 #define RX_LOCATION_INFO_3_RTT_PKT_BW_LEG_OFFSET                     0x0000000c
1017 #define RX_LOCATION_INFO_3_RTT_PKT_BW_LEG_LSB                        6
1018 #define RX_LOCATION_INFO_3_RTT_PKT_BW_LEG_MASK                       0x000000c0
1019 
1020 /* Description		RX_LOCATION_INFO_3_RTT_PKT_BW_VHT
1021 
1022 			Indicate the bandwidth of (V)HT/HE-LTF
1023 
1024 
1025 
1026 			<enum 0 location_pkt_bw_20MHz>
1027 
1028 			<enum 1 location_pkt_bw_40MHz>
1029 
1030 			<enum 2 location_pkt_bw_80MHz>
1031 
1032 			<enum 3 location_pkt_bw_160MHz>
1033 
1034 			<legal all>
1035 */
1036 #define RX_LOCATION_INFO_3_RTT_PKT_BW_VHT_OFFSET                     0x0000000c
1037 #define RX_LOCATION_INFO_3_RTT_PKT_BW_VHT_LSB                        8
1038 #define RX_LOCATION_INFO_3_RTT_PKT_BW_VHT_MASK                       0x00000300
1039 
1040 /* Description		RX_LOCATION_INFO_3_RTT_GI_TYPE
1041 
1042 			Indicate GI (guard interval) type
1043 
1044 
1045 
1046 			<enum 0     gi_0_8_us > HE related GI. Can also be used
1047 			for HE
1048 
1049 			<enum 1     gi_0_4_us > HE related GI. Can also be used
1050 			for HE
1051 
1052 			<enum 2     gi_1_6_us > HE related GI
1053 
1054 			<enum 3     gi_3_2_us > HE related GI
1055 
1056 			<legal 0 - 3>
1057 */
1058 #define RX_LOCATION_INFO_3_RTT_GI_TYPE_OFFSET                        0x0000000c
1059 #define RX_LOCATION_INFO_3_RTT_GI_TYPE_LSB                           10
1060 #define RX_LOCATION_INFO_3_RTT_GI_TYPE_MASK                          0x00000c00
1061 
1062 /* Description		RX_LOCATION_INFO_3_RTT_MCS_RATE
1063 
1064 			Bits 0~4 indicate MCS rate, if Legacy,
1065 
1066 			0: 48 Mbps,
1067 
1068 			1: 24 Mbps,
1069 
1070 			2: 12 Mbps,
1071 
1072 			3: 6 Mbps,
1073 
1074 			4: 54 Mbps,
1075 
1076 			5: 36 Mbps,
1077 
1078 			6: 18 Mbps,
1079 
1080 			7: 9 Mbps,
1081 
1082 
1083 
1084 			if HT, 0-7: MCS0-MCS7,
1085 
1086 			if VHT, 0-9: MCS0-MCS9,
1087 
1088 
1089 			<legal all>
1090 */
1091 #define RX_LOCATION_INFO_3_RTT_MCS_RATE_OFFSET                       0x0000000c
1092 #define RX_LOCATION_INFO_3_RTT_MCS_RATE_LSB                          12
1093 #define RX_LOCATION_INFO_3_RTT_MCS_RATE_MASK                         0x0001f000
1094 
1095 /* Description		RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN
1096 
1097 			For 20/40/80, this field shows the first selected Rx
1098 			chain that is used in HW IFFT mode
1099 
1100 
1101 
1102 			For 80+80, this field shows the selected pri80 Rx chain
1103 			that is used in HW IFFT mode
1104 
1105 
1106 
1107 			<enum 0 location_strongest_chain_is_0>
1108 
1109 			<enum 1 location_strongest_chain_is_1>
1110 
1111 			<enum 2 location_strongest_chain_is_2>
1112 
1113 			<enum 3 location_strongest_chain_is_3>
1114 
1115 			<enum 4 location_strongest_chain_is_4>
1116 
1117 			<enum 5 location_strongest_chain_is_5>
1118 
1119 			<enum 6 location_strongest_chain_is_6>
1120 
1121 			<enum 7 location_strongest_chain_is_7>
1122 
1123 			<legal all>
1124 */
1125 #define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_OFFSET                0x0000000c
1126 #define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_LSB                   17
1127 #define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_MASK                  0x000e0000
1128 
1129 /* Description		RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80
1130 
1131 			For 20/40/80, this field shows the second selected Rx
1132 			chain that is used in HW IFFT mode
1133 
1134 
1135 
1136 			For 80+80, this field shows the selected ext80 Rx chain
1137 			that is used in HW IFFT mode
1138 
1139 
1140 
1141 			<enum 0 location_strongest_chain_is_0>
1142 
1143 			<enum 1 location_strongest_chain_is_1>
1144 
1145 			<enum 2 location_strongest_chain_is_2>
1146 
1147 			<enum 3 location_strongest_chain_is_3>
1148 
1149 			<enum 4 location_strongest_chain_is_4>
1150 
1151 			<enum 5 location_strongest_chain_is_5>
1152 
1153 			<enum 6 location_strongest_chain_is_6>
1154 
1155 			<enum 7 location_strongest_chain_is_7>
1156 
1157 			<legal all>
1158 */
1159 #define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80_OFFSET          0x0000000c
1160 #define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80_LSB             20
1161 #define RX_LOCATION_INFO_3_RTT_STRONGEST_CHAIN_EXT80_MASK            0x00700000
1162 
1163 /* Description		RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK
1164 
1165 			Rx chain mask, each bit is a Rx chain
1166 
1167 			0: the Rx chain is not used
1168 
1169 			1: the Rx chain is used
1170 
1171 			Support up to 8 Rx chains
1172 
1173 			<legal all>
1174 */
1175 #define RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK_OFFSET                  0x0000000c
1176 #define RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK_LSB                     23
1177 #define RX_LOCATION_INFO_3_RTT_RX_CHAIN_MASK_MASK                    0x7f800000
1178 
1179 /* Description		RX_LOCATION_INFO_3_RESERVED_3
1180 
1181 			<legal 0>
1182 */
1183 #define RX_LOCATION_INFO_3_RESERVED_3_OFFSET                         0x0000000c
1184 #define RX_LOCATION_INFO_3_RESERVED_3_LSB                            31
1185 #define RX_LOCATION_INFO_3_RESERVED_3_MASK                           0x80000000
1186 
1187 /* Description		RX_LOCATION_INFO_4_RX_START_TS
1188 
1189 			RX packet start timestamp
1190 
1191 
1192 
1193 			It reports the time the first L-STF ADC sample arrived
1194 			at RX antenna
1195 
1196 
1197 
1198 			clock unit is 480MHz
1199 
1200 			<legal all>
1201 */
1202 #define RX_LOCATION_INFO_4_RX_START_TS_OFFSET                        0x00000010
1203 #define RX_LOCATION_INFO_4_RX_START_TS_LSB                           0
1204 #define RX_LOCATION_INFO_4_RX_START_TS_MASK                          0xffffffff
1205 
1206 /* Description		RX_LOCATION_INFO_5_RX_END_TS
1207 
1208 			RX packet end timestamp
1209 
1210 
1211 
1212 			It reports the time the last symbol's last ADC sample
1213 			arrived at RX antenna
1214 
1215 
1216 
1217 			clock unit is 480MHz
1218 
1219 			<legal all>
1220 */
1221 #define RX_LOCATION_INFO_5_RX_END_TS_OFFSET                          0x00000014
1222 #define RX_LOCATION_INFO_5_RX_END_TS_LSB                             0
1223 #define RX_LOCATION_INFO_5_RX_END_TS_MASK                            0xffffffff
1224 
1225 /* Description		RX_LOCATION_INFO_6_SFO_PHASE_PKT_START
1226 
1227 			The phase of the SFO of the first symbol's first FFT
1228 			input sample
1229 
1230 
1231 
1232 			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
1233 			66.7ns, and 6 bits fraction to provide a resolution of
1234 			0.03ns
1235 
1236 
1237 
1238 			clock unit is 480MHz
1239 
1240 			<legal all>
1241 */
1242 #define RX_LOCATION_INFO_6_SFO_PHASE_PKT_START_OFFSET                0x00000018
1243 #define RX_LOCATION_INFO_6_SFO_PHASE_PKT_START_LSB                   0
1244 #define RX_LOCATION_INFO_6_SFO_PHASE_PKT_START_MASK                  0x00000fff
1245 
1246 /* Description		RX_LOCATION_INFO_6_SFO_PHASE_PKT_END
1247 
1248 			The phase of the SFO of the last symbol's last FFT input
1249 			sample
1250 
1251 
1252 
1253 			12 bits, signed 6.6. 6 bits integer to cover -66.7ns to
1254 			66.7ns, and 6 bits fraction to provide a resolution of
1255 			0.03ns
1256 
1257 
1258 
1259 			clock unit is 480MHz
1260 
1261 			<legal all>
1262 */
1263 #define RX_LOCATION_INFO_6_SFO_PHASE_PKT_END_OFFSET                  0x00000018
1264 #define RX_LOCATION_INFO_6_SFO_PHASE_PKT_END_LSB                     12
1265 #define RX_LOCATION_INFO_6_SFO_PHASE_PKT_END_MASK                    0x00fff000
1266 
1267 /* Description		RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8
1268 
1269 			The high 8 bits of the 40 bits pointer pointed to the
1270 			external RTT channel information buffer
1271 
1272 
1273 
1274 			8 bits
1275 
1276 			<legal all>
1277 */
1278 #define RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8_OFFSET       0x00000018
1279 #define RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8_LSB          24
1280 #define RX_LOCATION_INFO_6_RTT_CHE_BUFFER_POINTER_HIGH8_MASK         0xff000000
1281 
1282 /* Description		RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32
1283 
1284 			The low 32 bits of the 40 bits pointer pointed to the
1285 			external RTT channel information buffer
1286 
1287 
1288 
1289 			32 bits
1290 
1291 			<legal all>
1292 */
1293 #define RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32_OFFSET       0x0000001c
1294 #define RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32_LSB          0
1295 #define RX_LOCATION_INFO_7_RTT_CHE_BUFFER_POINTER_LOW32_MASK         0xffffffff
1296 
1297 /* Description		RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT
1298 
1299 			CFO measurement. Needed for passive locationing
1300 
1301 
1302 
1303 			14 bits, signed 1.13. 13 bits fraction to provide a
1304 			resolution of 153 Hz
1305 
1306 
1307 
1308 			In units of cycles/800 ns
1309 
1310 			<legal all>
1311 */
1312 #define RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT_OFFSET                0x00000020
1313 #define RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT_LSB                   0
1314 #define RX_LOCATION_INFO_8_RTT_CFO_MEASUREMENT_MASK                  0x00003fff
1315 
1316 /* Description		RX_LOCATION_INFO_8_RTT_CHAN_SPREAD
1317 
1318 			Channel delay spread measurement. Needed for selecting
1319 			GI length
1320 
1321 
1322 
1323 			8 bits, unsigned. At 25 ns step. Can represent up to
1324 			6375 ns
1325 
1326 
1327 
1328 			In units of cycles @ 40 MHz
1329 
1330 			<legal all>
1331 */
1332 #define RX_LOCATION_INFO_8_RTT_CHAN_SPREAD_OFFSET                    0x00000020
1333 #define RX_LOCATION_INFO_8_RTT_CHAN_SPREAD_LSB                       14
1334 #define RX_LOCATION_INFO_8_RTT_CHAN_SPREAD_MASK                      0x003fc000
1335 
1336 /* Description		RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL
1337 
1338 			Indicate which timing backoff value is used
1339 
1340 
1341 
1342 			<enum 0 timing_backoff_low_rssi>
1343 
1344 			<enum 1 timing_backoff_mid_rssi>
1345 
1346 			<enum 2 timing_backoff_high_rssi>
1347 
1348 			<enum 3 reserved>
1349 
1350 			<legal all>
1351 */
1352 #define RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL_OFFSET             0x00000020
1353 #define RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL_LSB                22
1354 #define RX_LOCATION_INFO_8_RTT_TIMING_BACKOFF_SEL_MASK               0x00c00000
1355 
1356 /* Description		RX_LOCATION_INFO_8_RESERVED_8
1357 
1358 			<legal 0>
1359 */
1360 #define RX_LOCATION_INFO_8_RESERVED_8_OFFSET                         0x00000020
1361 #define RX_LOCATION_INFO_8_RESERVED_8_LSB                            24
1362 #define RX_LOCATION_INFO_8_RESERVED_8_MASK                           0x7f000000
1363 
1364 /* Description		RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID
1365 
1366 			<enum 0 rx_location_info_is_not_valid>
1367 
1368 			<enum 1 rx_location_info_is_valid>
1369 
1370 			<legal all>
1371 */
1372 #define RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID_OFFSET             0x00000020
1373 #define RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID_LSB                31
1374 #define RX_LOCATION_INFO_8_RX_LOCATION_INFO_VALID_MASK               0x80000000
1375 
1376 
1377 #endif // _RX_LOCATION_INFO_H_
1378