xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/ce/ce_assignment.h (revision 1f55ed1a9f5050d8da228aa8dd3fff7c0242aa71)
1 /*
2  * Copyright (c) 2014-2019 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 /*
20  * Implementation of the Host-side Host InterFace (HIF) API
21  * for a Host/Target interconnect using Copy Engines over PCIe.
22  */
23 
24 #ifndef __HIF_PCI_INTERNAL_H__
25 #define __HIF_PCI_INTERNAL_H__
26 
27 #ifndef CONFIG_WIN
28 #ifndef PEER_CACHEING_HOST_ENABLE
29 #define PEER_CACHEING_HOST_ENABLE 0
30 #endif
31 #endif
32 
33 #define HIF_PCI_DEBUG   ATH_DEBUG_MAKE_MODULE_MASK(0)
34 #define HIF_PCI_IPA_UC_ASSIGNED_CE  5
35 
36 #if defined(WLAN_DEBUG) || defined(DEBUG)
37 static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = {
38 	{HIF_PCI_DEBUG, "hif_pci"},
39 };
40 
41 ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface",
42 				ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO,
43 				ATH_DEBUG_DESCRIPTION_COUNT
44 					 (g_hif_debug_description),
45 				 g_hif_debug_description);
46 #endif
47 
48 #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
49 /* globals are initialized to 0 by the compiler */;
50 spinlock_t pcie_access_log_lock;
51 unsigned int pcie_access_log_seqnum;
52 struct HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM];
53 static void hif_target_dump_access_log(void);
54 #endif
55 
56 /*
57  * Host software's Copy Engine configuration.
58  * This table is derived from the CE_PCI TABLE, above.
59  */
60 #ifdef BIG_ENDIAN_HOST
61 #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA
62 #else
63 #define CE_ATTR_FLAGS 0
64 #endif
65 
66 /* Maximum number of Copy Engine's supported */
67 #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048
68 #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096
69 
70 #define EPPING_CE_FLAGS_POLL \
71 	(CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS)
72 
73 #ifdef CONFIG_WIN
74 #define PIPEDIR_INOUT_H2H 4
75 #endif
76 
77 #define CE_ATTR_DIAG_FLAGS \
78 	(CE_ATTR_FLAGS | CE_ATTR_DIAG)
79 
80 #ifdef QCN7605_SUPPORT
81 
82 #define QCN7605_CE_COUNT 9
83 static struct CE_attr host_ce_config_wlan_qcn7605[] = {
84 	/* host->target HTC control and raw streams & WMI Control*/
85 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
86 	/* target->host HTT + HTC control */
87 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
88 	/* target->host WMI */
89 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
90 	/* target->host HTT */
91 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
92 	/* host->target HTT */
93 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
94 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
95 #ifdef IPA_OFFLOAD
96 	/* ipa_uc->target HTC control */
97 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
98 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
99 #else
100 	/* unused */
101 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
102 #endif
103 	/* Target autonomous HIF_memcpy */
104 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
105 	/* target->host PKTLOG */
106 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
107 #ifdef IPA_OFFLOAD
108 	/* Target to uMC */
109 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
110 #else
111 	/* target->host HTT*/
112 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
113 #endif
114 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
115 };
116 
117 static struct CE_pipe_config target_ce_config_wlan_qcn7605[] = {
118 	/* host->target HTC control and raw streams */
119 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
120 	/* target->host HTT */
121 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
122 	/* target->host WMI  + HTC control */
123 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
124 	/* target->host HTT */
125 	{ /* CE3 */ 3, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
126 	/* host->target HTT */
127 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
128 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
129 	/* NB: 50% of src nentries, since tx has 2 frags */
130 #ifdef IPA_OFFLOAD
131 	/* ipa_uc->target */
132 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
133 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
134 #else
135 	/* unused */
136 	{ /* CE5 */ 5, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
137 #endif
138 	/* Reserved for target autonomous HIF_memcpy */
139 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
140 	/* Target -> host PKTLOG */
141 	{ /* CE7 */ 7, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
142 #ifdef IPA_OFFLOAD
143 	/* CE8 used only by IPA */
144 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
145 #else
146 	/* target->host HTT*/
147 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
148 #endif
149 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
150 };
151 #endif
152 
153 #ifdef QCA_WIFI_3_0
154 static struct CE_attr host_ce_config_wlan[] = {
155 	/* host->target HTC control and raw streams */
156 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
157 	/* target->host HTT + HTC control */
158 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
159 	/* target->host WMI */
160 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
161 	/* host->target WMI */
162 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
163 	/* host->target HTT */
164 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
165 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
166 	/* ipa_uc->target HTC control */
167 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
168 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
169 	/* Target autonomous HIF_memcpy */
170 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
171 	/* ce_diag, the Diagnostic Window */
172 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
173 	/* Target to uMC */
174 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
175 	/* target->host HTT */
176 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
177 	/* target->host HTT */
178 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
179 	/* target -> host PKTLOG */
180 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
181 };
182 
183 static struct CE_pipe_config target_ce_config_wlan[] = {
184 	/* host->target HTC control and raw streams */
185 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
186 	/* target->host HTT */
187 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
188 	/* target->host WMI  + HTC control */
189 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
190 	/* host->target WMI */
191 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
192 	/* host->target HTT */
193 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
194 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
195 	/* NB: 50% of src nentries, since tx has 2 frags */
196 	/* ipa_uc->target */
197 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
198 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
199 	/* Reserved for target autonomous HIF_memcpy */
200 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
201 	/* CE7 used only by Host */
202 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
203 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
204 	/* CE8 used only by IPA */
205 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
206 	/* CE9 target->host HTT */
207 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
208 	/* CE10 target->host HTT */
209 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
210 	/* Target -> host PKTLOG */
211 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
212 };
213 
214 #ifdef WLAN_FEATURE_EPPING
215 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
216 	/* host->target HTC control and raw streams */
217 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
218 	/* target->host EP-ping */
219 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
220 	/* target->host EP-ping */
221 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
222 	/* host->target EP-ping */
223 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
224 	/* host->target EP-ping */
225 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
226 	/* EP-ping heartbeat */
227 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
228 	/* unused */
229 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
230 	/* ce_diag, the Diagnostic Window */
231 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
232 };
233 
234 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
235 	/* host->target HTC control and raw streams */
236 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
237 	/* target->host EP-ping */
238 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
239 	/* target->host EP-ping */
240 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
241 	/* host->target EP-ping */
242 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
243 	/* host->target EP-ping */
244 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
245 	/* EP-ping heartbeat */
246 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
247 	/* unused */
248 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
249 	/* ce_diag, the Diagnostic Window */
250 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
251 };
252 /*
253  * EP-ping firmware's CE configuration
254  */
255 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
256 	/* host->target HTC control and raw streams */
257 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
258 	/* target->host EP-ping */
259 	{ /* CE1 */ 1, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
260 	/* target->host EP-ping */
261 	{ /* CE2 */ 2, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
262 	/* host->target EP-ping */
263 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
264 	/* host->target EP-ping */
265 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
266 	/* EP-ping heartbeat */
267 	{ /* CE5 */ 5, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
268 	/* unused */
269 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
270 	/* CE7 used only by Host */
271 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
272 	/* CE8 used only by IPA */
273 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
274 };
275 #endif
276 #else
277 static struct CE_attr host_ce_config_wlan[] = {
278 	/* host->target HTC control and raw streams */
279 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16,  256, 0, NULL,},
280 	/* target->host HTT + HTC control */
281 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
282 	/* target->host WMI */
283 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
284 	/* host->target WMI */
285 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
286 	/* host->target HTT */
287 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
288 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
289 	/* ipa_uc->target HTC control */
290 	{ /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
291 		1024, 512, 0, NULL,},
292 	/* Target autonomous HIF_memcpy */
293 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
294 	/* ce_diag, the Diagnostic Window */
295 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR),
296 		0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
297 };
298 
299 static struct CE_pipe_config target_ce_config_wlan[] = {
300 	/* host->target HTC control and raw streams */
301 	{ /* CE0 */ 0, PIPEDIR_OUT, 32,  256, CE_ATTR_FLAGS, 0,},
302 	/* target->host HTT + HTC control */
303 	{ /* CE1 */ 1, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
304 	/* target->host WMI */
305 	{ /* CE2 */ 2, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
306 	/* host->target WMI */
307 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
308 	/* host->target HTT */
309 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
310 	/* NB: 50% of src nentries, since tx has 2 frags */
311 	/* ipa_uc->target HTC control */
312 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64, CE_ATTR_FLAGS, 0,},
313 	/* Reserved for target autonomous HIF_memcpy */
314 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,},
315 	/* CE7 used only by Host */
316 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
317 	/* CE8 used only by IPA */
318 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
319 };
320 
321 #ifdef WLAN_FEATURE_EPPING
322 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
323 	/* host->target HTC control and raw streams */
324 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
325 	/* target->host EP-ping */
326 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
327 	/* target->host EP-ping */
328 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
329 	/* host->target EP-ping */
330 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
331 	/* host->target EP-ping */
332 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
333 	/* EP-ping heartbeat */
334 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
335 	/* unused */
336 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
337 	/* ce_diag, the Diagnostic Window */
338 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
339 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
340 	/* The following CEs are not being used yet */
341 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
342 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
343 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
344 };
345 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
346 	/* host->target HTC control and raw streams */
347 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
348 	/* target->host EP-ping */
349 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
350 	/* target->host EP-ping */
351 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
352 	/* host->target EP-ping */
353 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
354 	/* host->target EP-ping */
355 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
356 	/* EP-ping heartbeat */
357 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
358 	/* unused */
359 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
360 	/* ce_diag, the Diagnostic Window */
361 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
362 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
363 	/* The following CEs are not being used yet */
364 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
365 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
366 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
367 };
368 /*
369  * EP-ping firmware's CE configuration
370  */
371 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
372 	/* host->target HTC control and raw streams */
373 	{ /* CE0 */ 0, PIPEDIR_OUT, 16,   256, CE_ATTR_FLAGS, 0,},
374 	/* target->host EP-ping */
375 	{ /* CE1 */ 1, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
376 	/* target->host EP-ping */
377 	{ /* CE2 */ 2, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
378 	/* host->target EP-ping */
379 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
380 	/* host->target EP-ping */
381 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
382 	/* EP-ping heartbeat */
383 	{ /* CE5 */ 5, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
384 	/* unused */
385 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
386 	/* CE7 used only by Host */
387 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
388 	/* CE8 used only by IPA */
389 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
390 	{ /* CE9 */ 9, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
391 	{ /* CE10 */ 10, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
392 	{ /* CE11 */ 11, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
393 };
394 #endif
395 #endif
396 
397 static struct CE_attr host_ce_config_wlan_ar9888[] = {
398 	/* host->target HTC control and raw streams */
399 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
400 	/* target->host BMI + HTC control */
401 	/* could be moved to share CE3 */
402 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
403 	/* target->host WMI */
404 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
405 	/* host->target WMI */
406 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
407 	/* host->target HTT */
408 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
409 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
410 #ifdef WLAN_FEATURE_FASTPATH
411 	/* target->host HTT messages */
412 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
413 #else   /* WLAN_FEATURE_FASTPATH */
414 	/* unused */
415 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
416 #endif  /* WLAN_FEATURE_FASTPATH */
417 	/* Target autonomous HIF_memcpy */
418 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
419 	/* ce_diag, the Diagnostic Window */
420 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
421 	/* Target autonomous HIF_memcpy */
422 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
423 };
424 
425 static struct CE_attr host_ce_config_wlan_ar900b[] = {
426 	/* host->target HTC control and raw streams */
427 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
428 	/* target->host BMI + HTC control */
429 	/* could be moved to share CE3 */
430 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
431 	/* target->host WMI */
432 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
433 	/* host->target WMI */
434 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
435 	/* host->target HTT */
436 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
437 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
438 #ifdef WLAN_FEATURE_FASTPATH
439 	/* target->host HTT messages */
440 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
441 #else   /* WLAN_FEATURE_FASTPATH */
442 	/* unused */
443 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
444 #endif  /* WLAN_FEATURE_FASTPATH */
445 	/* Target autonomous HIF_memcpy */
446 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
447 	/* ce_diag, the Diagnostic Window */
448 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
449 	/* target->host pktlog */
450 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
451 	/* Target autonomous HIF_memcpy */
452 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
453 	/* Target autonomous HIF_memcpy */
454 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
455 	/* Target autonomous HIF_memcpy */
456 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
457 };
458 
459 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = {
460 	/* host->target HTC control and raw streams */
461 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
462 	/* could be moved to share CE3 */
463 #ifdef WLAN_FEATURE_FASTPATH
464 	/* target->host BMI + HTC control */
465 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
466 #else
467 	/* target->host BMI + HTC control */
468 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
469 #endif
470 	/* target->host WMI */
471 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
472 	/* host->target WMI */
473 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
474 	/* host->target HTT */
475 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
476 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
477 #ifdef WLAN_FEATURE_FASTPATH
478 	/* target->host HTT messages */
479 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
480 #else   /* WLAN_FEATURE_FASTPATH */
481 	/* unused */
482 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
483 #endif  /* WLAN_FEATURE_FASTPATH */
484 	/* Target autonomous HIF_memcpy */
485 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
486 	/* ce_diag, the Diagnostic Window */
487 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
488 	/* Target autonomous HIF_memcpy */
489 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
490 };
491 
492 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = {
493 	/* host->target HTC control and raw streams */
494 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
495 	/* could be moved to share CE3 */
496 #ifdef WLAN_FEATURE_FASTPATH
497 	/* target->host BMI + HTC control */
498 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
499 #else
500 	/* target->host BMI + HTC control */
501 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
502 #endif
503 	/* target->host WMI */
504 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
505 	/* host->target WMI */
506 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
507 	/* host->target HTT */
508 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
509 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
510 #ifdef WLAN_FEATURE_FASTPATH
511 	/* target->host HTT messages */
512 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
513 #else   /* WLAN_FEATURE_FASTPATH */
514 	/* unused */
515 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
516 #endif  /* WLAN_FEATURE_FASTPATH */
517 	/* Target autonomous HIF_memcpy */
518 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
519 	/* ce_diag, the Diagnostic Window */
520 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
521 	/* target->host pktlog */
522 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
523 	/* Target autonomous HIF_memcpy */
524 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
525 	/* Target autonomous HIF_memcpy */
526 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
527 	/* Target autonomous HIF_memcpy */
528 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
529 };
530 
531 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = {
532 	/* host->target HTC control and raw streams */
533 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
534 	/* could be moved to share CE3 */
535 #ifdef WLAN_FEATURE_FASTPATH
536 	/* target->host BMI + HTC control */
537 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
538 #else
539 	/* target->host BMI + HTC control */
540 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
541 #endif
542 	/* target->host WMI */
543 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
544 	/* host->target WMI */
545 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
546 	/* host->target HTT */
547 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
548 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
549 #ifdef WLAN_FEATURE_FASTPATH
550 	/* target->host HTT messages */
551 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
552 #else   /* WLAN_FEATURE_FASTPATH */
553 	/* unused */
554 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
555 #endif  /* WLAN_FEATURE_FASTPATH */
556 	/* Target autonomous HIF_memcpy */
557 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
558 	/* ce_diag, the Diagnostic Window */
559 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
560 	/* target->host pktlog */
561 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
562 	/* Target autonomous HIF_memcpy */
563 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
564 	/* Target autonomous HIF_memcpy */
565 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
566 	/* Target autonomous HIF_memcpy */
567 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
568 };
569 
570 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
571 	/* host->target HTC control and raw streams */
572 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
573 	/* target->host HTC control */
574 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
575 	/* target->host WMI */
576 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
577 	/* host->target WMI */
578 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
579 	/* host->target HTT */
580 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
581 	/* NB: 50% of src nentries, since tx has 2 frags */
582 #ifdef WLAN_FEATURE_FASTPATH
583 	/* target->host HTT */
584 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
585 #else
586 	/* unused */
587 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
588 #endif
589 	/* Reserved for target autonomous HIF_memcpy */
590 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
591 	/* CE7 used only by Host */
592 };
593 
594 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
595 	/* host->target HTC control and raw streams */
596 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
597 	/* target->host HTC control */
598 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
599 	/* target->host WMI */
600 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
601 	/* host->target WMI */
602 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
603 	/* host->target HTT */
604 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
605 	/* NB: 50% of src nentries, since tx has 2 frags */
606 #ifdef WLAN_FEATURE_FASTPATH
607 	/* target->host HTT */
608 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
609 #else
610 	/* unused */
611 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
612 #endif
613 	/* Reserved for target autonomous HIF_memcpy */
614 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
615 	/* CE7 used only by Host */
616 	{ /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, },
617 	{ /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
618 		/* target->host packtlog */
619 		| CE_ATTR_DISABLE_INTR, 0, },
620 #if PEER_CACHEING_HOST_ENABLE
621 	/* target autonomous qcache memcpy */
622 	{ /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
623 		CE_ATTR_DISABLE_INTR, 0, },
624 #endif
625 };
626 
627 static struct CE_attr host_ce_config_wlan_qca8074[] = {
628 	/* host->target HTC control and raw streams */
629 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
630 	/* target->host HTT + HTC control */
631 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
632 	/* target->host WMI */
633 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
634 	/* host->target WMI (mac0) */
635 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
636 	/* host->target HTT */
637 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
638 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
639 	/* target -> host PKTLOG */
640 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
641 	/* Target autonomous HIF_memcpy */
642 	{ /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0,
643 		0, 0, NULL,},
644 	/* host->target WMI (mac1) */
645 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
646 	/* Target to uMC */
647 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
648 	/* host->target WMI (mac2) */
649 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 32,  2048, 0, NULL,},
650 	/* target->host HTT */
651 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
652 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
653 };
654 
655 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = {
656 	/* host->target HTC control and raw streams */
657 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
658 	/* target->host HTT */
659 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
660 	/* target->host WMI  + HTC control */
661 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
662 	/* host->target WMI */
663 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
664 	/* host->target HTT */
665 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
666 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
667 	/* NB: 50% of src nentries, since tx has 2 frags */
668 	/* Target -> host PKTLOG */
669 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, 0, 0,},
670 	/* Reserved for target autonomous HIF_memcpy */
671 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
672 	/* CE7 used only by Host */
673 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
674 		8192, 0,},
675 	/* CE8 used only by IPA */
676 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
677 	/* CE9 target->host HTT */
678 	{ /* CE9 */ 9, PIPEDIR_OUT,  32, 2048, 8192, 0,},
679 	/* CE10 target->host HTT */
680 	{ /* CE10 */ 10, PIPEDIR_INOUT_H2H,  0, 0, 0, 0,},
681 	{/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
682 };
683 
684 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = {
685 	/* host->target HTC control and raw streams */
686 	{ /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,},
687 	/* target->host HTT + HTC control */
688 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 512, NULL,},
689 	/* target->host WMI */
690 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 256, NULL,},
691 	/* host->target WMI (mac0) */
692 	{ /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
693 	/* host->target HTT */
694 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
695 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
696 	/* target -> host PKTLOG */
697 	{ /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
698 	/* Target autonomous HIF_memcpy */
699 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
700 	/* host->target WMI (mac1) */
701 	{ /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
702 	/* Target to uMC */
703 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
704 	/* host->target WMI (mac2) */
705 	{ /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32,  2048, 0, NULL,},
706 	/* target->host HTT */
707 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
708 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
709 };
710 
711 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = {
712 	/* host->target HTC control and raw streams */
713 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
714 	/* target->host HTT */
715 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
716 	/* target->host WMI  + HTC control */
717 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
718 	/* host->target WMI */
719 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
720 	/* host->target HTT */
721 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
722 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
723 	/* NB: 50% of src nentries, since tx has 2 frags */
724 	/* ipa_uc->target */
725 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
726 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
727 	/* Reserved for target autonomous HIF_memcpy */
728 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
729 	/* CE7 used only by Host */
730 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
731 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
732 	/* CE8 used only by IPA */
733 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
734 	/* CE9 target->host HTT */
735 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
736 	/* CE10 target->host HTT */
737 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
738 	/* Target -> host PKTLOG */
739 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
740 };
741 
742 #define QCA_6290_CE_COUNT 9
743 #ifdef CONFIG_WIN
744 static struct CE_attr host_ce_config_wlan_qca6290[] = {
745 	/* host->target HTC control and raw streams */
746 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
747 	/* target->host HTT + HTC control */
748 	{ /* CE1 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
749 		512, NULL,},
750 	/* target->host WMI */
751 	{ /* CE2 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
752 		32, NULL,},
753 	/* host->target WMI */
754 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
755 	/* host->target HTT */
756 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
757 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
758 	/* target -> host PKTLOG */
759 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
760 		512, NULL,},
761 	/* Target autonomous HIF_memcpy */
762 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
763 	/* host->target WMI (mac1) */
764 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
765 	/* Reserved for target */
766 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
767 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
768 };
769 
770 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
771 	/* host->target HTC control and raw streams */
772 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
773 	/* target->host HTT */
774 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
775 	/* target->host WMI  + HTC control */
776 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
777 	/* host->target WMI */
778 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
779 	/* host->target HTT */
780 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
781 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
782 	/* Target -> host PKTLOG */
783 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
784 	/* Reserved for target autonomous HIF_memcpy */
785 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
786 	/* CE7 used only by Host */
787 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
788 		8192, 0,},
789 	/* Reserved for target */
790 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
791 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
792 };
793 #else
794 static struct CE_attr host_ce_config_wlan_qca6290[] = {
795 	/* host->target HTC control and raw streams */
796 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
797 	/* target->host HTT + HTC control */
798 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
799 	/* target->host WMI */
800 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
801 	/* host->target WMI */
802 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
803 	/* host->target HTT */
804 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
805 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
806 	/* target -> host PKTLOG */
807 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
808 	/* Target autonomous HIF_memcpy */
809 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
810 	/* ce_diag, the Diagnostic Window */
811 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
812 		2, DIAG_TRANSFER_LIMIT, 2, NULL,},
813 	/* Reserved for target */
814 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
815 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
816 };
817 
818 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
819 	/* host->target HTC control and raw streams */
820 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
821 	/* target->host HTT */
822 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
823 	/* target->host WMI  + HTC control */
824 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
825 	/* host->target WMI */
826 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
827 	/* host->target HTT */
828 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
829 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
830 	/* Target -> host PKTLOG */
831 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
832 	/* Reserved for target autonomous HIF_memcpy */
833 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
834 	/* CE7 used only by Host */
835 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
836 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
837 	/* Reserved for target */
838 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
839 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
840 };
841 #endif
842 
843 #define QCA_6390_CE_COUNT 9
844 static struct CE_attr host_ce_config_wlan_qca6390[] = {
845 	/* host->target HTC control and raw streams */
846 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
847 	/* target->host HTT + HTC control */
848 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
849 	/* target->host WMI */
850 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
851 	/* host->target WMI */
852 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
853 	/* host->target HTT */
854 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
855 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
856 	/* target -> host PKTLOG */
857 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
858 	/* Target autonomous HIF_memcpy */
859 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
860 	/* ce_diag, the Diagnostic Window */
861 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
862 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
863 	/* Reserved for target */
864 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
865 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
866 };
867 
868 static struct CE_pipe_config target_ce_config_wlan_qca6390[] = {
869 	/* host->target HTC control and raw streams */
870 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
871 	/* target->host HTT */
872 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
873 	/* target->host WMI  + HTC control */
874 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
875 	/* host->target WMI */
876 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
877 	/* host->target HTT */
878 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
879 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
880 	/* Target -> host PKTLOG */
881 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
882 	/* Reserved for target autonomous HIF_memcpy */
883 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
884 	/* CE7 used only by Host */
885 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
886 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
887 	/* Reserved for target */
888 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
889 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
890 };
891 #endif /* __HIF_PCI_INTERNAL_H__ */
892