xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/ce/ce_assignment.h (revision 8ddef7dd9a290d4a9b1efd5d3efacf51d78a1a0d)
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 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 #ifdef QCN7605_SUPPORT
235 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
236 	/* host->target HTC control and raw streams */
237 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
238 	/* target->host EP-ping */
239 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 32, NULL,},
240 	/* target->host EP-ping */
241 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 32, NULL,},
242 	/* host->target EP-ping */
243 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
244 	/* host->target EP-ping */
245 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
246 	/* EP-ping heartbeat */
247 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 16, NULL,},
248 	/* unused */
249 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
250 	/* ce_diag, the Diagnostic Window */
251 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
252 };
253 
254 /*
255  * EP-ping firmware's CE configuration
256  */
257 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
258 	/* host->target HTC control and raw streams */
259 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
260 	/* target->host EP-ping */
261 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
262 	/* target->host EP-ping */
263 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
264 	/* host->target EP-ping */
265 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
266 	/* host->target EP-ping */
267 	{ /* CE4 */ 4, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
268 	/* EP-ping heartbeat */
269 	{ /* CE5 */ 5, PIPEDIR_IN,  16, 2048, CE_ATTR_FLAGS, 0,},
270 	/* unused */
271 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
272 	/* CE7 used only by Host */
273 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
274 	/* CE8 used only by IPA */
275 	{ /* CE8 */ 8, PIPEDIR_IN, 4, 2048, CE_ATTR_FLAGS, 0,}
276 };
277 #else
278 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
279 	/* host->target HTC control and raw streams */
280 	{ /* CE0 */ CE_ATTR_FLAGS, 0,  16, 2048, 0, NULL,},
281 	/* target->host EP-ping */
282 	{ /* CE1 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
283 	/* target->host EP-ping */
284 	{ /* CE2 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
285 	/* host->target EP-ping */
286 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
287 	/* host->target EP-ping */
288 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
289 	/* EP-ping heartbeat */
290 	{ /* CE5 */ CE_ATTR_FLAGS, 0,   0, 2048, 128, NULL,},
291 	/* unused */
292 	{ /* CE6 */ CE_ATTR_FLAGS, 0,   0, 0, 0, NULL,},
293 	/* ce_diag, the Diagnostic Window */
294 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0,   2, DIAG_TRANSFER_LIMIT, 2, NULL,},
295 };
296 /*
297  * EP-ping firmware's CE configuration
298  */
299 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
300 	/* host->target HTC control and raw streams */
301 	{ /* CE0 */ 0, PIPEDIR_OUT,  16, 2048, CE_ATTR_FLAGS, 0,},
302 	/* target->host EP-ping */
303 	{ /* CE1 */ 1, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
304 	/* target->host EP-ping */
305 	{ /* CE2 */ 2, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
306 	/* host->target EP-ping */
307 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
308 	/* host->target EP-ping */
309 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
310 	/* EP-ping heartbeat */
311 	{ /* CE5 */ 5, PIPEDIR_IN,  128, 2048, CE_ATTR_FLAGS, 0,},
312 	/* unused */
313 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
314 	/* CE7 used only by Host */
315 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
316 	/* CE8 used only by IPA */
317 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
318 };
319 #endif
320 #endif
321 #else
322 static struct CE_attr host_ce_config_wlan[] = {
323 	/* host->target HTC control and raw streams */
324 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16,  256, 0, NULL,},
325 	/* target->host HTT + HTC control */
326 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
327 	/* target->host WMI */
328 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
329 	/* host->target WMI */
330 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
331 	/* host->target HTT */
332 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
333 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
334 	/* ipa_uc->target HTC control */
335 	{ /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
336 		1024, 512, 0, NULL,},
337 	/* Target autonomous HIF_memcpy */
338 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
339 	/* ce_diag, the Diagnostic Window */
340 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR),
341 		0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
342 };
343 
344 static struct CE_pipe_config target_ce_config_wlan[] = {
345 	/* host->target HTC control and raw streams */
346 	{ /* CE0 */ 0, PIPEDIR_OUT, 32,  256, CE_ATTR_FLAGS, 0,},
347 	/* target->host HTT + HTC control */
348 	{ /* CE1 */ 1, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
349 	/* target->host WMI */
350 	{ /* CE2 */ 2, PIPEDIR_IN, 32,  2048, CE_ATTR_FLAGS, 0,},
351 	/* host->target WMI */
352 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
353 	/* host->target HTT */
354 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
355 	/* NB: 50% of src nentries, since tx has 2 frags */
356 	/* ipa_uc->target HTC control */
357 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64, CE_ATTR_FLAGS, 0,},
358 	/* Reserved for target autonomous HIF_memcpy */
359 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,},
360 	/* CE7 used only by Host */
361 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
362 	/* CE8 used only by IPA */
363 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
364 };
365 
366 #ifdef WLAN_FEATURE_EPPING
367 static struct CE_attr host_ce_config_wlan_epping_poll[] = {
368 	/* host->target HTC control and raw streams */
369 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
370 	/* target->host EP-ping */
371 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
372 	/* target->host EP-ping */
373 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
374 	/* host->target EP-ping */
375 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
376 	/* host->target EP-ping */
377 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
378 	/* EP-ping heartbeat */
379 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0,   2048, 128, NULL,},
380 	/* unused */
381 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0,   0, 0, NULL,},
382 	/* ce_diag, the Diagnostic Window */
383 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2,   DIAG_TRANSFER_LIMIT, 2, NULL,},
384 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
385 	/* The following CEs are not being used yet */
386 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
387 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
388 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
389 };
390 static struct CE_attr host_ce_config_wlan_epping_irq[] = {
391 	/* host->target HTC control and raw streams */
392 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
393 	/* target->host EP-ping */
394 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
395 	/* target->host EP-ping */
396 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
397 	/* host->target EP-ping */
398 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
399 	/* host->target EP-ping */
400 	{ /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
401 	/* EP-ping heartbeat */
402 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
403 	/* unused */
404 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
405 	/* ce_diag, the Diagnostic Window */
406 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
407 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
408 	/* The following CEs are not being used yet */
409 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0,  0, 0, NULL,},
410 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
411 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
412 };
413 /*
414  * EP-ping firmware's CE configuration
415  */
416 static struct CE_pipe_config target_ce_config_wlan_epping[] = {
417 	/* host->target HTC control and raw streams */
418 	{ /* CE0 */ 0, PIPEDIR_OUT, 16,   256, CE_ATTR_FLAGS, 0,},
419 	/* target->host EP-ping */
420 	{ /* CE1 */ 1, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
421 	/* target->host EP-ping */
422 	{ /* CE2 */ 2, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
423 	/* host->target EP-ping */
424 	{ /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
425 	/* host->target EP-ping */
426 	{ /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
427 	/* EP-ping heartbeat */
428 	{ /* CE5 */ 5, PIPEDIR_IN, 128,  2048, CE_ATTR_FLAGS, 0,},
429 	/* unused */
430 	{ /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
431 	/* CE7 used only by Host */
432 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
433 	/* CE8 used only by IPA */
434 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
435 	{ /* CE9 */ 9, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
436 	{ /* CE10 */ 10, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
437 	{ /* CE11 */ 11, PIPEDIR_IN,  0, 0, CE_ATTR_FLAGS, 0,},
438 };
439 #endif
440 #endif
441 
442 static struct CE_attr host_ce_config_wlan_ar9888[] = {
443 	/* host->target HTC control and raw streams */
444 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
445 	/* target->host BMI + HTC control */
446 	/* could be moved to share CE3 */
447 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
448 	/* target->host WMI */
449 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
450 	/* host->target WMI */
451 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
452 	/* host->target HTT */
453 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
454 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
455 #ifdef WLAN_FEATURE_FASTPATH
456 	/* target->host HTT messages */
457 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
458 #else   /* WLAN_FEATURE_FASTPATH */
459 	/* unused */
460 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
461 #endif  /* WLAN_FEATURE_FASTPATH */
462 	/* Target autonomous HIF_memcpy */
463 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
464 	/* ce_diag, the Diagnostic Window */
465 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
466 	/* Target autonomous HIF_memcpy */
467 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
468 };
469 
470 static struct CE_attr host_ce_config_wlan_ar900b[] = {
471 	/* host->target HTC control and raw streams */
472 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
473 	/* target->host BMI + HTC control */
474 	/* could be moved to share CE3 */
475 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
476 	/* target->host WMI */
477 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
478 	/* host->target WMI */
479 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
480 	/* host->target HTT */
481 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
482 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
483 #ifdef WLAN_FEATURE_FASTPATH
484 	/* target->host HTT messages */
485 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
486 #else   /* WLAN_FEATURE_FASTPATH */
487 	/* unused */
488 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
489 #endif  /* WLAN_FEATURE_FASTPATH */
490 	/* Target autonomous HIF_memcpy */
491 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
492 	/* ce_diag, the Diagnostic Window */
493 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
494 	/* target->host pktlog */
495 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
496 	/* Target autonomous HIF_memcpy */
497 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
498 	/* Target autonomous HIF_memcpy */
499 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
500 	/* Target autonomous HIF_memcpy */
501 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
502 };
503 
504 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = {
505 	/* host->target HTC control and raw streams */
506 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
507 	/* could be moved to share CE3 */
508 #ifdef WLAN_FEATURE_FASTPATH
509 	/* target->host BMI + HTC control */
510 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
511 #else
512 	/* target->host BMI + HTC control */
513 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
514 #endif
515 	/* target->host WMI */
516 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
517 	/* host->target WMI */
518 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
519 	/* host->target HTT */
520 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
521 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
522 #ifdef WLAN_FEATURE_FASTPATH
523 	/* target->host HTT messages */
524 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
525 #else   /* WLAN_FEATURE_FASTPATH */
526 	/* unused */
527 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
528 #endif  /* WLAN_FEATURE_FASTPATH */
529 	/* Target autonomous HIF_memcpy */
530 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
531 	/* ce_diag, the Diagnostic Window */
532 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
533 	/* Target autonomous HIF_memcpy */
534 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
535 };
536 
537 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = {
538 	/* host->target HTC control and raw streams */
539 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
540 	/* could be moved to share CE3 */
541 #ifdef WLAN_FEATURE_FASTPATH
542 	/* target->host BMI + HTC control */
543 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
544 #else
545 	/* target->host BMI + HTC control */
546 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
547 #endif
548 	/* target->host WMI */
549 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
550 	/* host->target WMI */
551 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
552 	/* host->target HTT */
553 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
554 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
555 #ifdef WLAN_FEATURE_FASTPATH
556 	/* target->host HTT messages */
557 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
558 #else   /* WLAN_FEATURE_FASTPATH */
559 	/* unused */
560 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
561 #endif  /* WLAN_FEATURE_FASTPATH */
562 	/* Target autonomous HIF_memcpy */
563 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
564 	/* ce_diag, the Diagnostic Window */
565 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
566 	/* target->host pktlog */
567 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
568 	/* Target autonomous HIF_memcpy */
569 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
570 	/* Target autonomous HIF_memcpy */
571 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
572 	/* Target autonomous HIF_memcpy */
573 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
574 };
575 
576 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = {
577 	/* host->target HTC control and raw streams */
578 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
579 	/* could be moved to share CE3 */
580 #ifdef WLAN_FEATURE_FASTPATH
581 	/* target->host BMI + HTC control */
582 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
583 #else
584 	/* target->host BMI + HTC control */
585 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
586 #endif
587 	/* target->host WMI */
588 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
589 	/* host->target WMI */
590 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
591 	/* host->target HTT */
592 	{ /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
593 		CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
594 #ifdef WLAN_FEATURE_FASTPATH
595 	/* target->host HTT messages */
596 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
597 #else   /* WLAN_FEATURE_FASTPATH */
598 	/* unused */
599 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
600 #endif  /* WLAN_FEATURE_FASTPATH */
601 	/* Target autonomous HIF_memcpy */
602 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
603 	/* ce_diag, the Diagnostic Window */
604 	{ /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
605 	/* target->host pktlog */
606 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
607 	/* Target autonomous HIF_memcpy */
608 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
609 	/* Target autonomous HIF_memcpy */
610 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
611 	/* Target autonomous HIF_memcpy */
612 	{ /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
613 };
614 
615 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
616 	/* host->target HTC control and raw streams */
617 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
618 	/* target->host HTC control */
619 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
620 	/* target->host WMI */
621 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
622 	/* host->target WMI */
623 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
624 	/* host->target HTT */
625 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
626 	/* NB: 50% of src nentries, since tx has 2 frags */
627 #ifdef WLAN_FEATURE_FASTPATH
628 	/* target->host HTT */
629 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
630 #else
631 	/* unused */
632 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
633 #endif
634 	/* Reserved for target autonomous HIF_memcpy */
635 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
636 	/* CE7 used only by Host */
637 };
638 
639 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
640 	/* host->target HTC control and raw streams */
641 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
642 	/* target->host HTC control */
643 	{ /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
644 	/* target->host WMI */
645 	{ /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
646 	/* host->target WMI */
647 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
648 	/* host->target HTT */
649 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
650 	/* NB: 50% of src nentries, since tx has 2 frags */
651 #ifdef WLAN_FEATURE_FASTPATH
652 	/* target->host HTT */
653 	{ /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
654 #else
655 	/* unused */
656 	{ /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
657 #endif
658 	/* Reserved for target autonomous HIF_memcpy */
659 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
660 	/* CE7 used only by Host */
661 	{ /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, },
662 	{ /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
663 		/* target->host packtlog */
664 		| CE_ATTR_DISABLE_INTR, 0, },
665 #if PEER_CACHEING_HOST_ENABLE
666 	/* target autonomous qcache memcpy */
667 	{ /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
668 		CE_ATTR_DISABLE_INTR, 0, },
669 #endif
670 };
671 
672 #ifdef QCA_LOWMEM_CONFIG
673 #define WMI_MAX_BUF_SIZE 1700
674 #else
675 #define WMI_MAX_BUF_SIZE 2048
676 #endif
677 
678 static struct CE_attr host_ce_config_wlan_qca8074[] = {
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, 128, NULL,},
683 	/* target->host WMI */
684 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  WMI_MAX_BUF_SIZE, 512, NULL,},
685 	/* host->target WMI (mac0) */
686 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, WMI_MAX_BUF_SIZE, 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 | CE_ATTR_DISABLE_INTR, 0, 0,
694 		0, 0, NULL,},
695 	/* host->target WMI (mac1) */
696 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, WMI_MAX_BUF_SIZE, 0, NULL,},
697 	/* Target to uMC */
698 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
699 	/* host->target WMI (mac2) */
700 	{ /* CE9 */ CE_ATTR_FLAGS, 0, 32,  WMI_MAX_BUF_SIZE, 0, NULL,},
701 	/* target->host HTT */
702 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
703 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
704 };
705 
706 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = {
707 	/* host->target HTC control and raw streams */
708 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
709 	/* target->host HTT */
710 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
711 	/* target->host WMI  + HTC control */
712 	{ /* CE2 */ 2, PIPEDIR_IN,  32, WMI_MAX_BUF_SIZE, CE_ATTR_FLAGS, 0,},
713 	/* host->target WMI */
714 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, WMI_MAX_BUF_SIZE, CE_ATTR_FLAGS, 0,},
715 	/* host->target HTT */
716 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
717 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
718 	/* NB: 50% of src nentries, since tx has 2 frags */
719 	/* Target -> host PKTLOG */
720 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, 0, 0,},
721 	/* Reserved for target autonomous HIF_memcpy */
722 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
723 	/* CE7 host->target WMI (mac1) */
724 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, WMI_MAX_BUF_SIZE,
725 		8192, 0,},
726 	/* CE8 used only by IPA */
727 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
728 	/* CE9 host->target WMI (mac2) */
729 	{ /* CE9 */ 9, PIPEDIR_OUT,  32, WMI_MAX_BUF_SIZE, 8192, 0,},
730 	/* CE10 target->host HTT */
731 	{ /* CE10 */ 10, PIPEDIR_INOUT_H2H,  0, 0, 0, 0,},
732 	{/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
733 };
734 
735 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = {
736 	/* host->target HTC control and raw streams */
737 	{ /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,},
738 	/* target->host HTT + HTC control */
739 	{ /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 128, NULL,},
740 	/* target->host WMI */
741 	{ /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0,  2048, 256, NULL,},
742 	/* host->target WMI (mac0) */
743 	{ /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
744 	/* host->target HTT */
745 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
746 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
747 	/* target -> host PKTLOG */
748 	{ /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
749 	/* Target autonomous HIF_memcpy */
750 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
751 	/* host->target WMI (mac1) */
752 	{ /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
753 	/* Target to uMC */
754 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
755 	/* host->target WMI (mac2) */
756 	{ /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32,  2048, 0, NULL,},
757 	/* target->host HTT */
758 	{ /* CE10 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
759 	{ /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
760 };
761 
762 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = {
763 	/* host->target HTC control and raw streams */
764 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
765 	/* target->host HTT */
766 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
767 	/* target->host WMI  + HTC control */
768 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
769 	/* host->target WMI */
770 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
771 	/* host->target HTT */
772 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
773 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
774 	/* NB: 50% of src nentries, since tx has 2 frags */
775 	/* ipa_uc->target */
776 	{ /* CE5 */ 5, PIPEDIR_OUT, 1024,   64,
777 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
778 	/* Reserved for target autonomous HIF_memcpy */
779 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
780 	/* CE7 used only by Host */
781 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
782 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
783 	/* CE8 used only by IPA */
784 	{ /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
785 	/* CE9 target->host HTT */
786 	{ /* CE9 */ 9, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
787 	/* CE10 target->host HTT */
788 	{ /* CE10 */ 10, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
789 	/* Target -> host PKTLOG */
790 	{ /* CE11 */ 11, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
791 };
792 
793 #define QCA_6290_CE_COUNT 9
794 #ifdef CONFIG_WIN
795 static struct CE_attr host_ce_config_wlan_qca6290[] = {
796 	/* host->target HTC control and raw streams */
797 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
798 	/* target->host HTT + HTC control */
799 	{ /* CE1 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
800 		512, NULL,},
801 	/* target->host WMI */
802 	{ /* CE2 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0,  2048,
803 		32, NULL,},
804 	/* host->target WMI */
805 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
806 	/* host->target HTT */
807 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
808 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
809 	/* target -> host PKTLOG */
810 	{ /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
811 		512, NULL,},
812 	/* Target autonomous HIF_memcpy */
813 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
814 	/* host->target WMI (mac1) */
815 	{ /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
816 	/* Reserved for target */
817 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
818 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
819 };
820 
821 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
822 	/* host->target HTC control and raw streams */
823 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
824 	/* target->host HTT */
825 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
826 	/* target->host WMI  + HTC control */
827 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
828 	/* host->target WMI */
829 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
830 	/* host->target HTT */
831 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
832 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
833 	/* Target -> host PKTLOG */
834 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
835 	/* Reserved for target autonomous HIF_memcpy */
836 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
837 	/* CE7 used only by Host */
838 	{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
839 		8192, 0,},
840 	/* Reserved for target */
841 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
842 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
843 };
844 #else
845 static struct CE_attr host_ce_config_wlan_qca6290[] = {
846 	/* host->target HTC control and raw streams */
847 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
848 	/* target->host HTT + HTC control */
849 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
850 	/* target->host WMI */
851 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
852 	/* host->target WMI */
853 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
854 	/* host->target HTT */
855 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
856 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
857 	/* target -> host PKTLOG */
858 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
859 	/* Target autonomous HIF_memcpy */
860 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
861 	/* ce_diag, the Diagnostic Window */
862 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
863 		2, DIAG_TRANSFER_LIMIT, 2, NULL,},
864 	/* Reserved for target */
865 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
866 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
867 };
868 
869 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
870 	/* host->target HTC control and raw streams */
871 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
872 	/* target->host HTT */
873 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
874 	/* target->host WMI  + HTC control */
875 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
876 	/* host->target WMI */
877 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
878 	/* host->target HTT */
879 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
880 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
881 	/* Target -> host PKTLOG */
882 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
883 	/* Reserved for target autonomous HIF_memcpy */
884 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
885 	/* CE7 used only by Host */
886 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
887 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
888 	/* Reserved for target */
889 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
890 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
891 };
892 #endif
893 
894 #define QCA_6390_CE_COUNT 9
895 static struct CE_attr host_ce_config_wlan_qca6390[] = {
896 	/* host->target HTC control and raw streams */
897 	{ /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
898 	/* target->host HTT + HTC control */
899 	{ /* CE1 */ CE_ATTR_FLAGS, 0, 0,  2048, 512, NULL,},
900 	/* target->host WMI */
901 	{ /* CE2 */ CE_ATTR_FLAGS, 0, 0,  2048, 32, NULL,},
902 	/* host->target WMI */
903 	{ /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
904 	/* host->target HTT */
905 	{ /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
906 		CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
907 	/* target -> host PKTLOG */
908 	{ /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
909 	/* Target autonomous HIF_memcpy */
910 	{ /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
911 	/* ce_diag, the Diagnostic Window */
912 	{ /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
913 		0, DIAG_TRANSFER_LIMIT, 0, NULL,},
914 	/* Reserved for target */
915 	{ /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
916 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
917 };
918 
919 static struct CE_pipe_config target_ce_config_wlan_qca6390[] = {
920 	/* host->target HTC control and raw streams */
921 	{ /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
922 	/* target->host HTT */
923 	{ /* CE1 */ 1, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
924 	/* target->host WMI  + HTC control */
925 	{ /* CE2 */ 2, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
926 	/* host->target WMI */
927 	{ /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
928 	/* host->target HTT */
929 	{ /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
930 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
931 	/* Target -> host PKTLOG */
932 	{ /* CE5 */ 5, PIPEDIR_IN,  32, 2048, CE_ATTR_FLAGS, 0,},
933 	/* Reserved for target autonomous HIF_memcpy */
934 	{ /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
935 	/* CE7 used only by Host */
936 	{ /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
937 		(CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
938 	/* Reserved for target */
939 	{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
940 	/* CE 9, 10, 11 belong to CoreBsp & MHI driver */
941 };
942 #endif /* __HIF_PCI_INTERNAL_H__ */
943