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