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