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