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