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