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