xref: /wlan-driver/fw-api/hw/qca5332/ru_allocation_160_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 
2 /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
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 
18 
19 
20 
21 
22 
23 
24 
25 
26 #ifndef _RU_ALLOCATION_160_INFO_H_
27 #define _RU_ALLOCATION_160_INFO_H_
28 #if !defined(__ASSEMBLER__)
29 #endif
30 
31 #define NUM_OF_DWORDS_RU_ALLOCATION_160_INFO 4
32 
33 
34 struct ru_allocation_160_info {
35 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
36              uint32_t ru_allocation_band0_0                                   :  9, // [8:0]
37                       ru_allocation_band0_1                                   :  9, // [17:9]
38                       reserved_0a                                             :  6, // [23:18]
39                       ru_allocations_01_subband80_mask                        :  4, // [27:24]
40                       ru_allocations_23_subband80_mask                        :  4; // [31:28]
41              uint32_t ru_allocation_band0_2                                   :  9, // [8:0]
42                       ru_allocation_band0_3                                   :  9, // [17:9]
43                       reserved_1a                                             : 14; // [31:18]
44              uint32_t ru_allocation_band1_0                                   :  9, // [8:0]
45                       ru_allocation_band1_1                                   :  9, // [17:9]
46                       reserved_2a                                             : 14; // [31:18]
47              uint32_t ru_allocation_band1_2                                   :  9, // [8:0]
48                       ru_allocation_band1_3                                   :  9, // [17:9]
49                       reserved_3a                                             : 14; // [31:18]
50 #else
51              uint32_t ru_allocations_23_subband80_mask                        :  4, // [31:28]
52                       ru_allocations_01_subband80_mask                        :  4, // [27:24]
53                       reserved_0a                                             :  6, // [23:18]
54                       ru_allocation_band0_1                                   :  9, // [17:9]
55                       ru_allocation_band0_0                                   :  9; // [8:0]
56              uint32_t reserved_1a                                             : 14, // [31:18]
57                       ru_allocation_band0_3                                   :  9, // [17:9]
58                       ru_allocation_band0_2                                   :  9; // [8:0]
59              uint32_t reserved_2a                                             : 14, // [31:18]
60                       ru_allocation_band1_1                                   :  9, // [17:9]
61                       ru_allocation_band1_0                                   :  9; // [8:0]
62              uint32_t reserved_3a                                             : 14, // [31:18]
63                       ru_allocation_band1_3                                   :  9, // [17:9]
64                       ru_allocation_band1_2                                   :  9; // [8:0]
65 #endif
66 };
67 
68 
69 /* Description		RU_ALLOCATION_BAND0_0
70 
71 			Field not used for MIMO
72 
73 			Indicates RU arrangement in frequency domain. RU allocated
74 			 for MU-MIMO, and number of users in the MU-MIMO.
75 			0 - valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
76 			EHT_240/EHT_320
77 			1 - valid for HE_80/HE_160 (80+80)/ EHT_80/EHT_160/EHT_240/EHT_320
78 
79 			2 - valid for HE_160 (80+80)/ EHT_160/EHT_240/EHT_320
80 			3 - valid for HE_160 (80+80)/ EHT_160/EHT_240/EHT_320
81 
82 			The four bands are for HE_SIGB0 & B1 respectively or for
83 			 EHT_SIG0, EHT_SIG1, EHT_SIG2 & EHT_SIG3 respectively.
84 
85 			valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
86 			EHT_240/EHT_320 packets and denotes RU-map of the first
87 			20MHz band of HE_SIGB0 or EHT_SIG0
88 			<legal all>
89 */
90 
91 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_0_OFFSET                         0x00000000
92 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_0_LSB                            0
93 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_0_MSB                            8
94 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_0_MASK                           0x000001ff
95 
96 
97 /* Description		RU_ALLOCATION_BAND0_1
98 
99 			Field not used for MIMO
100 
101 			See description of ru_allocation_band0_0
102 
103 			valid for HE_80/HE_160/ EHT_80/EHT_160/EHT_240/EHT_320 packets
104 			 and denotes RU-map of the second 20MHz band of HE_SIGB0
105 			 or EHT_SIG0
106 */
107 
108 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_1_OFFSET                         0x00000000
109 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_1_LSB                            9
110 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_1_MSB                            17
111 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_1_MASK                           0x0003fe00
112 
113 
114 /* Description		RESERVED_0A
115 
116 			<legal 0>
117 */
118 
119 #define RU_ALLOCATION_160_INFO_RESERVED_0A_OFFSET                                   0x00000000
120 #define RU_ALLOCATION_160_INFO_RESERVED_0A_LSB                                      18
121 #define RU_ALLOCATION_160_INFO_RESERVED_0A_MSB                                      23
122 #define RU_ALLOCATION_160_INFO_RESERVED_0A_MASK                                     0x00fc0000
123 
124 
125 /* Description		RU_ALLOCATIONS_01_SUBBAND80_MASK
126 
127 			Field not used for HE
128 
129 			Indicates what 80 MHz subbands 'ru_allocation_band{0, 1}_{0,
130 			1}' are valid for
131 			Bit 0: lowest 80 MHz
132 			Bit 1: 2nd lowest 80 MHz
133 			Bit 2: 2nd highest 80 MHz
134 			Bit 3: highest 80 MHz
135 
136 			In other 80 MHz subbands PHY microcode should override these
137 			 with 'zero-user RU996.'
138 			<legal all>
139 */
140 
141 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_01_SUBBAND80_MASK_OFFSET              0x00000000
142 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_01_SUBBAND80_MASK_LSB                 24
143 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_01_SUBBAND80_MASK_MSB                 27
144 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_01_SUBBAND80_MASK_MASK                0x0f000000
145 
146 
147 /* Description		RU_ALLOCATIONS_23_SUBBAND80_MASK
148 
149 			Field not used for HE
150 
151 			Indicates what 80 MHz subbands 'ru_allocation_band{0, 1}_{2,
152 			3}' are valid for
153 			Bit 0: lowest 80 MHz
154 			Bit 1: 2nd lowest 80 MHz
155 			Bit 2: 2nd highest 80 MHz
156 			Bit 3: highest 80 MHz
157 
158 			In other 80 MHz subbands PHY microcode should override these
159 			 with 'zero-user RU996.'
160 			<legal all>
161 */
162 
163 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_23_SUBBAND80_MASK_OFFSET              0x00000000
164 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_23_SUBBAND80_MASK_LSB                 28
165 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_23_SUBBAND80_MASK_MSB                 31
166 #define RU_ALLOCATION_160_INFO_RU_ALLOCATIONS_23_SUBBAND80_MASK_MASK                0xf0000000
167 
168 
169 /* Description		RU_ALLOCATION_BAND0_2
170 
171 			Field not used for MIMO
172 
173 			See description of ru_allocation_band0_0
174 
175 			valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
176 			 RU-map of the third 20MHz band of HE_SIGB0 or EHT_SIG0
177 */
178 
179 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_2_OFFSET                         0x00000004
180 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_2_LSB                            0
181 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_2_MSB                            8
182 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_2_MASK                           0x000001ff
183 
184 
185 /* Description		RU_ALLOCATION_BAND0_3
186 
187 			Field not used for MIMO
188 
189 			See description of ru_allocation_band0_0
190 
191 			valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
192 			 RU-map of the fourth 20MHz band of HE_SIGB0 or EHT_SIG0
193 
194 */
195 
196 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_3_OFFSET                         0x00000004
197 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_3_LSB                            9
198 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_3_MSB                            17
199 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND0_3_MASK                           0x0003fe00
200 
201 
202 /* Description		RESERVED_1A
203 
204 			<legal 0>
205 */
206 
207 #define RU_ALLOCATION_160_INFO_RESERVED_1A_OFFSET                                   0x00000004
208 #define RU_ALLOCATION_160_INFO_RESERVED_1A_LSB                                      18
209 #define RU_ALLOCATION_160_INFO_RESERVED_1A_MSB                                      31
210 #define RU_ALLOCATION_160_INFO_RESERVED_1A_MASK                                     0xfffc0000
211 
212 
213 /* Description		RU_ALLOCATION_BAND1_0
214 
215 			Field not used for MIMO
216 
217 			See description of ru_allocation_band0_0
218 
219 			valid for HE_40/HE_80/HE_160/ EHT_40/EHT_80/EHT_160/ EHT_240/EHT_320
220 			 packets and denotes RU-map of the first 20MHz band of HE_SIGB1
221 			 or EHT_SIG1
222 */
223 
224 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_0_OFFSET                         0x00000008
225 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_0_LSB                            0
226 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_0_MSB                            8
227 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_0_MASK                           0x000001ff
228 
229 
230 /* Description		RU_ALLOCATION_BAND1_1
231 
232 			Field not used for MIMO
233 
234 			See description of ru_allocation_band0_0
235 
236 			valid for HE_80/HE_160/ EHT_80/EHT_160/EHT_240/EHT_320 packets
237 			 and denotes RU-map of the second 20MHz band of HE_SIGB1
238 			 or EHT_SIG1
239 */
240 
241 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_1_OFFSET                         0x00000008
242 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_1_LSB                            9
243 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_1_MSB                            17
244 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_1_MASK                           0x0003fe00
245 
246 
247 /* Description		RESERVED_2A
248 
249 			<legal 0>
250 */
251 
252 #define RU_ALLOCATION_160_INFO_RESERVED_2A_OFFSET                                   0x00000008
253 #define RU_ALLOCATION_160_INFO_RESERVED_2A_LSB                                      18
254 #define RU_ALLOCATION_160_INFO_RESERVED_2A_MSB                                      31
255 #define RU_ALLOCATION_160_INFO_RESERVED_2A_MASK                                     0xfffc0000
256 
257 
258 /* Description		RU_ALLOCATION_BAND1_2
259 
260 			Field not used for MIMO
261 
262 			See description of ru_allocation_band0_0
263 
264 			valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
265 			 RU-map of the third 20MHz band of HE_SIGB1 or EHT_SIG1
266 */
267 
268 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_2_OFFSET                         0x0000000c
269 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_2_LSB                            0
270 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_2_MSB                            8
271 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_2_MASK                           0x000001ff
272 
273 
274 /* Description		RU_ALLOCATION_BAND1_3
275 
276 			Field not used for MIMO
277 
278 			See description of ru_allocation_band0_0
279 
280 			valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
281 			 RU-map of the fourth 20MHz band of HE_SIGB1 or EHT_SIG1
282 
283 */
284 
285 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_3_OFFSET                         0x0000000c
286 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_3_LSB                            9
287 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_3_MSB                            17
288 #define RU_ALLOCATION_160_INFO_RU_ALLOCATION_BAND1_3_MASK                           0x0003fe00
289 
290 
291 /* Description		RESERVED_3A
292 
293 			<legal 0>
294 */
295 
296 #define RU_ALLOCATION_160_INFO_RESERVED_3A_OFFSET                                   0x0000000c
297 #define RU_ALLOCATION_160_INFO_RESERVED_3A_LSB                                      18
298 #define RU_ALLOCATION_160_INFO_RESERVED_3A_MSB                                      31
299 #define RU_ALLOCATION_160_INFO_RESERVED_3A_MASK                                     0xfffc0000
300 
301 
302 
303 #endif   // RU_ALLOCATION_160_INFO
304