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