xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/ce/ce_assignment.h (revision 3149adf58a329e17232a4c0e58d460d025edd55a)
1 /*
2  * Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
3  *
4  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5  *
6  *
7  * Permission to use, copy, modify, and/or distribute this software for
8  * any purpose with or without fee is hereby granted, provided that the
9  * above copyright notice and this permission notice appear in all
10  * copies.
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19  * PERFORMANCE OF THIS SOFTWARE.
20  */
21 
22 /*
23  * This file was originally distributed by Qualcomm Atheros, Inc.
24  * under proprietary terms before Copyright ownership was assigned
25  * to the Linux Foundation.
26  */
27 
28 /*
29  * Implementation of the Host-side Host InterFace (HIF) API
30  * for a Host/Target interconnect using Copy Engines over PCIe.
31  */
32 
33 #ifndef __HIF_PCI_INTERNAL_H__
34 #define __HIF_PCI_INTERNAL_H__
35 
36 #ifndef CONFIG_WIN
37 #ifndef PEER_CACHEING_HOST_ENABLE
38 #define PEER_CACHEING_HOST_ENABLE 0
39 #endif
40 #endif
41 
42 #define HIF_PCI_DEBUG   ATH_DEBUG_MAKE_MODULE_MASK(0)
43 #define HIF_PCI_IPA_UC_ASSIGNED_CE  5
44 
45 #if defined(WLAN_DEBUG) || defined(DEBUG)
46 static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = {
47 	{HIF_PCI_DEBUG, "hif_pci"},
48 };
49 
50 ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface",
51 				ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO,
52 				ATH_DEBUG_DESCRIPTION_COUNT
53 					 (g_hif_debug_description),
54 				 g_hif_debug_description);
55 #endif
56 
57 #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
58 /* globals are initialized to 0 by the compiler */;
59 spinlock_t pcie_access_log_lock;
60 unsigned int pcie_access_log_seqnum;
61 struct HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM];
62 static void hif_target_dump_access_log(void);
63 #endif
64 
65 /*
66  * Host software's Copy Engine configuration.
67  * This table is derived from the CE_PCI TABLE, above.
68  */
69 #ifdef BIG_ENDIAN_HOST
70 #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA
71 #else
72 #define CE_ATTR_FLAGS 0
73 #endif
74 
75 /* Maximum number of Copy Engine's supported */
76 #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048
77 #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096
78 
79 #define EPPING_CE_FLAGS_POLL \
80 	(CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS)
81 
82 #ifdef CONFIG_WIN
83 #define PIPEDIR_INOUT_H2H 4
84 #endif
85 
86 #define CE_ATTR_DIAG_FLAGS \
87 	(CE_ATTR_FLAGS | CE_ATTR_DIAG)
88 
89 #ifdef QCA_WIFI_3_0
90 static struct CE_attr host_ce_config_wlan[] = {
91 	/* host->target HTC control and raw streams */
92 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
93 	/* target->host HTT + HTC control */
94 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
95 	/* target->host WMI */
96 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 128, NULL,},
97 	/* host->target WMI */
98 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
99 	/* host->target HTT */
100 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
101 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
102 	/* ipa_uc->target HTC control */
103 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
104 		CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
105 	/* Target autonomous HIF_memcpy */
106 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
107 	/* ce_diag, the Diagnostic Window */
108 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
109 	/* Target to uMC */
110 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
111 	/* target->host HTT */
112 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
113 	/* target->host HTT */
114 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
115 	/* target -> host PKTLOG */
116 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
117 };
118 
119 static struct CE_pipe_config target_ce_config_wlan[] = {
120 	/* host->target HTC control and raw streams */
121 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 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,  64, 2048, CE_ATTR_FLAGS, 0,},
126 	/* host->target WMI */
127 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
128 	/* host->target HTT */
129 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
130 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
131 	/* NB: 50% of src nentries, since tx has 2 frags */
132 	/* ipa_uc->target */
133 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
134 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
135 	/* Reserved for target autonomous HIF_memcpy */
136 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
137 	/* CE7 used only by Host */
138 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
139 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
140 	/* CE8 used only by IPA */
141 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
142 	/* CE9 target->host HTT */
143 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
144 	/* CE10 target->host HTT */
145 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
146 	/* Target -> host PKTLOG */
147 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
148 };
149 
150 #ifdef WLAN_FEATURE_EPPING
151 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
152 	/* host->target HTC control and raw streams */
153 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
154 	/* target->host EP-ping */
155 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
156 	/* target->host EP-ping */
157 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
158 	/* host->target EP-ping */
159 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
160 	/* host->target EP-ping */
161 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
162 	/* EP-ping heartbeat */
163 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
164 	/* unused */
165 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
166 	/* ce_diag, the Diagnostic Window */
167 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
168 };
169 
170 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
171 	/* host->target HTC control and raw streams */
172 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
173 	/* target->host EP-ping */
174 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
175 	/* target->host EP-ping */
176 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
177 	/* host->target EP-ping */
178 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
179 	/* host->target EP-ping */
180 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
181 	/* EP-ping heartbeat */
182 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
183 	/* unused */
184 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
185 	/* ce_diag, the Diagnostic Window */
186 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
187 };
188 /*
189  * EP-ping firmware's CE configuration
190  */
191 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
192 	/* host->target HTC control and raw streams */
193 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
194 	/* target->host EP-ping */
195 	{ /* CE1 */ 1, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
196 	/* target->host EP-ping */
197 	{ /* CE2 */ 2, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
198 	/* host->target EP-ping */
199 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
200 	/* host->target EP-ping */
201 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
202 	/* EP-ping heartbeat */
203 	{ /* CE5 */ 5, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
204 	/* unused */
205 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
206 	/* CE7 used only by Host */
207 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
208 	/* CE8 used only by IPA */
209 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
210 };
211 #endif
212 #else
213 static struct CE_attr host_ce_config_wlan[] = {
214 	/* host->target HTC control and raw streams */
215 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16,  256, 0, NULL,},
216 	/* target->host HTT + HTC control */
217 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
218 	/* target->host WMI */
219 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
220 	/* host->target WMI */
221 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
222 	/* host->target HTT */
223 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
224 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
225 	/* ipa_uc->target HTC control */
226 	{ /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
227 		1024, 512, 0, NULL,},
228 	/* Target autonomous HIF_memcpy */
229 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
230 	/* ce_diag, the Diagnostic Window */
231 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR),
232 		0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
233 };
234 
235 static struct CE_pipe_config target_ce_config_wlan[] = {
236 	/* host->target HTC control and raw streams */
237 	{ /* CE0 */ 0, PIPEDIR_OUT, 32,  256, CE_ATTR_FLAGS, 0,},
238 	/* target->host HTT + HTC control */
239 	{ /* CE1 */ 1, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
240 	/* target->host WMI */
241 	{ /* CE2 */ 2, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
242 	/* host->target WMI */
243 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
244 	/* host->target HTT */
245 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
246 	/* NB: 50% of src nentries, since tx has 2 frags */
247 	/* ipa_uc->target HTC control */
248 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64, CE_ATTR_FLAGS, 0,},
249 	/* Reserved for target autonomous HIF_memcpy */
250 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,},
251 	/* CE7 used only by Host */
252 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
253 	/* CE8 used only by IPA */
254 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
255 };
256 
257 #ifdef WLAN_FEATURE_EPPING
258 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
259 	/* host->target HTC control and raw streams */
260 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
261 	/* target->host EP-ping */
262 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
263 	/* target->host EP-ping */
264 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
265 	/* host->target EP-ping */
266 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
267 	/* host->target EP-ping */
268 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
269 	/* EP-ping heartbeat */
270 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
271 	/* unused */
272 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
273 	/* ce_diag, the Diagnostic Window */
274 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
275 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
276 	/* The following CEs are not being used yet */
277 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
278 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
279 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
280 };
281 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
282 	/* host->target HTC control and raw streams */
283 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
284 	/* target->host EP-ping */
285 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
286 	/* target->host EP-ping */
287 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
288 	/* host->target EP-ping */
289 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
290 	/* host->target EP-ping */
291 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
292 	/* EP-ping heartbeat */
293 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
294 	/* unused */
295 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
296 	/* ce_diag, the Diagnostic Window */
297 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
298 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
299 	/* The following CEs are not being used yet */
300 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
301 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
302 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
303 };
304 /*
305  * EP-ping firmware's CE configuration
306  */
307 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
308 	/* host->target HTC control and raw streams */
309 	{ /* CE0 */ 0, PIPEDIR_OUT, 16,   256, CE_ATTR_FLAGS, 0,},
310 	/* target->host EP-ping */
311 	{ /* CE1 */ 1, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
312 	/* target->host EP-ping */
313 	{ /* CE2 */ 2, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
314 	/* host->target EP-ping */
315 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
316 	/* host->target EP-ping */
317 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
318 	/* EP-ping heartbeat */
319 	{ /* CE5 */ 5, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
320 	/* unused */
321 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
322 	/* CE7 used only by Host */
323 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
324 	/* CE8 used only by IPA */
325 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
326 	{ /* CE9 */ 9, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
327 	{ /* CE10 */ 10, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
328 	{ /* CE11 */ 11, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
329 };
330 #endif
331 #endif
332 
333 static struct CE_attr host_ce_config_wlan_ar9888[] = {
334 	/* host->target HTC control and raw streams */
335 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
336 	/* target->host BMI + HTC control */
337 	/* could be moved to share CE3 */
338 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
339 	/* target->host WMI */
340 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
341 	/* host->target WMI */
342 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
343 	/* host->target HTT */
344 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
345 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
346 #if WLAN_FEATURE_FASTPATH
347 	/* target->host HTT messages */
348 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
349 #else   /* WLAN_FEATURE_FASTPATH */
350 	/* unused */
351 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
352 #endif  /* WLAN_FEATURE_FASTPATH */
353 	/* Target autonomous HIF_memcpy */
354 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
355 	/* ce_diag, the Diagnostic Window */
356 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
357 	/* Target autonomous HIF_memcpy */
358 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
359 };
360 
361 static struct CE_attr host_ce_config_wlan_ar900b[] = {
362 	/* host->target HTC control and raw streams */
363 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
364 	/* target->host BMI + HTC control */
365 	/* could be moved to share CE3 */
366 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
367 	/* target->host WMI */
368 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
369 	/* host->target WMI */
370 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
371 	/* host->target HTT */
372 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
373 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
374 #if WLAN_FEATURE_FASTPATH
375 	/* target->host HTT messages */
376 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
377 #else   /* WLAN_FEATURE_FASTPATH */
378 	/* unused */
379 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
380 #endif  /* WLAN_FEATURE_FASTPATH */
381 	/* Target autonomous HIF_memcpy */
382 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
383 	/* ce_diag, the Diagnostic Window */
384 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
385 	/* target->host pktlog */
386 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
387 	/* Target autonomous HIF_memcpy */
388 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
389 	/* Target autonomous HIF_memcpy */
390 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
391 	/* Target autonomous HIF_memcpy */
392 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
393 };
394 
395 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = {
396 	/* host->target HTC control and raw streams */
397 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
398 	/* could be moved to share CE3 */
399 #if WLAN_FEATURE_FASTPATH
400 	/* target->host BMI + HTC control */
401 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
402 #else
403 	/* target->host BMI + HTC control */
404 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
405 #endif
406 	/* target->host WMI */
407 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
408 	/* host->target WMI */
409 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
410 	/* host->target HTT */
411 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
412 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
413 #if WLAN_FEATURE_FASTPATH
414 	/* target->host HTT messages */
415 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
416 #else   /* WLAN_FEATURE_FASTPATH */
417 	/* unused */
418 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
419 #endif  /* WLAN_FEATURE_FASTPATH */
420 	/* Target autonomous HIF_memcpy */
421 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
422 	/* ce_diag, the Diagnostic Window */
423 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
424 	/* Target autonomous HIF_memcpy */
425 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
426 };
427 
428 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = {
429 	/* host->target HTC control and raw streams */
430 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
431 	/* could be moved to share CE3 */
432 #if WLAN_FEATURE_FASTPATH
433 	/* target->host BMI + HTC control */
434 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
435 #else
436 	/* target->host BMI + HTC control */
437 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
438 #endif
439 	/* target->host WMI */
440 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
441 	/* host->target WMI */
442 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
443 	/* host->target HTT */
444 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
445 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
446 #if WLAN_FEATURE_FASTPATH
447 	/* target->host HTT messages */
448 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
449 #else   /* WLAN_FEATURE_FASTPATH */
450 	/* unused */
451 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
452 #endif  /* WLAN_FEATURE_FASTPATH */
453 	/* Target autonomous HIF_memcpy */
454 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
455 	/* ce_diag, the Diagnostic Window */
456 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
457 	/* target->host pktlog */
458 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
459 	/* Target autonomous HIF_memcpy */
460 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
461 	/* Target autonomous HIF_memcpy */
462 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
463 	/* Target autonomous HIF_memcpy */
464 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
465 };
466 
467 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = {
468 	/* host->target HTC control and raw streams */
469 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
470 	/* could be moved to share CE3 */
471 #if WLAN_FEATURE_FASTPATH
472 	/* target->host BMI + HTC control */
473 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
474 #else
475 	/* target->host BMI + HTC control */
476 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
477 #endif
478 	/* target->host WMI */
479 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
480 	/* host->target WMI */
481 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
482 	/* host->target HTT */
483 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
484 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
485 #if WLAN_FEATURE_FASTPATH
486 	/* target->host HTT messages */
487 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
488 #else   /* WLAN_FEATURE_FASTPATH */
489 	/* unused */
490 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
491 #endif  /* WLAN_FEATURE_FASTPATH */
492 	/* Target autonomous HIF_memcpy */
493 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
494 	/* ce_diag, the Diagnostic Window */
495 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
496 	/* target->host pktlog */
497 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
498 	/* Target autonomous HIF_memcpy */
499 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
500 	/* Target autonomous HIF_memcpy */
501 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
502 	/* Target autonomous HIF_memcpy */
503 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
504 };
505 
506 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
507 	/* host->target HTC control and raw streams */
508 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
509 	/* target->host HTC control */
510 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
511 	/* target->host WMI */
512 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
513 	/* host->target WMI */
514 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
515 	/* host->target HTT */
516 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
517 	/* NB: 50% of src nentries, since tx has 2 frags */
518 #if WLAN_FEATURE_FASTPATH
519 	/* target->host HTT */
520 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
521 #else
522 	/* unused */
523 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
524 #endif
525 	/* Reserved for target autonomous HIF_memcpy */
526 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
527 	/* CE7 used only by Host */
528 };
529 
530 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
531 	/* host->target HTC control and raw streams */
532 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
533 	/* target->host HTC control */
534 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
535 	/* target->host WMI */
536 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
537 	/* host->target WMI */
538 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
539 	/* host->target HTT */
540 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
541 	/* NB: 50% of src nentries, since tx has 2 frags */
542 #if WLAN_FEATURE_FASTPATH
543 	/* target->host HTT */
544 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
545 #else
546 	/* unused */
547 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
548 #endif
549 	/* Reserved for target autonomous HIF_memcpy */
550 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
551 	/* CE7 used only by Host */
552 	{ /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, },
553 	{ /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
554 		/* target->host packtlog */
555 		| CE_ATTR_DISABLE_INTR, 0, },
556 #if PEER_CACHEING_HOST_ENABLE
557 	/* target autonomous qcache memcpy */
558 	{ /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
559 		CE_ATTR_DISABLE_INTR, 0, },
560 #endif
561 };
562 
563 static struct CE_attr host_ce_config_wlan_qca8074[] = {
564 	/* host->target HTC control and raw streams */
565 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
566 	/* target->host HTT + HTC control */
567 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
568 	/* target->host WMI */
569 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 256, NULL,},
570 	/* host->target WMI (mac0) */
571 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
572 	/* host->target HTT */
573 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
574 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
575 	/* target -> host PKTLOG */
576 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
577 	/* Target autonomous HIF_memcpy */
578 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
579 	/* host->target WMI (mac1) */
580 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
581 	/* Target to uMC */
582 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
583 	/* host->target WMI (mac2) */
584 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 32,  2048, 0, NULL,},
585 	/* target->host HTT */
586 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
587 	/* CE11 unused */
588 };
589 
590 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = {
591 	/* host->target HTC control and raw streams */
592 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
593 	/* target->host HTT */
594 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
595 	/* target->host WMI  + HTC control */
596 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
597 	/* host->target WMI */
598 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
599 	/* host->target HTT */
600 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
601 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
602 	/* NB: 50% of src nentries, since tx has 2 frags */
603 	/* Target -> host PKTLOG */
604 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, 0, 0,},
605 	/* Reserved for target autonomous HIF_memcpy */
606 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
607 	/* CE7 used only by Host */
608 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
609 		8192, 0,},
610 	/* CE8 used only by IPA */
611 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
612 	/* CE9 target->host HTT */
613 	{ /* CE9 */ 9, PIPEDIR_OUT,  32, 2048, 8192, 0,},
614 	/* CE10 target->host HTT */
615 	{ /* CE10 */ 10, PIPEDIR_INOUT_H2H,  0, 0, 0, 0,},
616 };
617 
618 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = {
619 	/* host->target HTC control and raw streams */
620 	{ /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,},
621 	/* target->host HTT + HTC control */
622 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 512, NULL,},
623 	/* target->host WMI */
624 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 256, NULL,},
625 	/* host->target WMI (mac0) */
626 	{ /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
627 	/* host->target HTT */
628 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
629 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
630 	/* target -> host PKTLOG */
631 	{ /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
632 	/* Target autonomous HIF_memcpy */
633 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
634 	/* host->target WMI (mac1) */
635 	{ /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
636 	/* Target to uMC */
637 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
638 	/* host->target WMI (mac2) */
639 	{ /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32,  2048, 0, NULL,},
640 	/* target->host HTT */
641 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
642 	/* CE11 unused */
643 };
644 
645 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = {
646 	/* host->target HTC control and raw streams */
647 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
648 	/* target->host HTT */
649 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
650 	/* target->host WMI  + HTC control */
651 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
652 	/* host->target WMI */
653 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
654 	/* host->target HTT */
655 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
656 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
657 	/* NB: 50% of src nentries, since tx has 2 frags */
658 	/* ipa_uc->target */
659 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
660 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
661 	/* Reserved for target autonomous HIF_memcpy */
662 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
663 	/* CE7 used only by Host */
664 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
665 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
666 	/* CE8 used only by IPA */
667 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
668 	/* CE9 target->host HTT */
669 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
670 	/* CE10 target->host HTT */
671 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
672 	/* Target -> host PKTLOG */
673 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
674 };
675 
676 #define QCA_6290_CE_COUNT 9
677 #ifdef CONFIG_WIN
678 static struct CE_attr host_ce_config_wlan_qca6290[] = {
679 	/* host->target HTC control and raw streams */
680 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
681 	/* target->host HTT + HTC control */
682 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
683 	/* target->host WMI */
684 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
685 	/* host->target WMI */
686 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
687 	/* host->target HTT */
688 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
689 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
690 	/* target -> host PKTLOG */
691 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
692 	/* Target autonomous HIF_memcpy */
693 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
694 	/* host->target WMI (mac1) */
695 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
696 	/* Reserved for target */
697 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
698 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
699 };
700 
701 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
702 	/* host->target HTC control and raw streams */
703 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
704 	/* target->host HTT */
705 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
706 	/* target->host WMI  + HTC control */
707 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
708 	/* host->target WMI */
709 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
710 	/* host->target HTT */
711 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
712 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
713 	/* Target -> host PKTLOG */
714 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
715 	/* Reserved for target autonomous HIF_memcpy */
716 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
717 	/* CE7 used only by Host */
718 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
719 		8192, 0,},
720 	/* Reserved for target */
721 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
722 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
723 };
724 #else
725 static struct CE_attr host_ce_config_wlan_qca6290[] = {
726 	/* host->target HTC control and raw streams */
727 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
728 	/* target->host HTT + HTC control */
729 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
730 	/* target->host WMI */
731 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
732 	/* host->target WMI */
733 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
734 	/* host->target HTT */
735 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
736 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
737 	/* target -> host PKTLOG */
738 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
739 	/* Target autonomous HIF_memcpy */
740 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
741 	/* ce_diag, the Diagnostic Window */
742 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
743 		2, DIAG_TRANSFER_LIMIT, 2, NULL,},
744 	/* Reserved for target */
745 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
746 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
747 };
748 
749 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
750 	/* host->target HTC control and raw streams */
751 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
752 	/* target->host HTT */
753 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
754 	/* target->host WMI  + HTC control */
755 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
756 	/* host->target WMI */
757 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
758 	/* host->target HTT */
759 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
760 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
761 	/* Target -> host PKTLOG */
762 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
763 	/* Reserved for target autonomous HIF_memcpy */
764 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
765 	/* CE7 used only by Host */
766 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
767 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
768 	/* Reserved for target */
769 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
770 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
771 };
772 #endif
773 #endif /* __HIF_PCI_INTERNAL_H__ */
774