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