xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/ce/ce_assignment.h (revision bea437e2293c3d4fb1b5704fcf633aedac996962)
1 /*
2  * Copyright (c) 2014-2019 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 /*
20  * Implementation of the Host-side Host InterFace (HIF) API
21  * for a Host/Target interconnect using Copy Engines over PCIe.
22  */
23 
24 #ifndef __HIF_PCI_INTERNAL_H__
25 #define __HIF_PCI_INTERNAL_H__
26 
27 #ifndef 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 	/* target->host PKTLOG */
101 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
102 #ifdef IPA_OFFLOAD
103 	/* Target to uMC */
104 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
105 #else
106 	/* target->host HTT*/
107 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
108 #endif
109 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
110 };
111 
112 static struct CE_pipe_config target_ce_config_wlan_qcn7605[] = {
113 	/* host->target HTC control and raw streams */
114 	{ /* CE0 */ 0, PIPEDIR_OUT, 4, 2048, CE_ATTR_FLAGS, 0,},
115 	/* target->host HTT */
116 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
117 	/* target->host WMI  + HTC control */
118 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
119 	/* target->host HTT */
120 	{ /* CE3 */ 3, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
121 	/* host->target HTT */
122 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 256,
123 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
124 	/* NB: 50% of src nentries, since tx has 2 frags */
125 #ifdef IPA_OFFLOAD
126 	/* ipa_uc->target */
127 	{ /* CE5 */ 5, PIPEDIR_OUT, 512,   64,
128 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
129 #else
130 	/* unused */
131 	{ /* CE5 */ 5, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
132 #endif
133 	/* Reserved for target autonomous HIF_memcpy */
134 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
135 	/* Target -> host PKTLOG */
136 	{ /* CE7 */ 7, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
137 #ifdef IPA_OFFLOAD
138 	/* CE8 used only by IPA */
139 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
140 #else
141 	/* target->host HTT*/
142 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
143 #endif
144 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
145 };
146 #endif
147 
148 #ifdef QCA_WIFI_3_0
149 static struct CE_attr host_ce_config_wlan[] = {
150 	/* host->target HTC control and raw streams */
151 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
152 	/* target->host HTT + HTC control */
153 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
154 	/* target->host WMI */
155 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
156 	/* host->target WMI */
157 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
158 	/* host->target HTT */
159 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
160 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
161 	/* ipa_uc->target HTC control */
162 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
163 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
164 	/* Target autonomous HIF_memcpy */
165 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
166 	/* ce_diag, the Diagnostic Window */
167 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
168 	/* Target to uMC */
169 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
170 	/* target->host HTT */
171 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
172 	/* target->host HTT */
173 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
174 	/* target -> host PKTLOG */
175 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
176 };
177 
178 static struct CE_pipe_config target_ce_config_wlan[] = {
179 	/* host->target HTC control and raw streams */
180 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
181 	/* target->host HTT */
182 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
183 	/* target->host WMI  + HTC control */
184 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
185 	/* host->target WMI */
186 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
187 	/* host->target HTT */
188 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
189 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
190 	/* NB: 50% of src nentries, since tx has 2 frags */
191 	/* ipa_uc->target */
192 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
193 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
194 	/* Reserved for target autonomous HIF_memcpy */
195 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
196 	/* CE7 used only by Host */
197 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
198 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
199 	/* CE8 used only by IPA */
200 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
201 	/* CE9 target->host HTT */
202 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
203 	/* CE10 target->host HTT */
204 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
205 	/* Target -> host PKTLOG */
206 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
207 };
208 
209 #ifdef WLAN_FEATURE_EPPING
210 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
211 	/* host->target HTC control and raw streams */
212 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
213 	/* target->host EP-ping */
214 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
215 	/* target->host EP-ping */
216 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
217 	/* host->target EP-ping */
218 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
219 	/* host->target EP-ping */
220 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
221 	/* EP-ping heartbeat */
222 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
223 	/* unused */
224 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
225 	/* ce_diag, the Diagnostic Window */
226 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
227 };
228 
229 #ifdef QCN7605_SUPPORT
230 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
231 	/* host->target HTC control and raw streams */
232 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
233 	/* target->host EP-ping */
234 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 32, NULL,},
235 	/* target->host EP-ping */
236 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 32, NULL,},
237 	/* host->target EP-ping */
238 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
239 	/* host->target EP-ping */
240 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
241 	/* EP-ping heartbeat */
242 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 16, NULL,},
243 	/* unused */
244 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
245 	/* ce_diag, the Diagnostic Window */
246 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
247 };
248 
249 /*
250  * EP-ping firmware's CE configuration
251  */
252 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
253 	/* host->target HTC control and raw streams */
254 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
255 	/* target->host EP-ping */
256 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
257 	/* target->host EP-ping */
258 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
259 	/* host->target EP-ping */
260 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
261 	/* host->target EP-ping */
262 	{ /* CE4 */ 4, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
263 	/* EP-ping heartbeat */
264 	{ /* CE5 */ 5, PIPEDIR_IN,  16, 2048, CE_ATTR_FLAGS, 0,},
265 	/* unused */
266 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
267 	/* CE7 used only by Host */
268 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
269 	/* CE8 used only by IPA */
270 	{ /* CE8 */ 8, PIPEDIR_IN, 4, 2048, CE_ATTR_FLAGS, 0,}
271 };
272 #else
273 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
274 	/* host->target HTC control and raw streams */
275 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
276 	/* target->host EP-ping */
277 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
278 	/* target->host EP-ping */
279 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
280 	/* host->target EP-ping */
281 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
282 	/* host->target EP-ping */
283 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
284 	/* EP-ping heartbeat */
285 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
286 	/* unused */
287 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
288 	/* ce_diag, the Diagnostic Window */
289 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
290 };
291 /*
292  * EP-ping firmware's CE configuration
293  */
294 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
295 	/* host->target HTC control and raw streams */
296 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
297 	/* target->host EP-ping */
298 	{ /* CE1 */ 1, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
299 	/* target->host EP-ping */
300 	{ /* CE2 */ 2, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
301 	/* host->target EP-ping */
302 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
303 	/* host->target EP-ping */
304 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
305 	/* EP-ping heartbeat */
306 	{ /* CE5 */ 5, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
307 	/* unused */
308 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
309 	/* CE7 used only by Host */
310 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
311 	/* CE8 used only by IPA */
312 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
313 };
314 #endif
315 #endif
316 #else
317 static struct CE_attr host_ce_config_wlan[] = {
318 	/* host->target HTC control and raw streams */
319 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16,  256, 0, NULL,},
320 	/* target->host HTT + HTC control */
321 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
322 	/* target->host WMI */
323 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
324 	/* host->target WMI */
325 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
326 	/* host->target HTT */
327 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
328 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
329 	/* ipa_uc->target HTC control */
330 	{ /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
331 		1024, 512, 0, NULL,},
332 	/* Target autonomous HIF_memcpy */
333 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
334 	/* ce_diag, the Diagnostic Window */
335 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR),
336 		0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
337 };
338 
339 static struct CE_pipe_config target_ce_config_wlan[] = {
340 	/* host->target HTC control and raw streams */
341 	{ /* CE0 */ 0, PIPEDIR_OUT, 32,  256, CE_ATTR_FLAGS, 0,},
342 	/* target->host HTT + HTC control */
343 	{ /* CE1 */ 1, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
344 	/* target->host WMI */
345 	{ /* CE2 */ 2, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
346 	/* host->target WMI */
347 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
348 	/* host->target HTT */
349 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
350 	/* NB: 50% of src nentries, since tx has 2 frags */
351 	/* ipa_uc->target HTC control */
352 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64, CE_ATTR_FLAGS, 0,},
353 	/* Reserved for target autonomous HIF_memcpy */
354 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,},
355 	/* CE7 used only by Host */
356 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
357 	/* CE8 used only by IPA */
358 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
359 };
360 
361 #ifdef WLAN_FEATURE_EPPING
362 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
363 	/* host->target HTC control and raw streams */
364 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
365 	/* target->host EP-ping */
366 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
367 	/* target->host EP-ping */
368 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
369 	/* host->target EP-ping */
370 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
371 	/* host->target EP-ping */
372 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
373 	/* EP-ping heartbeat */
374 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
375 	/* unused */
376 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
377 	/* ce_diag, the Diagnostic Window */
378 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
379 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
380 	/* The following CEs are not being used yet */
381 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
382 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
383 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
384 };
385 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
386 	/* host->target HTC control and raw streams */
387 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
388 	/* target->host EP-ping */
389 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
390 	/* target->host EP-ping */
391 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
392 	/* host->target EP-ping */
393 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
394 	/* host->target EP-ping */
395 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
396 	/* EP-ping heartbeat */
397 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
398 	/* unused */
399 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
400 	/* ce_diag, the Diagnostic Window */
401 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
402 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
403 	/* The following CEs are not being used yet */
404 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
405 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
406 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
407 };
408 /*
409  * EP-ping firmware's CE configuration
410  */
411 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
412 	/* host->target HTC control and raw streams */
413 	{ /* CE0 */ 0, PIPEDIR_OUT, 16,   256, CE_ATTR_FLAGS, 0,},
414 	/* target->host EP-ping */
415 	{ /* CE1 */ 1, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
416 	/* target->host EP-ping */
417 	{ /* CE2 */ 2, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
418 	/* host->target EP-ping */
419 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
420 	/* host->target EP-ping */
421 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
422 	/* EP-ping heartbeat */
423 	{ /* CE5 */ 5, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
424 	/* unused */
425 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
426 	/* CE7 used only by Host */
427 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
428 	/* CE8 used only by IPA */
429 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
430 	{ /* CE9 */ 9, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
431 	{ /* CE10 */ 10, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
432 	{ /* CE11 */ 11, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
433 };
434 #endif
435 #endif
436 
437 static struct CE_attr host_ce_config_wlan_ar9888[] = {
438 	/* host->target HTC control and raw streams */
439 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
440 	/* target->host BMI + HTC control */
441 	/* could be moved to share CE3 */
442 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
443 	/* target->host WMI */
444 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
445 	/* host->target WMI */
446 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
447 	/* host->target HTT */
448 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
449 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
450 #ifdef WLAN_FEATURE_FASTPATH
451 	/* target->host HTT messages */
452 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
453 #else   /* WLAN_FEATURE_FASTPATH */
454 	/* unused */
455 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
456 #endif  /* WLAN_FEATURE_FASTPATH */
457 	/* Target autonomous HIF_memcpy */
458 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
459 	/* ce_diag, the Diagnostic Window */
460 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
461 	/* Target autonomous HIF_memcpy */
462 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
463 };
464 
465 static struct CE_attr host_ce_config_wlan_ar900b[] = {
466 	/* host->target HTC control and raw streams */
467 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
468 	/* target->host BMI + HTC control */
469 	/* could be moved to share CE3 */
470 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
471 	/* target->host WMI */
472 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
473 	/* host->target WMI */
474 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
475 	/* host->target HTT */
476 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
477 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
478 #ifdef WLAN_FEATURE_FASTPATH
479 	/* target->host HTT messages */
480 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
481 #else   /* WLAN_FEATURE_FASTPATH */
482 	/* unused */
483 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
484 #endif  /* WLAN_FEATURE_FASTPATH */
485 	/* Target autonomous HIF_memcpy */
486 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
487 	/* ce_diag, the Diagnostic Window */
488 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
489 	/* target->host pktlog */
490 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
491 	/* Target autonomous HIF_memcpy */
492 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
493 	/* Target autonomous HIF_memcpy */
494 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
495 	/* Target autonomous HIF_memcpy */
496 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
497 };
498 
499 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = {
500 	/* host->target HTC control and raw streams */
501 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
502 	/* could be moved to share CE3 */
503 #ifdef WLAN_FEATURE_FASTPATH
504 	/* target->host BMI + HTC control */
505 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
506 #else
507 	/* target->host BMI + HTC control */
508 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
509 #endif
510 	/* target->host WMI */
511 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
512 	/* host->target WMI */
513 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
514 	/* host->target HTT */
515 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
516 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
517 #ifdef WLAN_FEATURE_FASTPATH
518 	/* target->host HTT messages */
519 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
520 #else   /* WLAN_FEATURE_FASTPATH */
521 	/* unused */
522 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
523 #endif  /* WLAN_FEATURE_FASTPATH */
524 	/* Target autonomous HIF_memcpy */
525 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
526 	/* ce_diag, the Diagnostic Window */
527 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
528 	/* Target autonomous HIF_memcpy */
529 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
530 };
531 
532 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = {
533 	/* host->target HTC control and raw streams */
534 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
535 	/* could be moved to share CE3 */
536 #ifdef WLAN_FEATURE_FASTPATH
537 	/* target->host BMI + HTC control */
538 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
539 #else
540 	/* target->host BMI + HTC control */
541 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
542 #endif
543 	/* target->host WMI */
544 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
545 	/* host->target WMI */
546 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
547 	/* host->target HTT */
548 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
549 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
550 #ifdef WLAN_FEATURE_FASTPATH
551 	/* target->host HTT messages */
552 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
553 #else   /* WLAN_FEATURE_FASTPATH */
554 	/* unused */
555 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
556 #endif  /* WLAN_FEATURE_FASTPATH */
557 	/* Target autonomous HIF_memcpy */
558 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
559 	/* ce_diag, the Diagnostic Window */
560 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
561 	/* target->host pktlog */
562 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
563 	/* Target autonomous HIF_memcpy */
564 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
565 	/* Target autonomous HIF_memcpy */
566 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
567 	/* Target autonomous HIF_memcpy */
568 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
569 };
570 
571 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = {
572 	/* host->target HTC control and raw streams */
573 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
574 	/* could be moved to share CE3 */
575 #ifdef WLAN_FEATURE_FASTPATH
576 	/* target->host BMI + HTC control */
577 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
578 #else
579 	/* target->host BMI + HTC control */
580 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
581 #endif
582 	/* target->host WMI */
583 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
584 	/* host->target WMI */
585 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
586 	/* host->target HTT */
587 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
588 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
589 #ifdef WLAN_FEATURE_FASTPATH
590 	/* target->host HTT messages */
591 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
592 #else   /* WLAN_FEATURE_FASTPATH */
593 	/* unused */
594 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
595 #endif  /* WLAN_FEATURE_FASTPATH */
596 	/* Target autonomous HIF_memcpy */
597 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
598 	/* ce_diag, the Diagnostic Window */
599 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
600 	/* target->host pktlog */
601 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
602 	/* Target autonomous HIF_memcpy */
603 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
604 	/* Target autonomous HIF_memcpy */
605 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
606 	/* Target autonomous HIF_memcpy */
607 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
608 };
609 
610 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
611 	/* host->target HTC control and raw streams */
612 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
613 	/* target->host HTC control */
614 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
615 	/* target->host WMI */
616 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
617 	/* host->target WMI */
618 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
619 	/* host->target HTT */
620 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
621 	/* NB: 50% of src nentries, since tx has 2 frags */
622 #ifdef WLAN_FEATURE_FASTPATH
623 	/* target->host HTT */
624 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
625 #else
626 	/* unused */
627 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
628 #endif
629 	/* Reserved for target autonomous HIF_memcpy */
630 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
631 	/* CE7 used only by Host */
632 };
633 
634 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
635 	/* host->target HTC control and raw streams */
636 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
637 	/* target->host HTC control */
638 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
639 	/* target->host WMI */
640 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
641 	/* host->target WMI */
642 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
643 	/* host->target HTT */
644 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
645 	/* NB: 50% of src nentries, since tx has 2 frags */
646 #ifdef WLAN_FEATURE_FASTPATH
647 	/* target->host HTT */
648 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
649 #else
650 	/* unused */
651 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
652 #endif
653 	/* Reserved for target autonomous HIF_memcpy */
654 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
655 	/* CE7 used only by Host */
656 	{ /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, },
657 	{ /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
658 		/* target->host packtlog */
659 		| CE_ATTR_DISABLE_INTR, 0, },
660 #if PEER_CACHEING_HOST_ENABLE
661 	/* target autonomous qcache memcpy */
662 	{ /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
663 		CE_ATTR_DISABLE_INTR, 0, },
664 #endif
665 };
666 
667 static struct CE_attr host_ce_config_wlan_qca8074[] = {
668 	/* host->target HTC control and raw streams */
669 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
670 	/* target->host HTT + HTC control */
671 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
672 	/* target->host WMI */
673 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
674 	/* host->target WMI (mac0) */
675 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
676 	/* host->target HTT */
677 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
678 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
679 	/* target -> host PKTLOG */
680 #ifdef REMOVE_PKT_LOG
681 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
682 #else
683 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
684 #endif
685 	/* Target autonomous HIF_memcpy */
686 	{ /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0,
687 		0, 0, NULL,},
688 	/* host->target WMI (mac1) */
689 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
690 	/* Target to uMC */
691 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
692 	/* host->target WMI (mac2) */
693 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 32,  2048, 0, NULL,},
694 	/* target->host HTT */
695 	{ /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
696 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
697 };
698 
699 #if defined(QCA_LOWMEM_CONFIG) || defined(QCA_512M_CONFIG)
700 #define T2H_WMI_RING_SIZE 32
701 #else
702 #define T2H_WMI_RING_SIZE 512
703 #endif
704 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = {
705 	/* host->target HTC control and raw streams */
706 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
707 	/* target->host HTT */
708 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
709 	/* target->host WMI  + HTC control */
710 	{ /* CE2 */ 2, PIPEDIR_IN,  T2H_WMI_RING_SIZE, 2048, CE_ATTR_FLAGS, 0,},
711 	/* host->target WMI */
712 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
713 	/* host->target HTT */
714 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
715 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
716 	/* NB: 50% of src nentries, since tx has 2 frags */
717 	/* Target -> host PKTLOG */
718 #ifdef REMOVE_PKT_LOG
719 	{ /* CE5 */ 5, PIPEDIR_NONE,  0, 0, 0, 0,},
720 #else
721 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, 0, 0,},
722 #endif
723 	/* Reserved for target autonomous HIF_memcpy */
724 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
725 	/* CE7 used only by Host */
726 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
727 		8192, 0,},
728 	/* CE8 used only by IPA */
729 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
730 	/* CE9 target->host HTT */
731 	{ /* CE9 */ 9, PIPEDIR_OUT,  32, 2048, 8192, 0,},
732 	/* CE10 target->host HTT */
733 	{/* CE10 unused */10, PIPEDIR_NONE, 0, 0, 0, 0,},
734 	{/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
735 };
736 
737 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = {
738 	/* host->target HTC control and raw streams */
739 	{ /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,},
740 	/* target->host HTT + HTC control */
741 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 512, NULL,},
742 	/* target->host WMI */
743 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 256, NULL,},
744 	/* host->target WMI (mac0) */
745 	{ /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
746 	/* host->target HTT */
747 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
748 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
749 	/* target -> host PKTLOG */
750 #ifdef REMOVE_PKT_LOG
751 	{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
752 #else
753 	{ /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
754 #endif
755 	/* Target autonomous HIF_memcpy */
756 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
757 	/* host->target WMI (mac1) */
758 	{ /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
759 	/* Target to uMC */
760 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
761 	/* host->target WMI (mac2) */
762 	{ /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32,  2048, 0, NULL,},
763 	/* target->host HTT */
764 	{ /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
765 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
766 };
767 
768 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = {
769 	/* host->target HTC control and raw streams */
770 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
771 	/* target->host HTT */
772 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
773 	/* target->host WMI  + HTC control */
774 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
775 	/* host->target WMI */
776 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
777 	/* host->target HTT */
778 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
779 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
780 	/* NB: 50% of src nentries, since tx has 2 frags */
781 	/* ipa_uc->target */
782 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
783 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
784 	/* Reserved for target autonomous HIF_memcpy */
785 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
786 	/* CE7 used only by Host */
787 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
788 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
789 	/* CE8 used only by IPA */
790 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
791 	/* CE9 target->host HTT */
792 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
793 	/* CE10 target->host HTT */
794 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
795 	/* Target -> host PKTLOG */
796 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
797 };
798 
799 static struct CE_attr host_lowdesc_ce_config_wlan_adrastea_nopktlog[] = {
800 	/* host->target HTC control and raw streams */
801 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
802 	/* target->host HTT + HTC control */
803 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 256, NULL,},
804 	/* target->host WMI */
805 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 64, NULL,},
806 	/* host->target WMI */
807 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
808 	/* host->target HTT */
809 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
810 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
811 	/* ipa_uc->target HTC control */
812 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
813 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
814 	/* Target autonomous HIF_memcpy */
815 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
816 	/* ce_diag, the Diagnostic Window */
817 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
818 	/* Target to uMC */
819 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
820 	/* target->host HTT */
821 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 64, NULL,},
822 	/* target->host HTT */
823 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 64, NULL,},
824 	/* target -> host PKTLOG */
825 	{ /* CE11 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
826 		0, 2048, 0, NULL,},
827 };
828 
829 static struct CE_attr host_ce_config_wlan_adrastea[] = {
830 	/* host->target HTC control and raw streams */
831 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
832 	/* target->host HTT + HTC control */
833 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
834 	/* target->host WMI */
835 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
836 	/* host->target WMI */
837 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
838 	/* host->target HTT */
839 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
840 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
841 	/* ipa_uc->target HTC control */
842 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
843 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
844 	/* Target autonomous HIF_memcpy */
845 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
846 	/* ce_diag, the Diagnostic Window */
847 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
848 	/* Target to uMC */
849 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
850 	/* target->host HTT */
851 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
852 	/* target->host HTT */
853 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
854 	/* target -> host PKTLOG */
855 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
856 };
857 
858 static struct CE_pipe_config
859 	target_lowdesc_ce_config_wlan_adrastea_nopktlog[] = {
860 	/* host->target HTC control and raw streams */
861 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
862 	/* target->host HTT */
863 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
864 	/* target->host WMI  + HTC control */
865 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
866 	/* host->target WMI */
867 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
868 	/* host->target HTT */
869 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
870 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
871 	/* NB: 50% of src nentries, since tx has 2 frags */
872 	/* ipa_uc->target */
873 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
874 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
875 	/* Reserved for target autonomous HIF_memcpy */
876 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
877 	/* CE7 used only by Host */
878 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
879 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
880 	/* CE8 used only by IPA */
881 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
882 	/* CE9 target->host HTT */
883 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
884 	/* CE10 target->host HTT */
885 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
886 	/* Target -> host PKTLOG */
887 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048,
888 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
889 };
890 
891 static struct CE_pipe_config target_ce_config_wlan_adrastea[] = {
892 	/* host->target HTC control and raw streams */
893 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
894 	/* target->host HTT */
895 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
896 	/* target->host WMI  + HTC control */
897 	{ /* CE2 */ 2, PIPEDIR_IN,  64, 2048, CE_ATTR_FLAGS, 0,},
898 	/* host->target WMI */
899 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
900 	/* host->target HTT */
901 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
902 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
903 	/* NB: 50% of src nentries, since tx has 2 frags */
904 	/* ipa_uc->target */
905 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
906 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
907 	/* Reserved for target autonomous HIF_memcpy */
908 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
909 	/* CE7 used only by Host */
910 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
911 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
912 	/* CE8 used only by IPA */
913 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
914 	/* CE9 target->host HTT */
915 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
916 	/* CE10 target->host HTT */
917 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
918 	/* Target -> host PKTLOG */
919 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
920 };
921 
922 #define QCN_9000_CE_COUNT 6
923 /* QCN9000 enable polling mode */
924 static struct CE_attr host_ce_config_wlan_qcn9000[] = {
925 	/* host->target HTC control and raw streams */
926 	{/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
927 	/* target->host HTT + HTC control */
928 	{/*CE1*/ (CE_ATTR_FLAGS), 0, 0,  2048,
929 		512, NULL,},
930 	/* target->host WMI */
931 	{/*CE2*/ (CE_ATTR_FLAGS), 0, 0,  2048,
932 		32, NULL,},
933 	/* host->target WMI */
934 	{/*CE3*/ (CE_ATTR_FLAGS), 0, 32, 2048, 0, NULL,},
935 	/* host->target HTT */
936 	{/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
937 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
938 	/* target -> host PKTLOG */
939 	{/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
940 		512, NULL,},
941 	/* Target autonomous HIF_memcpy */
942 	{/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
943 	/* host->target WMI (mac1) */
944 	{/*CE7*/ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
945 	/* Reserved for target */
946 	{/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
947 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
948 };
949 
950 static struct CE_pipe_config target_ce_config_wlan_qcn9000[] = {
951 	/* host->target HTC control and raw streams */
952 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
953 	/* target->host HTT */
954 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
955 	/* target->host WMI  + HTC control */
956 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
957 	/* host->target WMI */
958 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
959 	/* host->target HTT */
960 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
961 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
962 	/* Target -> host PKTLOG */
963 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
964 	/* Reserved for target autonomous HIF_memcpy */
965 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
966 	/* CE7 used only by Host */
967 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
968 		8192, 0,},
969 	/* Reserved for target */
970 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
971 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
972 };
973 
974 #define QCA_6290_CE_COUNT 9
975 #ifdef QCA_6290_AP_MODE
976 static struct CE_attr host_ce_config_wlan_qca6290[] = {
977 	/* host->target HTC control and raw streams */
978 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
979 	/* target->host HTT + HTC control */
980 	{ /* CE1 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
981 		512, NULL,},
982 	/* target->host WMI */
983 	{ /* CE2 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
984 		32, NULL,},
985 	/* host->target WMI */
986 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
987 	/* host->target HTT */
988 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
989 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
990 	/* target -> host PKTLOG */
991 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
992 		512, NULL,},
993 	/* Target autonomous HIF_memcpy */
994 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
995 	/* host->target WMI (mac1) */
996 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
997 	/* Reserved for target */
998 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
999 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1000 };
1001 
1002 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
1003 	/* host->target HTC control and raw streams */
1004 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1005 	/* target->host HTT */
1006 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1007 	/* target->host WMI  + HTC control */
1008 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1009 	/* host->target WMI */
1010 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1011 	/* host->target HTT */
1012 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1013 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1014 	/* Target -> host PKTLOG */
1015 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1016 	/* Reserved for target autonomous HIF_memcpy */
1017 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1018 	/* CE7 used only by Host */
1019 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
1020 		8192, 0,},
1021 	/* Reserved for target */
1022 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1023 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1024 };
1025 #else
1026 static struct CE_attr host_ce_config_wlan_qca6290[] = {
1027 	/* host->target HTC control and raw streams */
1028 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1029 	/* target->host HTT + HTC control */
1030 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1031 	/* target->host WMI */
1032 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
1033 	/* host->target WMI */
1034 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1035 	/* host->target HTT */
1036 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1037 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1038 	/* target -> host PKTLOG */
1039 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
1040 	/* Target autonomous HIF_memcpy */
1041 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1042 	/* ce_diag, the Diagnostic Window */
1043 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1044 		2, DIAG_TRANSFER_LIMIT, 2, NULL,},
1045 	/* Reserved for target */
1046 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1047 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1048 };
1049 
1050 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
1051 	/* host->target HTC control and raw streams */
1052 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1053 	/* target->host HTT */
1054 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1055 	/* target->host WMI  + HTC control */
1056 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1057 	/* host->target WMI */
1058 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1059 	/* host->target HTT */
1060 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1061 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1062 	/* Target -> host PKTLOG */
1063 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1064 	/* Reserved for target autonomous HIF_memcpy */
1065 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1066 	/* CE7 used only by Host */
1067 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1068 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1069 	/* Reserved for target */
1070 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1071 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1072 };
1073 #endif
1074 
1075 #define QCA_6390_CE_COUNT 9
1076 static struct CE_attr host_ce_config_wlan_qca6390[] = {
1077 	/* host->target HTC control and raw streams */
1078 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1079 	/* target->host HTT + HTC control */
1080 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1081 	/* target->host WMI */
1082 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
1083 	/* host->target WMI */
1084 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1085 	/* host->target HTT */
1086 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1087 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1088 	/* target -> host PKTLOG */
1089 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
1090 	/* Target autonomous HIF_memcpy */
1091 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1092 	/* ce_diag, the Diagnostic Window */
1093 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1094 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
1095 	/* Reserved for target */
1096 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1097 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1098 };
1099 
1100 static struct CE_pipe_config target_ce_config_wlan_qca6390[] = {
1101 	/* host->target HTC control and raw streams */
1102 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1103 	/* target->host HTT */
1104 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1105 	/* target->host WMI  + HTC control */
1106 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1107 	/* host->target WMI */
1108 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1109 	/* host->target HTT */
1110 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1111 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1112 	/* Target -> host PKTLOG */
1113 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1114 	/* Reserved for target autonomous HIF_memcpy */
1115 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1116 	/* CE7 used only by Host */
1117 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1118 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1119 	/* Reserved for target */
1120 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1121 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1122 };
1123 
1124 #define QCA_6490_CE_COUNT 9
1125 static struct CE_attr host_ce_config_wlan_qca6490[] = {
1126 	/* host->target HTC control and raw streams */
1127 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
1128 	/* target->host HTT + HTC control */
1129 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
1130 	/* target->host WMI */
1131 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
1132 	/* host->target WMI */
1133 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
1134 	/* host->target HTT */
1135 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1136 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
1137 	/* target -> host PKTLOG */
1138 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
1139 	/* Target autonomous HIF_memcpy */
1140 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1141 	/* ce_diag, the Diagnostic Window */
1142 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
1143 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
1144 	/* Reserved for target */
1145 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
1146 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1147 };
1148 
1149 static struct CE_pipe_config target_ce_config_wlan_qca6490[] = {
1150 	/* host->target HTC control and raw streams */
1151 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1152 	/* target->host HTT */
1153 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1154 	/* target->host WMI  + HTC control */
1155 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1156 	/* host->target WMI */
1157 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
1158 	/* host->target HTT */
1159 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
1160 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1161 	/* Target -> host PKTLOG */
1162 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
1163 	/* Reserved for target autonomous HIF_memcpy */
1164 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1165 	/* CE7 used only by Host */
1166 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
1167 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
1168 	/* Reserved for target */
1169 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
1170 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
1171 };
1172 #endif /* __HIF_PCI_INTERNAL_H__ */
1173