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