1 /*
2  * Copyright (c) 2017 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 #ifndef _RX_PPDU_START_H_
20 #define _RX_PPDU_START_H_
21 #if !defined(__ASSEMBLER__)
22 #endif
23 
24 
25 // ################ START SUMMARY #################
26 //
27 //	Dword	Fields
28 //	0	phy_ppdu_id[15:0], reserved_15[31:16]
29 //	1	sw_phy_meta_data[31:0]
30 //	2	ppdu_start_timestamp[31:0]
31 //
32 // ################ END SUMMARY #################
33 
34 #define NUM_OF_DWORDS_RX_PPDU_START 3
35 
36 struct rx_ppdu_start {
37              uint32_t phy_ppdu_id                     : 16, //[15:0]
38                       reserved_15                     : 16; //[31:16]
39              uint32_t sw_phy_meta_data                : 32; //[31:0]
40              uint32_t ppdu_start_timestamp            : 32; //[31:0]
41 };
42 
43 /*
44 
45 phy_ppdu_id
46 
47 			A ppdu counter value that PHY increments for every PPDU
48 			received. The counter value wraps around
49 
50 			<legal all>
51 
52 reserved_15
53 
54 			Reserved
55 
56 			<legal 0>
57 
58 sw_phy_meta_data
59 
60 			SW programmed Meta data provided by the PHY.
61 
62 
63 
64 			Can be used for SW to indicate the channel the device is
65 			on.
66 
67 ppdu_start_timestamp
68 
69 			Timestamp that indicates when the PPDU that contained
70 			this MPDU started on the medium.
71 
72 
73 
74 			The timestamp is captured by the PHY ????TODO: Is this
75 			comment correct ?
76 
77 			<legal all>
78 */
79 
80 
81 /* Description		RX_PPDU_START_0_PHY_PPDU_ID
82 
83 			A ppdu counter value that PHY increments for every PPDU
84 			received. The counter value wraps around
85 
86 			<legal all>
87 */
88 #define RX_PPDU_START_0_PHY_PPDU_ID_OFFSET                           0x00000000
89 #define RX_PPDU_START_0_PHY_PPDU_ID_LSB                              0
90 #define RX_PPDU_START_0_PHY_PPDU_ID_MASK                             0x0000ffff
91 
92 /* Description		RX_PPDU_START_0_RESERVED_15
93 
94 			Reserved
95 
96 			<legal 0>
97 */
98 #define RX_PPDU_START_0_RESERVED_15_OFFSET                           0x00000000
99 #define RX_PPDU_START_0_RESERVED_15_LSB                              16
100 #define RX_PPDU_START_0_RESERVED_15_MASK                             0xffff0000
101 
102 /* Description		RX_PPDU_START_1_SW_PHY_META_DATA
103 
104 			SW programmed Meta data provided by the PHY.
105 
106 
107 
108 			Can be used for SW to indicate the channel the device is
109 			on.
110 */
111 #define RX_PPDU_START_1_SW_PHY_META_DATA_OFFSET                      0x00000004
112 #define RX_PPDU_START_1_SW_PHY_META_DATA_LSB                         0
113 #define RX_PPDU_START_1_SW_PHY_META_DATA_MASK                        0xffffffff
114 
115 /* Description		RX_PPDU_START_2_PPDU_START_TIMESTAMP
116 
117 			Timestamp that indicates when the PPDU that contained
118 			this MPDU started on the medium.
119 
120 
121 
122 			The timestamp is captured by the PHY ????TODO: Is this
123 			comment correct ?
124 
125 			<legal all>
126 */
127 #define RX_PPDU_START_2_PPDU_START_TIMESTAMP_OFFSET                  0x00000008
128 #define RX_PPDU_START_2_PPDU_START_TIMESTAMP_LSB                     0
129 #define RX_PPDU_START_2_PPDU_START_TIMESTAMP_MASK                    0xffffffff
130 
131 
132 #endif // _RX_PPDU_START_H_
133