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