xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/ce/ce_assignment.h (revision ccf6794c7efeda37a9772e5eb4d4dab2ab5af07a)
1 /*
2  * Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /*
21  * Implementation of the Host-side Host InterFace (HIF) API
22  * for a Host/Target interconnect using Copy Engines over PCIe.
23  */
24 
25 #ifndef __HIF_PCI_INTERNAL_H__
26 #define __HIF_PCI_INTERNAL_H__
27 
28 #ifndef PEER_CACHEING_HOST_ENABLE
29 #define PEER_CACHEING_HOST_ENABLE 0
30 #endif
31 
32 #define HIF_PCI_DEBUG   ATH_DEBUG_MAKE_MODULE_MASK(0)
33 #define HIF_PCI_IPA_UC_ASSIGNED_CE  5
34 
35 #if defined(QCA_LOWMEM_CONFIG) || defined(QCA_512M_CONFIG)
36 #define WMI_CE_BUF_SIZE 2048
37 #else
38 /**
39  * WMI_CE_BUF_SIZE = (SKB_SIZE - 64BIT_SH_INFO -
40  *		      NETBUF_FIXED_MIN_HEADROOM - WMI_HEADROOM)
41  * 3520 = (4096 - 384 - 128 - 64)
42  */
43 #define WMI_CE_BUF_SIZE 3520
44 #endif
45 
46 #if defined(WLAN_DEBUG) || defined(DEBUG)
47 static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = {
48 	{HIF_PCI_DEBUG, "hif_pci"},
49 };
50 
51 ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface",
52 				ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO,
53 				ATH_DEBUG_DESCRIPTION_COUNT
54 					 (g_hif_debug_description),
55 				 g_hif_debug_description);
56 #endif
57 
58 #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
59 /* globals are initialized to 0 by the compiler */;
60 spinlock_t pcie_access_log_lock;
61 unsigned int pcie_access_log_seqnum;
62 struct HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM];
63 static void hif_target_dump_access_log(void);
64 #endif
65 
66 /*
67  * Host software's Copy Engine configuration.
68  * This table is derived from the CE_PCI TABLE, above.
69  */
70 #ifdef BIG_ENDIAN_HOST
71 #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA
72 #else
73 #define CE_ATTR_FLAGS 0
74 #endif
75 
76 /* Maximum number of Copy Engine's supported */
77 #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048
78 #define CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6390 256
79 #define CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6490 256
80 #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096
81 #define CE_HTT_H2T_MSG_SRC_NENTRIES_QCN7605 4096
82 
83 #define EPPING_CE_FLAGS_POLL \
84 	(CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS)
85 
86 #define CE_ATTR_DIAG_FLAGS \
87 	(CE_ATTR_FLAGS | CE_ATTR_DIAG)
88 
89 #ifdef ENABLE_CE4_COMP_DISABLE_HTT_HTC_MISC_LIST
90 #define CE4_COMP_HTT_HTC CE_ATTR_FLAGS
91 #else
92 #define CE4_COMP_HTT_HTC (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR)
93 #endif
94 
95 #ifdef QCN7605_SUPPORT
96 
97 #define QCN7605_CE_COUNT 9
98 static struct CE_attr host_ce_config_wlan_qcn7605[] = {
99 	/* host->target HTC control and raw streams & WMI Control*/
100 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
101 	/* target->host HTT + HTC control */
102 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
103 	/* target->host WMI */
104 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
105 	/* target->host HTT */
106 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
107 	/* host->target HTT */
108 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
109 		CE_HTT_H2T_MSG_SRC_NENTRIES_QCN7605, 256, 0, NULL,},
110 #ifdef IPA_OFFLOAD
111 	/* ipa_uc->target HTC control */
112 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
113 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
114 #else
115 	/* unused */
116 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
117 #endif
118 	/* Target autonomous HIF_memcpy */
119 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
120 #ifdef REMOVE_PKT_LOG
121 	/* unused */
122 	{ /* CE7 */ 0, 0, 0, 0, 0, NULL,},
123 #else
124 	/* target->host PKTLOG */
125 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
126 #endif
127 #ifdef IPA_OFFLOAD
128 	/* Target to uMC */
129 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
130 #else
131 	/* target->host HTT*/
132 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
133 #endif
134 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
135 };
136 
137 static struct CE_pipe_config target_ce_config_wlan_qcn7605[] = {
138 	/* host->target HTC control and raw streams */
139 	{ /* CE0 */ 0, PIPEDIR_OUT, 4, 2048, CE_ATTR_FLAGS, 0,},
140 	/* target->host HTT */
141 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
142 	/* target->host WMI  + HTC control */
143 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
144 	/* target->host HTT */
145 	{ /* CE3 */ 3, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
146 	/* host->target HTT */
147 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 256,
148 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
149 	/* NB: 50% of src nentries, since tx has 2 frags */
150 #ifdef IPA_OFFLOAD
151 	/* ipa_uc->target */
152 	{ /* CE5 */ 5, PIPEDIR_OUT, 128, 256,
153 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
154 #else
155 	/* unused */
156 	{ /* CE5 */ 5, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
157 #endif
158 	/* Reserved for target autonomous HIF_memcpy */
159 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
160 #ifdef REMOVE_PKT_LOG
161 	/* unused */
162 	{ /* CE7 */ 7, PIPEDIR_IN,  2, 2048, CE_ATTR_FLAGS, 0,},
163 #else
164 	/* Target -> host PKTLOG */
165 	{ /* CE7 */ 7, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
166 #endif
167 #ifdef IPA_OFFLOAD
168 	/* CE8 used only by IPA */
169 	{ /* CE8 */ 8, PIPEDIR_IN, 128, 4096, CE_ATTR_FLAGS, 0,},
170 #else
171 	/* target->host HTT*/
172 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
173 #endif
174 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
175 };
176 #endif
177 
178 #ifdef QCA_WIFI_3_0
179 static struct CE_attr host_ce_config_wlan[] = {
180 	/* host->target HTC control and raw streams */
181 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
182 	/* target->host HTT + HTC control */
183 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
184 	/* target->host WMI */
185 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
186 	/* host->target WMI */
187 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
188 	/* host->target HTT */
189 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
190 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
191 	/* ipa_uc->target HTC control */
192 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
193 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
194 	/* Target autonomous HIF_memcpy */
195 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
196 	/* ce_diag, the Diagnostic Window */
197 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
198 	/* Target to uMC */
199 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
200 	/* target->host HTT */
201 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
202 	/* target->host HTT */
203 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
204 	/* target -> host PKTLOG */
205 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
206 };
207 
208 static struct CE_pipe_config target_ce_config_wlan[] = {
209 	/* host->target HTC control and raw streams */
210 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
211 	/* target->host HTT */
212 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
213 	/* target->host WMI  + HTC control */
214 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
215 	/* host->target WMI */
216 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
217 	/* host->target HTT */
218 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
219 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
220 	/* NB: 50% of src nentries, since tx has 2 frags */
221 	/* ipa_uc->target */
222 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
223 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
224 	/* Reserved for target autonomous HIF_memcpy */
225 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
226 	/* CE7 used only by Host */
227 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
228 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
229 	/* CE8 used only by IPA */
230 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
231 	/* CE9 target->host HTT */
232 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
233 	/* CE10 target->host HTT */
234 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
235 	/* Target -> host PKTLOG */
236 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
237 };
238 
239 #ifdef WLAN_FEATURE_EPPING
240 #define EPPING_HOST_CE_COUNT 8
241 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
242 	/* host->target HTC control and raw streams */
243 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
244 	/* target->host EP-ping */
245 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
246 	/* target->host EP-ping */
247 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
248 	/* host->target EP-ping */
249 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
250 	/* host->target EP-ping */
251 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
252 	/* EP-ping heartbeat */
253 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
254 	/* unused */
255 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
256 	/* ce_diag, the Diagnostic Window */
257 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
258 };
259 
260 #ifdef QCN7605_SUPPORT
261 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
262 	/* host->target HTC control and raw streams */
263 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
264 	/* target->host EP-ping */
265 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 32, NULL,},
266 	/* target->host EP-ping */
267 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 32, NULL,},
268 	/* host->target EP-ping */
269 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
270 	/* host->target EP-ping */
271 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
272 	/* EP-ping heartbeat */
273 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 16, NULL,},
274 	/* unused */
275 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
276 	/* ce_diag, the Diagnostic Window */
277 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
278 };
279 
280 /*
281  * EP-ping firmware's CE configuration
282  */
283 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
284 	/* host->target HTC control and raw streams */
285 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
286 	/* target->host EP-ping */
287 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
288 	/* target->host EP-ping */
289 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
290 	/* host->target EP-ping */
291 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
292 	/* host->target EP-ping */
293 	{ /* CE4 */ 4, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
294 	/* EP-ping heartbeat */
295 	{ /* CE5 */ 5, PIPEDIR_IN,  16, 2048, CE_ATTR_FLAGS, 0,},
296 	/* unused */
297 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
298 	/* CE7 used only by Host */
299 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
300 	/* CE8 used only by IPA */
301 	{ /* CE8 */ 8, PIPEDIR_IN, 4, 2048, CE_ATTR_FLAGS, 0,}
302 };
303 #else
304 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
305 	/* host->target HTC control and raw streams */
306 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
307 	/* target->host EP-ping */
308 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
309 	/* target->host EP-ping */
310 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
311 	/* host->target EP-ping */
312 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
313 	/* host->target EP-ping */
314 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
315 	/* EP-ping heartbeat */
316 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
317 	/* unused */
318 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
319 	/* ce_diag, the Diagnostic Window */
320 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
321 };
322 /*
323  * EP-ping firmware's CE configuration
324  */
325 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
326 	/* host->target HTC control and raw streams */
327 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
328 	/* target->host EP-ping */
329 	{ /* CE1 */ 1, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
330 	/* target->host EP-ping */
331 	{ /* CE2 */ 2, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
332 	/* host->target EP-ping */
333 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
334 	/* host->target EP-ping */
335 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
336 	/* EP-ping heartbeat */
337 	{ /* CE5 */ 5, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
338 	/* unused */
339 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
340 	/* CE7 used only by Host */
341 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
342 	/* CE8 used only by IPA */
343 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
344 };
345 #endif
346 #endif
347 #else
348 static struct CE_attr host_ce_config_wlan[] = {
349 	/* host->target HTC control and raw streams */
350 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16,  256, 0, NULL,},
351 	/* target->host HTT + HTC control */
352 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
353 	/* target->host WMI */
354 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
355 	/* host->target WMI */
356 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
357 	/* host->target HTT */
358 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
359 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
360 	/* ipa_uc->target HTC control */
361 	{ /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
362 		1024, 512, 0, NULL,},
363 	/* Target autonomous HIF_memcpy */
364 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
365 	/* ce_diag, the Diagnostic Window */
366 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR),
367 		0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
368 };
369 
370 static struct CE_pipe_config target_ce_config_wlan[] = {
371 	/* host->target HTC control and raw streams */
372 	{ /* CE0 */ 0, PIPEDIR_OUT, 32,  256, CE_ATTR_FLAGS, 0,},
373 	/* target->host HTT + HTC control */
374 	{ /* CE1 */ 1, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
375 	/* target->host WMI */
376 	{ /* CE2 */ 2, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
377 	/* host->target WMI */
378 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
379 	/* host->target HTT */
380 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
381 	/* NB: 50% of src nentries, since tx has 2 frags */
382 	/* ipa_uc->target HTC control */
383 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64, CE_ATTR_FLAGS, 0,},
384 	/* Reserved for target autonomous HIF_memcpy */
385 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, 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 };
391 
392 #ifdef WLAN_FEATURE_EPPING
393 #define EPPING_HOST_CE_COUNT 12
394 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
395 	/* host->target HTC control and raw streams */
396 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
397 	/* target->host EP-ping */
398 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
399 	/* target->host EP-ping */
400 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
401 	/* host->target EP-ping */
402 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
403 	/* host->target EP-ping */
404 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
405 	/* EP-ping heartbeat */
406 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
407 	/* unused */
408 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
409 	/* ce_diag, the Diagnostic Window */
410 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
411 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
412 	/* The following CEs are not being used yet */
413 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
414 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
415 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
416 };
417 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
418 	/* host->target HTC control and raw streams */
419 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
420 	/* target->host EP-ping */
421 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
422 	/* target->host EP-ping */
423 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
424 	/* host->target EP-ping */
425 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
426 	/* host->target EP-ping */
427 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
428 	/* EP-ping heartbeat */
429 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
430 	/* unused */
431 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
432 	/* ce_diag, the Diagnostic Window */
433 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
434 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
435 	/* The following CEs are not being used yet */
436 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
437 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
438 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
439 };
440 /*
441  * EP-ping firmware's CE configuration
442  */
443 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
444 	/* host->target HTC control and raw streams */
445 	{ /* CE0 */ 0, PIPEDIR_OUT, 16,   256, CE_ATTR_FLAGS, 0,},
446 	/* target->host EP-ping */
447 	{ /* CE1 */ 1, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
448 	/* target->host EP-ping */
449 	{ /* CE2 */ 2, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
450 	/* host->target EP-ping */
451 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
452 	/* host->target EP-ping */
453 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
454 	/* EP-ping heartbeat */
455 	{ /* CE5 */ 5, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
456 	/* unused */
457 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
458 	/* CE7 used only by Host */
459 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
460 	/* CE8 used only by IPA */
461 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
462 	{ /* CE9 */ 9, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
463 	{ /* CE10 */ 10, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
464 	{ /* CE11 */ 11, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
465 };
466 #endif
467 #endif
468 
469 static struct CE_attr host_ce_config_wlan_ar9888[] = {
470 	/* host->target HTC control and raw streams */
471 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
472 	/* target->host BMI + HTC control */
473 	/* could be moved to share CE3 */
474 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
475 	/* target->host WMI */
476 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
477 	/* host->target WMI */
478 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
479 	/* host->target HTT */
480 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
481 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
482 #ifdef WLAN_FEATURE_FASTPATH
483 	/* target->host HTT messages */
484 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
485 #else   /* WLAN_FEATURE_FASTPATH */
486 	/* unused */
487 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
488 #endif  /* WLAN_FEATURE_FASTPATH */
489 	/* Target autonomous HIF_memcpy */
490 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
491 	/* ce_diag, the Diagnostic Window */
492 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
493 	/* Target autonomous HIF_memcpy */
494 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
495 };
496 
497 static struct CE_attr host_ce_config_wlan_ar900b[] = {
498 	/* host->target HTC control and raw streams */
499 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
500 	/* target->host BMI + HTC control */
501 	/* could be moved to share CE3 */
502 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
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_ar9888[] = {
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 autonomous HIF_memcpy */
561 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
562 };
563 
564 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = {
565 	/* host->target HTC control and raw streams */
566 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
567 	/* could be moved to share CE3 */
568 #ifdef WLAN_FEATURE_FASTPATH
569 	/* target->host BMI + HTC control */
570 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
571 #else
572 	/* target->host BMI + HTC control */
573 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
574 #endif
575 	/* target->host WMI */
576 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
577 	/* host->target WMI */
578 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
579 	/* host->target HTT */
580 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
581 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
582 #ifdef WLAN_FEATURE_FASTPATH
583 	/* target->host HTT messages */
584 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
585 #else   /* WLAN_FEATURE_FASTPATH */
586 	/* unused */
587 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
588 #endif  /* WLAN_FEATURE_FASTPATH */
589 	/* Target autonomous HIF_memcpy */
590 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
591 	/* ce_diag, the Diagnostic Window */
592 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
593 	/* target->host pktlog */
594 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
595 	/* Target autonomous HIF_memcpy */
596 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
597 	/* Target autonomous HIF_memcpy */
598 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
599 	/* Target autonomous HIF_memcpy */
600 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
601 };
602 
603 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = {
604 	/* host->target HTC control and raw streams */
605 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
606 	/* could be moved to share CE3 */
607 #ifdef WLAN_FEATURE_FASTPATH
608 	/* target->host BMI + HTC control */
609 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
610 #else
611 	/* target->host BMI + HTC control */
612 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
613 #endif
614 	/* target->host WMI */
615 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
616 	/* host->target WMI */
617 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
618 	/* host->target HTT */
619 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
620 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
621 #ifdef WLAN_FEATURE_FASTPATH
622 	/* target->host HTT messages */
623 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
624 #else   /* WLAN_FEATURE_FASTPATH */
625 	/* unused */
626 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
627 #endif  /* WLAN_FEATURE_FASTPATH */
628 	/* Target autonomous HIF_memcpy */
629 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
630 	/* ce_diag, the Diagnostic Window */
631 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
632 	/* target->host pktlog */
633 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
634 	/* Target autonomous HIF_memcpy */
635 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
636 	/* Target autonomous HIF_memcpy */
637 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
638 	/* Target autonomous HIF_memcpy */
639 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
640 };
641 
642 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
643 	/* host->target HTC control and raw streams */
644 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
645 	/* target->host HTC control */
646 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
647 	/* target->host WMI */
648 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
649 	/* host->target WMI */
650 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
651 	/* host->target HTT */
652 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
653 	/* NB: 50% of src nentries, since tx has 2 frags */
654 #ifdef WLAN_FEATURE_FASTPATH
655 	/* target->host HTT */
656 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
657 #else
658 	/* unused */
659 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
660 #endif
661 	/* Reserved for target autonomous HIF_memcpy */
662 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
663 	/* CE7 used only by Host */
664 };
665 
666 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
667 	/* host->target HTC control and raw streams */
668 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
669 	/* target->host HTC control */
670 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
671 	/* target->host WMI */
672 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
673 	/* host->target WMI */
674 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
675 	/* host->target HTT */
676 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
677 	/* NB: 50% of src nentries, since tx has 2 frags */
678 #ifdef WLAN_FEATURE_FASTPATH
679 	/* target->host HTT */
680 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
681 #else
682 	/* unused */
683 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
684 #endif
685 	/* Reserved for target autonomous HIF_memcpy */
686 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
687 	/* CE7 used only by Host */
688 	{ /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, },
689 	{ /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
690 		/* target->host packtlog */
691 		| CE_ATTR_DISABLE_INTR, 0, },
692 #if PEER_CACHEING_HOST_ENABLE
693 	/* target autonomous qcache memcpy */
694 	{ /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
695 		CE_ATTR_DISABLE_INTR, 0, },
696 #endif
697 };
698 
699 static struct CE_attr host_ce_config_wlan_qca8074[] = {
700 	/* host->target HTC control and raw streams */
701 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
702 	/* target->host HTT + HTC control */
703 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
704 	/* target->host WMI */
705 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
706 	/* host->target WMI (mac0) */
707 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
708 	/* host->target HTT */
709 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
710 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
711 	/* target -> host PKTLOG */
712 #ifdef REMOVE_PKT_LOG
713 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
714 #else
715 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
716 #endif
717 	/* Target autonomous HIF_memcpy */
718 	{ /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0,
719 		0, 0, NULL,},
720 	/* host->target WMI (mac1) */
721 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
722 	/* Target to uMC */
723 	{ /* CE8 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0, 0, 0, NULL,},
724 	/* host->target WMI (mac2) */
725 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 32,  2048, 0, NULL,},
726 	/* target->host HTT */
727 	{ /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
728 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
729 };
730 
731 #if defined(QCA_LOWMEM_CONFIG) || defined(QCA_512M_CONFIG)
732 #define T2H_WMI_RING_SIZE 32
733 #else
734 #define T2H_WMI_RING_SIZE 512
735 #endif
736 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = {
737 	/* host->target HTC control and raw streams */
738 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
739 	/* target->host HTT */
740 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
741 	/* target->host WMI  + HTC control */
742 	{ /* CE2 */ 2, PIPEDIR_IN,  T2H_WMI_RING_SIZE, 2048, CE_ATTR_FLAGS, 0,},
743 	/* host->target WMI */
744 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
745 	/* host->target HTT */
746 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
747 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
748 	/* NB: 50% of src nentries, since tx has 2 frags */
749 	/* Target -> host PKTLOG */
750 #ifdef REMOVE_PKT_LOG
751 	{ /* CE5 */ 5, PIPEDIR_NONE,  0, 0, 0, 0,},
752 #else
753 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, 0, 0,},
754 #endif
755 	/* Reserved for target autonomous HIF_memcpy */
756 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
757 	/* CE7 used only by Host */
758 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
759 		8192, 0,},
760 	/* CE8 used only by IPA */
761 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
762 	/* CE9 target->host HTT */
763 	{ /* CE9 */ 9, PIPEDIR_OUT,  32, 2048, 8192, 0,},
764 	/* CE10 target->host HTT */
765 	{/* CE10 unused */10, PIPEDIR_NONE, 0, 0, 0, 0,},
766 	{/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
767 };
768 
769 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = {
770 	/* host->target HTC control and raw streams */
771 	{ /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,},
772 	/* target->host HTT + HTC control */
773 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 512, NULL,},
774 	/* target->host WMI */
775 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 256, NULL,},
776 	/* host->target WMI (mac0) */
777 	{ /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
778 	/* host->target HTT */
779 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
780 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
781 	/* target -> host PKTLOG */
782 #ifdef REMOVE_PKT_LOG
783 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
784 #else
785 	{ /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
786 #endif
787 	/* Target autonomous HIF_memcpy */
788 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
789 	/* host->target WMI (mac1) */
790 	{ /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
791 	/* Target to uMC */
792 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
793 	/* host->target WMI (mac2) */
794 	{ /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32,  2048, 0, NULL,},
795 	/* target->host HTT */
796 	{ /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
797 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
798 };
799 
800 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = {
801 	/* host->target HTC control and raw streams */
802 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
803 	/* target->host HTT */
804 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
805 	/* target->host WMI  + HTC control */
806 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
807 	/* host->target WMI */
808 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
809 	/* host->target HTT */
810 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
811 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
812 	/* NB: 50% of src nentries, since tx has 2 frags */
813 	/* ipa_uc->target */
814 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
815 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
816 	/* Reserved for target autonomous HIF_memcpy */
817 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
818 	/* CE7 used only by Host */
819 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
820 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
821 	/* CE8 used only by IPA */
822 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
823 	/* CE9 target->host HTT */
824 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
825 	/* CE10 target->host HTT */
826 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
827 	/* Target -> host PKTLOG */
828 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
829 };
830 
831 static struct CE_attr host_ce_config_wlan_qca9574[] = {
832 	/* host->target HTC control and raw streams */
833 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
834 	/* target->host HTT + HTC control */
835 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
836 	/* target->host WMI */
837 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
838 	/* host->target WMI (mac0) */
839 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
840 	/* host->target HTT */
841 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
842 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
843 	/* target -> host PKTLOG */
844 #ifdef REMOVE_PKT_LOG
845 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
846 #else
847 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
848 #endif
849 	/* Target autonomous HIF_memcpy */
850 	{ /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0,
851 		0, 0, NULL,},
852 	/* host->target WMI (mac1) */
853 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
854 	/* Target to uMC */
855 	{ /* CE8 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0, 0, 0, NULL,},
856 	/* host->target WMI (mac2) */
857 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 32,  2048, 0, NULL,},
858 	/* target->host HTT */
859 	{ /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
860 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
861 };
862 
863 static struct CE_pipe_config target_ce_config_wlan_qca9574[] = {
864 	/* host->target HTC control and raw streams */
865 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
866 	/* target->host HTT */
867 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
868 	/* target->host WMI  + HTC control */
869 	{ /* CE2 */ 2, PIPEDIR_IN,  T2H_WMI_RING_SIZE, 2048, CE_ATTR_FLAGS, 0,},
870 	/* host->target WMI */
871 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
872 	/* host->target HTT */
873 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
874 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
875 	/* NB: 50% of src nentries, since tx has 2 frags */
876 	/* Target -> host PKTLOG */
877 #ifdef REMOVE_PKT_LOG
878 	{ /* CE5 */ 5, PIPEDIR_NONE,  0, 0, 0, 0,},
879 #else
880 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, 0, 0,},
881 #endif
882 	/* Reserved for target autonomous HIF_memcpy */
883 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
884 	/* CE7 used only by Host */
885 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
886 		8192, 0,},
887 	/* CE8 used only by IPA */
888 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
889 	/* CE9 target->host HTT */
890 	{ /* CE9 */ 9, PIPEDIR_OUT,  32, 2048, 8192, 0,},
891 	/* CE10 target->host HTT */
892 	{/* CE10 unused */10, PIPEDIR_NONE, 0, 0, 0, 0,},
893 	{/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
894 };
895 
896 static struct CE_attr host_lowdesc_ce_config_wlan_adrastea_nopktlog[] = {
897 	/* host->target HTC control and raw streams */
898 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
899 	/* target->host HTT + HTC control */
900 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 256, NULL,},
901 	/* target->host WMI */
902 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 64, NULL,},
903 	/* host->target WMI */
904 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
905 	/* host->target HTT */
906 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
907 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
908 	/* ipa_uc->target HTC control */
909 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
910 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
911 	/* Target autonomous HIF_memcpy */
912 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
913 	/* ce_diag, the Diagnostic Window */
914 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
915 	/* Target to uMC */
916 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
917 	/* target->host HTT */
918 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 64, NULL,},
919 	/* target->host HTT */
920 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 64, NULL,},
921 	/* target -> host PKTLOG */
922 	{ /* CE11 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
923 		0, 2048, 0, NULL,},
924 };
925 
926 static struct CE_attr host_ce_config_wlan_adrastea[] = {
927 	/* host->target HTC control and raw streams */
928 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
929 	/* target->host HTT + HTC control */
930 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
931 	/* target->host WMI */
932 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
933 	/* host->target WMI */
934 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
935 	/* host->target HTT */
936 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
937 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
938 	/* ipa_uc->target HTC control */
939 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
940 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
941 	/* Target autonomous HIF_memcpy */
942 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
943 	/* ce_diag, the Diagnostic Window */
944 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
945 	/* Target to uMC */
946 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
947 	/* target->host HTT */
948 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
949 	/* target->host HTT */
950 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
951 	/* target -> host PKTLOG */
952 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
953 };
954 
955 static struct CE_pipe_config
956 	target_lowdesc_ce_config_wlan_adrastea_nopktlog[] = {
957 	/* host->target HTC control and raw streams */
958 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
959 	/* target->host HTT */
960 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
961 	/* target->host WMI  + HTC control */
962 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
963 	/* host->target WMI */
964 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
965 	/* host->target HTT */
966 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
967 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
968 	/* NB: 50% of src nentries, since tx has 2 frags */
969 	/* ipa_uc->target */
970 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
971 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
972 	/* Reserved for target autonomous HIF_memcpy */
973 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
974 	/* CE7 used only by Host */
975 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
976 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
977 	/* CE8 used only by IPA */
978 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
979 	/* CE9 target->host HTT */
980 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
981 	/* CE10 target->host HTT */
982 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
983 	/* Target -> host PKTLOG */
984 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048,
985 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
986 };
987 
988 static struct CE_pipe_config target_ce_config_wlan_adrastea[] = {
989 	/* host->target HTC control and raw streams */
990 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
991 	/* target->host HTT */
992 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
993 	/* target->host WMI  + HTC control */
994 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
995 	/* host->target WMI */
996 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
997 	/* host->target HTT */
998 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
999 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1000 	/* NB: 50% of src nentries, since tx has 2 frags */
1001 	/* ipa_uc->target */
1002 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
1003 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1004 	/* Reserved for target autonomous HIF_memcpy */
1005 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1006 	/* CE7 used only by Host */
1007 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1008 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1009 	/* CE8 used only by IPA */
1010 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
1011 	/* CE9 target->host HTT */
1012 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1013 	/* CE10 target->host HTT */
1014 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1015 	/* Target -> host PKTLOG */
1016 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1017 };
1018 
1019 #define QCN_6122_CE_COUNT 6
1020 static struct CE_attr host_ce_config_wlan_qcn6122[] = {
1021 	/* host->target HTC control and raw streams */
1022 	{/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
1023 	/* target->host HTT + HTC control */
1024 	{/*CE1*/ (CE_ATTR_FLAGS), 0, 0,  2048,
1025 		512, NULL,},
1026 	/* target->host WMI */
1027 	{/*CE2*/ (CE_ATTR_FLAGS), 0, 0,  WMI_CE_BUF_SIZE,
1028 		128, NULL,},
1029 	/* host->target WMI */
1030 	{/*CE3*/ (CE_ATTR_FLAGS), 0, 32, WMI_CE_BUF_SIZE, 0, NULL,},
1031 	/* host->target HTT */
1032 	{/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1033 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1034 	/* target -> host PKTLOG */
1035 	{/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
1036 		512, NULL,},
1037 	/* Target autonomous HIF_memcpy */
1038 	{/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1039 	/* host->target WMI (mac1) */
1040 	{/*CE7*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1041 	/* Reserved for target */
1042 	{/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1043 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1044 };
1045 
1046 static struct CE_pipe_config target_ce_config_wlan_qcn6122[] = {
1047 	/* host->target HTC control and raw streams */
1048 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1049 	/* target->host HTT */
1050 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1051 	/* target->host WMI  + HTC control */
1052 	{ /* CE2 */ 2, PIPEDIR_IN,  32, WMI_CE_BUF_SIZE, CE_ATTR_FLAGS, 0,},
1053 	/* host->target WMI */
1054 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, WMI_CE_BUF_SIZE, CE_ATTR_FLAGS, 0,},
1055 	/* host->target HTT */
1056 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1057 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1058 	/* Target -> host PKTLOG */
1059 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1060 	/* Reserved for target autonomous HIF_memcpy */
1061 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1062 	/* CE7 used only by Host */
1063 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
1064 		8192, 0,},
1065 	/* Reserved for target */
1066 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1067 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1068 };
1069 
1070 #ifdef QCA_LOWMEM_CONFIG
1071 #define PKTLOG_DST_ENTRIES 128
1072 #else
1073 #define PKTLOG_DST_ENTRIES 512
1074 #endif
1075 
1076 #define QCA_5018_CE_COUNT 6
1077 static struct CE_attr host_ce_config_wlan_qca5018[] = {
1078 	/* host->target HTC control and raw streams */
1079 	{/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
1080 	/* target->host HTT + HTC control */
1081 	{/*CE1*/ (CE_ATTR_FLAGS), 0, 0,  2048,
1082 		512, NULL,},
1083 	/* target->host WMI */
1084 	{/*CE2*/ (CE_ATTR_FLAGS), 0, 0,  2048,
1085 		128, NULL,},
1086 	/* host->target WMI */
1087 	{/*CE3*/ (CE_ATTR_FLAGS), 0, 32, 2048, 0, NULL,},
1088 	/* host->target HTT */
1089 	{/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1090 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1091 	/* target -> host PKTLOG */
1092 #ifdef REMOVE_PKT_LOG
1093 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
1094 #else
1095 	{/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
1096 		PKTLOG_DST_ENTRIES, NULL,},
1097 #endif
1098 	/* Target autonomous HIF_memcpy */
1099 	{/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1100 	/* host->target WMI (mac1) */
1101 	{/*CE7*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1102 	/* Reserved for target */
1103 	{/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1104 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1105 };
1106 
1107 static struct CE_pipe_config target_ce_config_wlan_qca5018[] = {
1108 	/* host->target HTC control and raw streams */
1109 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1110 	/* target->host HTT */
1111 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1112 	/* target->host WMI  + HTC control */
1113 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1114 	/* host->target WMI */
1115 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1116 	/* host->target HTT */
1117 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1118 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1119 	/* Target -> host PKTLOG */
1120 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1121 	/* Reserved for target autonomous HIF_memcpy */
1122 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1123 	/* CE7 used only by Host */
1124 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
1125 		8192, 0,},
1126 	/* Reserved for target */
1127 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1128 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1129 };
1130 
1131 #define QCN_9000_CE_COUNT 6
1132 
1133 /* QCN9000 enable polling mode */
1134 static struct CE_attr host_ce_config_wlan_qcn9000[] = {
1135 	/* host->target HTC control and raw streams */
1136 	{/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
1137 	/* target->host HTT + HTC control */
1138 	{/*CE1*/ (CE_ATTR_FLAGS), 0, 0,  2048,
1139 		512, NULL,},
1140 	/* target->host WMI */
1141 	{/*CE2*/ (CE_ATTR_FLAGS), 0, 0,  WMI_CE_BUF_SIZE,
1142 		128, NULL,},
1143 	/* host->target WMI */
1144 	{/*CE3*/ (CE_ATTR_FLAGS), 0, 32, WMI_CE_BUF_SIZE, 0, NULL,},
1145 	/* host->target HTT */
1146 	{/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1147 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1148 	/* target -> host PKTLOG */
1149 #ifdef REMOVE_PKT_LOG
1150 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
1151 #else
1152 	{/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
1153 		PKTLOG_DST_ENTRIES, NULL,},
1154 #endif
1155 	/* Target autonomous HIF_memcpy */
1156 	{/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1157 	/* Target CV prefetch */
1158 	{/*CE7*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1159 	/* Reserved for target */
1160 	{/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1161 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1162 };
1163 
1164 static struct CE_pipe_config target_ce_config_wlan_qcn9000[] = {
1165 	/* host->target HTC control and raw streams */
1166 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1167 	/* target->host HTT */
1168 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1169 	/* target->host WMI  + HTC control */
1170 	{ /* CE2 */ 2, PIPEDIR_IN,  32, WMI_CE_BUF_SIZE, CE_ATTR_FLAGS, 0,},
1171 	/* host->target WMI */
1172 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, WMI_CE_BUF_SIZE, CE_ATTR_FLAGS, 0,},
1173 	/* host->target HTT */
1174 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1175 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1176 	/* Target -> host PKTLOG */
1177 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1178 	/* Reserved for target autonomous HIF_memcpy */
1179 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1180 	/* Target CV prefetch */
1181 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
1182 		8192, 0,},
1183 	/* Reserved for target */
1184 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1185 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1186 };
1187 
1188 #define QCA_6290_CE_COUNT 9
1189 #ifdef QCA_6290_AP_MODE
1190 static struct CE_attr host_ce_config_wlan_qca6290[] = {
1191 	/* host->target HTC control and raw streams */
1192 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1193 	/* target->host HTT + HTC control */
1194 	{ /* CE1 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
1195 		512, NULL,},
1196 	/* target->host WMI */
1197 	{ /* CE2 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
1198 		32, NULL,},
1199 	/* host->target WMI */
1200 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1201 	/* host->target HTT */
1202 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1203 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1204 	/* target -> host PKTLOG */
1205 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
1206 		512, NULL,},
1207 	/* Target autonomous HIF_memcpy */
1208 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1209 	/* host->target WMI (mac1) */
1210 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1211 	/* Reserved for target */
1212 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1213 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1214 };
1215 
1216 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
1217 	/* host->target HTC control and raw streams */
1218 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1219 	/* target->host HTT */
1220 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1221 	/* target->host WMI  + HTC control */
1222 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1223 	/* host->target WMI */
1224 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1225 	/* host->target HTT */
1226 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1227 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1228 	/* Target -> host PKTLOG */
1229 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1230 	/* Reserved for target autonomous HIF_memcpy */
1231 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1232 	/* CE7 used only by Host */
1233 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
1234 		8192, 0,},
1235 	/* Reserved for target */
1236 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1237 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1238 };
1239 #else
1240 static struct CE_attr host_ce_config_wlan_qca6290[] = {
1241 	/* host->target HTC control and raw streams */
1242 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1243 	/* target->host HTT + HTC control */
1244 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1245 	/* target->host WMI */
1246 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
1247 	/* host->target WMI */
1248 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1249 	/* host->target HTT */
1250 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1251 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1252 	/* target -> host PKTLOG */
1253 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
1254 	/* Target autonomous HIF_memcpy */
1255 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1256 	/* ce_diag, the Diagnostic Window */
1257 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1258 		2, DIAG_TRANSFER_LIMIT, 2, NULL,},
1259 	/* Reserved for target */
1260 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1261 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1262 };
1263 
1264 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
1265 	/* host->target HTC control and raw streams */
1266 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1267 	/* target->host HTT */
1268 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1269 	/* target->host WMI  + HTC control */
1270 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1271 	/* host->target WMI */
1272 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1273 	/* host->target HTT */
1274 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1275 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1276 	/* Target -> host PKTLOG */
1277 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1278 	/* Reserved for target autonomous HIF_memcpy */
1279 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1280 	/* CE7 used only by Host */
1281 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1282 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1283 	/* Reserved for target */
1284 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1285 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1286 };
1287 #endif
1288 
1289 #define QCA_6390_CE_COUNT 9
1290 static struct CE_attr host_ce_config_wlan_qca6390[] = {
1291 	/* host->target HTC control and raw streams */
1292 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1293 	/* target->host HTT + HTC control */
1294 #ifdef REMOVE_PKT_LOG
1295 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1296 #else
1297 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 256, NULL,},
1298 #endif
1299 	/* target->host WMI */
1300 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
1301 	/* host->target WMI */
1302 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1303 	/* host->target HTT */
1304 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1305 		CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6390, 256, 0, NULL,},
1306 	/* target -> host PKTLOG */
1307 #ifdef REMOVE_PKT_LOG
1308 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
1309 #else
1310 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 2048, 512,
1311 		NULL,},
1312 #endif
1313 	/* Target autonomous HIF_memcpy */
1314 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1315 	/* ce_diag, the Diagnostic Window */
1316 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1317 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
1318 	/* Reserved for target */
1319 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1320 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1321 };
1322 
1323 static struct CE_pipe_config target_ce_config_wlan_qca6390[] = {
1324 	/* host->target HTC control and raw streams */
1325 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1326 	/* target->host HTT */
1327 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1328 	/* target->host WMI  + HTC control */
1329 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1330 	/* host->target WMI */
1331 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1332 	/* host->target HTT */
1333 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1334 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1335 	/* Target -> host PKTLOG */
1336 #ifdef REMOVE_PKT_LOG
1337 	{ /* CE5 */ 5, PIPEDIR_IN,  2, 2048, CE_ATTR_FLAGS, 0,},
1338 #else
1339 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1340 #endif
1341 	/* Reserved for target autonomous HIF_memcpy */
1342 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1343 	/* CE7 used only by Host */
1344 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1345 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1346 	/* Reserved for target */
1347 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1348 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1349 };
1350 
1351 #define QCA_6490_CE_COUNT 9
1352 static struct CE_attr host_ce_config_wlan_qca6490[] = {
1353 	/* host->target HTC control and raw streams */
1354 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1355 	/* target->host HTT + HTC control */
1356 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1357 	/* target->host WMI */
1358 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  3520, 64, NULL,},
1359 	/* host->target WMI */
1360 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1361 	/* host->target HTT */
1362 	{ /* CE4 */ CE4_COMP_HTT_HTC, 0,
1363 		CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6490, 256, 0, NULL,},
1364 	/* target -> host PKTLOG */
1365 #ifdef REMOVE_PKT_LOG
1366 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
1367 #else
1368 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 2048, 512,
1369 		NULL,},
1370 #endif
1371 	/* Target autonomous HIF_memcpy */
1372 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1373 	/* ce_diag, the Diagnostic Window */
1374 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1375 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
1376 	/* Reserved for target */
1377 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1378 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1379 };
1380 
1381 static struct CE_pipe_config target_ce_config_wlan_qca6490[] = {
1382 	/* host->target HTC control and raw streams */
1383 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1384 	/* target->host HTT */
1385 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1386 	/* target->host WMI  + HTC control */
1387 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 3520, CE_ATTR_FLAGS, 0,},
1388 	/* host->target WMI */
1389 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1390 	/* host->target HTT */
1391 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1392 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1393 	/* Target -> host PKTLOG */
1394 #ifdef REMOVE_PKT_LOG
1395 	{ /* CE5 */ 5, PIPEDIR_IN,  2, 2048, CE_ATTR_FLAGS, 0,},
1396 #else
1397 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1398 #endif
1399 	/* Reserved for target autonomous HIF_memcpy */
1400 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1401 	/* CE7 used only by Host */
1402 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1403 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1404 	/* Reserved for target */
1405 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1406 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1407 };
1408 
1409 #define QCA_6750_CE_COUNT 9
1410 static struct CE_attr host_ce_config_wlan_qca6750[] = {
1411 	/* host->target HTC control and raw streams */
1412 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1413 	/* target->host HTT + HTC control */
1414 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1415 	/* target->host WMI */
1416 	{ /* CE2 */ CE_ATTR_FLAGS | CE_ATTR_HI_TASKLET, 0, 0,  2048, 32, NULL,},
1417 	/* host->target WMI */
1418 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1419 	/* host->target HTT */
1420 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1421 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1422 	/* target -> host PKTLOG */
1423 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 2048, 512,
1424 		NULL,},
1425 	/* Target autonomous HIF_memcpy */
1426 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1427 #ifdef WLAN_FEATURE_WMI_DIAG_OVER_CE7
1428 	/* target->host WMI_DIAG */
1429 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
1430 #else
1431 	/* ce_diag, the Diagnostic Window */
1432 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1433 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
1434 #endif
1435 	/* Reserved for target */
1436 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1437 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1438 };
1439 
1440 static struct CE_pipe_config target_ce_config_wlan_qca6750[] = {
1441 	/* host->target HTC control and raw streams */
1442 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1443 	/* target->host HTT */
1444 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1445 	/* target->host WMI  + HTC control */
1446 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1447 	/* host->target WMI */
1448 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1449 	/* host->target HTT */
1450 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1451 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1452 	/* Target -> host PKTLOG */
1453 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1454 	/* Reserved for target autonomous HIF_memcpy */
1455 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1456 #ifdef WLAN_FEATURE_WMI_DIAG_OVER_CE7
1457 	/* target->host WMI_DIAG */
1458 	{ /* CE7 */ 7, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
1459 #else
1460 	/* CE7 used only by Host */
1461 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1462 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1463 #endif
1464 	/* Reserved for target */
1465 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1466 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1467 };
1468 
1469 #define WCN_7850_CE_COUNT 9
1470 static struct CE_attr host_ce_config_wlan_wcn7850[] = {
1471 	/* host->target HTC control and raw streams */
1472 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1473 	/* target->host HTT + HTC control */
1474 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1475 	/* target->host WMI */
1476 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  3520, 64, NULL,},
1477 	/* host->target WMI */
1478 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1479 	/* host->target HTT */
1480 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1481 		256, 256, 0, NULL,},
1482 #ifdef FEATURE_PKTLOG
1483 	/* target -> host PKTLOG */
1484 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
1485 #else
1486 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 0, NULL,},
1487 #endif
1488 	/* Target autonomous HIF_memcpy */
1489 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1490 	/* ce_diag, the Diagnostic Window */
1491 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1492 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
1493 	/* Reserved for target */
1494 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1495 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1496 };
1497 
1498 static struct CE_pipe_config target_ce_config_wlan_wcn7850[] = {
1499 	/* host->target HTC control and raw streams */
1500 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1501 	/* target->host HTT */
1502 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1503 	/* target->host WMI  + HTC control */
1504 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 3520, CE_ATTR_FLAGS, 0,},
1505 	/* host->target WMI */
1506 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1507 	/* host->target HTT */
1508 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1509 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1510 #ifdef FEATURE_PKTLOG
1511 	/* Target -> host PKTLOG */
1512 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1513 #else
1514 	{ /* CE5 */ 5, PIPEDIR_IN,  0, 2048, CE_ATTR_FLAGS, 0,},
1515 #endif
1516 
1517 	/* Reserved for target autonomous HIF_memcpy */
1518 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1519 	/* CE7 used only by Host */
1520 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1521 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1522 	/* Reserved for target */
1523 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1524 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1525 };
1526 
1527 #ifdef QCA_WIFI_QCN9224
1528 #define QCN_9224_CE_COUNT 16
1529 static struct CE_attr host_ce_config_wlan_qcn9224[] = {
1530 	/* host->target HTC control and raw streams */
1531 	{/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
1532 	/* target->host HTT + HTC control */
1533 	{/*CE1*/ (CE_ATTR_FLAGS), 0, 0,  2048,
1534 		512, NULL,},
1535 	/* target->host WMI */
1536 	{/*CE2*/ (CE_ATTR_FLAGS), 0, 0,  2048,
1537 		128, NULL,},
1538 	/* host->target WMI (mac0) */
1539 	{/*CE3*/ (CE_ATTR_FLAGS), 0, 32, 2048, 0, NULL,},
1540 	/* host->target HTT */
1541 	{/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1542 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1543 	/* target -> host PKTLOG */
1544 #ifdef REMOVE_PKT_LOG
1545 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
1546 #else
1547 	{/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
1548 		PKTLOG_DST_ENTRIES, NULL,},
1549 #endif
1550 	/* Target autonomous HIF_memcpy */
1551 	{/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1552 	/* host->target WMI (mac1) */
1553 	{/*CE7*/ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1554 	/* Reserved for target (Generic HiF memcpy */
1555 	{/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1556 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1557 	{/*CE9*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1558 	{/*CE10*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1559 	{/*CE11*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1560 	/* Target CV prefetch */
1561 	{/*CE12*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1562 	/* Target CV prefetch */
1563 	{/*CE13*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1564 	/* target->host WMI logging, Direc-DMA */
1565 	{/*CE14*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1566 	/* Reserved for customer use */
1567 	{/*CE15*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1568 };
1569 
1570 static struct CE_pipe_config target_ce_config_wlan_qcn9224[] = {
1571 	/* host->target HTC control and raw streams */
1572 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1573 	/* target->host HTT */
1574 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1575 	/* target->host WMI */
1576 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1577 	/* host->target WMI */
1578 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1579 	/* host->target HTT */
1580 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1581 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1582 	/* Target -> host PKTLOG */
1583 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1584 	/* Reserved for target autonomous HIF_memcpy */
1585 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1586 	/* host->target WMI */
1587 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1588 	/* Reserved for target */
1589 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1590 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1591 	/* CV prefetch */
1592 	{ /* CE12 */ 12, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1593 	/* CV prefetch */
1594 	{ /* CE13 */ 13, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1595 	/* target->host WMI logging + DirectDMA events */
1596 	{ /* CE14 */ 14, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
1597 	/*CE 15 - Reserved for customer use */
1598 };
1599 #endif
1600 
1601 #endif /* __HIF_PCI_INTERNAL_H__ */
1602