1 /* 2 * Copyright (c) 2014-2018 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 CONFIG_WIN 28 #ifndef PEER_CACHEING_HOST_ENABLE 29 #define PEER_CACHEING_HOST_ENABLE 0 30 #endif 31 #endif 32 33 #define HIF_PCI_DEBUG ATH_DEBUG_MAKE_MODULE_MASK(0) 34 #define HIF_PCI_IPA_UC_ASSIGNED_CE 5 35 36 #if defined(WLAN_DEBUG) || defined(DEBUG) 37 static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = { 38 {HIF_PCI_DEBUG, "hif_pci"}, 39 }; 40 41 ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface", 42 ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO, 43 ATH_DEBUG_DESCRIPTION_COUNT 44 (g_hif_debug_description), 45 g_hif_debug_description); 46 #endif 47 48 #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG 49 /* globals are initialized to 0 by the compiler */; 50 spinlock_t pcie_access_log_lock; 51 unsigned int pcie_access_log_seqnum; 52 struct HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM]; 53 static void hif_target_dump_access_log(void); 54 #endif 55 56 /* 57 * Host software's Copy Engine configuration. 58 * This table is derived from the CE_PCI TABLE, above. 59 */ 60 #ifdef BIG_ENDIAN_HOST 61 #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA 62 #else 63 #define CE_ATTR_FLAGS 0 64 #endif 65 66 /* Maximum number of Copy Engine's supported */ 67 #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048 68 #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096 69 70 #define EPPING_CE_FLAGS_POLL \ 71 (CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS) 72 73 #ifdef CONFIG_WIN 74 #define PIPEDIR_INOUT_H2H 4 75 #endif 76 77 #define CE_ATTR_DIAG_FLAGS \ 78 (CE_ATTR_FLAGS | CE_ATTR_DIAG) 79 80 #ifdef QCN7605_SUPPORT 81 82 #define QCN7605_CE_COUNT 9 83 static struct CE_attr host_ce_config_wlan_qcn7605[] = { 84 /* host->target HTC control and raw streams & WMI Control*/ 85 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 86 /* target->host HTT + HTC control */ 87 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 88 /* target->host WMI */ 89 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 90 /* target->host HTT */ 91 { /* CE3 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 92 /* host->target HTT */ 93 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 94 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 95 #ifdef IPA_OFFLOAD 96 /* ipa_uc->target HTC control */ 97 { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 98 CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,}, 99 #else 100 /* unused */ 101 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 102 #endif 103 /* Target autonomous HIF_memcpy */ 104 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 105 /* target->host PKTLOG */ 106 { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 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, 32, 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, 64, 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, 256, 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, 1024, 64, 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 /* Target -> host PKTLOG */ 141 { /* CE7 */ 7, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 142 #ifdef IPA_OFFLOAD 143 /* CE8 used only by IPA */ 144 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 145 #else 146 /* target->host HTT*/ 147 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 148 #endif 149 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 150 }; 151 #endif 152 153 #ifdef QCA_WIFI_3_0 154 static struct CE_attr host_ce_config_wlan[] = { 155 /* host->target HTC control and raw streams */ 156 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 157 /* target->host HTT + HTC control */ 158 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 159 /* target->host WMI */ 160 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 161 /* host->target WMI */ 162 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 163 /* host->target HTT */ 164 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 165 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 166 /* ipa_uc->target HTC control */ 167 { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 168 CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,}, 169 /* Target autonomous HIF_memcpy */ 170 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 171 /* ce_diag, the Diagnostic Window */ 172 { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 173 /* Target to uMC */ 174 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 175 /* target->host HTT */ 176 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 177 /* target->host HTT */ 178 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 179 /* target -> host PKTLOG */ 180 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 181 }; 182 183 static struct CE_pipe_config target_ce_config_wlan[] = { 184 /* host->target HTC control and raw streams */ 185 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 186 /* target->host HTT */ 187 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 188 /* target->host WMI + HTC control */ 189 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,}, 190 /* host->target WMI */ 191 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 192 /* host->target HTT */ 193 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 194 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 195 /* NB: 50% of src nentries, since tx has 2 frags */ 196 /* ipa_uc->target */ 197 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 198 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 199 /* Reserved for target autonomous HIF_memcpy */ 200 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 201 /* CE7 used only by Host */ 202 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 203 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 204 /* CE8 used only by IPA */ 205 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 206 /* CE9 target->host HTT */ 207 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 208 /* CE10 target->host HTT */ 209 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 210 /* Target -> host PKTLOG */ 211 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 212 }; 213 214 #ifdef WLAN_FEATURE_EPPING 215 static struct CE_attr host_ce_config_wlan_epping_poll[] = { 216 /* host->target HTC control and raw streams */ 217 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 218 /* target->host EP-ping */ 219 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 220 /* target->host EP-ping */ 221 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 222 /* host->target EP-ping */ 223 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 224 /* host->target EP-ping */ 225 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 226 /* EP-ping heartbeat */ 227 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 228 /* unused */ 229 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 230 /* ce_diag, the Diagnostic Window */ 231 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 232 }; 233 234 static struct CE_attr host_ce_config_wlan_epping_irq[] = { 235 /* host->target HTC control and raw streams */ 236 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 237 /* target->host EP-ping */ 238 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 239 /* target->host EP-ping */ 240 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 241 /* host->target EP-ping */ 242 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 243 /* host->target EP-ping */ 244 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 245 /* EP-ping heartbeat */ 246 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 247 /* unused */ 248 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 249 /* ce_diag, the Diagnostic Window */ 250 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 251 }; 252 /* 253 * EP-ping firmware's CE configuration 254 */ 255 static struct CE_pipe_config target_ce_config_wlan_epping[] = { 256 /* host->target HTC control and raw streams */ 257 { /* CE0 */ 0, PIPEDIR_OUT, 16, 2048, CE_ATTR_FLAGS, 0,}, 258 /* target->host EP-ping */ 259 { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 260 /* target->host EP-ping */ 261 { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 262 /* host->target EP-ping */ 263 { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 264 /* host->target EP-ping */ 265 { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 266 /* EP-ping heartbeat */ 267 { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 268 /* unused */ 269 { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,}, 270 /* CE7 used only by Host */ 271 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 272 /* CE8 used only by IPA */ 273 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,} 274 }; 275 #endif 276 #else 277 static struct CE_attr host_ce_config_wlan[] = { 278 /* host->target HTC control and raw streams */ 279 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 280 /* target->host HTT + HTC control */ 281 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 282 /* target->host WMI */ 283 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 284 /* host->target WMI */ 285 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 286 /* host->target HTT */ 287 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 288 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 289 /* ipa_uc->target HTC control */ 290 { /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 291 1024, 512, 0, NULL,}, 292 /* Target autonomous HIF_memcpy */ 293 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 294 /* ce_diag, the Diagnostic Window */ 295 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 296 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 297 }; 298 299 static struct CE_pipe_config target_ce_config_wlan[] = { 300 /* host->target HTC control and raw streams */ 301 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0,}, 302 /* target->host HTT + HTC control */ 303 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 304 /* target->host WMI */ 305 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 306 /* host->target WMI */ 307 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 308 /* host->target HTT */ 309 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,}, 310 /* NB: 50% of src nentries, since tx has 2 frags */ 311 /* ipa_uc->target HTC control */ 312 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, CE_ATTR_FLAGS, 0,}, 313 /* Reserved for target autonomous HIF_memcpy */ 314 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,}, 315 /* CE7 used only by Host */ 316 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 317 /* CE8 used only by IPA */ 318 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,} 319 }; 320 321 #ifdef WLAN_FEATURE_EPPING 322 static struct CE_attr host_ce_config_wlan_epping_poll[] = { 323 /* host->target HTC control and raw streams */ 324 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 325 /* target->host EP-ping */ 326 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 327 /* target->host EP-ping */ 328 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 329 /* host->target EP-ping */ 330 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 331 /* host->target EP-ping */ 332 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 333 /* EP-ping heartbeat */ 334 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 335 /* unused */ 336 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 337 /* ce_diag, the Diagnostic Window */ 338 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 339 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 340 /* The following CEs are not being used yet */ 341 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 342 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 343 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 344 }; 345 static struct CE_attr host_ce_config_wlan_epping_irq[] = { 346 /* host->target HTC control and raw streams */ 347 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 348 /* target->host EP-ping */ 349 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 350 /* target->host EP-ping */ 351 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 352 /* host->target EP-ping */ 353 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 354 /* host->target EP-ping */ 355 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 356 /* EP-ping heartbeat */ 357 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 358 /* unused */ 359 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 360 /* ce_diag, the Diagnostic Window */ 361 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 362 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 363 /* The following CEs are not being used yet */ 364 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 365 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 366 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 367 }; 368 /* 369 * EP-ping firmware's CE configuration 370 */ 371 static struct CE_pipe_config target_ce_config_wlan_epping[] = { 372 /* host->target HTC control and raw streams */ 373 { /* CE0 */ 0, PIPEDIR_OUT, 16, 256, CE_ATTR_FLAGS, 0,}, 374 /* target->host EP-ping */ 375 { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 376 /* target->host EP-ping */ 377 { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 378 /* host->target EP-ping */ 379 { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 380 /* host->target EP-ping */ 381 { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 382 /* EP-ping heartbeat */ 383 { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 384 /* unused */ 385 { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,}, 386 /* CE7 used only by Host */ 387 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 388 /* CE8 used only by IPA */ 389 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 390 { /* CE9 */ 9, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 391 { /* CE10 */ 10, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 392 { /* CE11 */ 11, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 393 }; 394 #endif 395 #endif 396 397 static struct CE_attr host_ce_config_wlan_ar9888[] = { 398 /* host->target HTC control and raw streams */ 399 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 400 /* target->host BMI + HTC control */ 401 /* could be moved to share CE3 */ 402 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 403 /* target->host WMI */ 404 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 405 /* host->target WMI */ 406 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 407 /* host->target HTT */ 408 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 409 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 410 #ifdef WLAN_FEATURE_FASTPATH 411 /* target->host HTT messages */ 412 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 413 #else /* WLAN_FEATURE_FASTPATH */ 414 /* unused */ 415 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 416 #endif /* WLAN_FEATURE_FASTPATH */ 417 /* Target autonomous HIF_memcpy */ 418 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 419 /* ce_diag, the Diagnostic Window */ 420 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 421 /* Target autonomous HIF_memcpy */ 422 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 423 }; 424 425 static struct CE_attr host_ce_config_wlan_ar900b[] = { 426 /* host->target HTC control and raw streams */ 427 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 428 /* target->host BMI + HTC control */ 429 /* could be moved to share CE3 */ 430 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 431 /* target->host WMI */ 432 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 433 /* host->target WMI */ 434 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 435 /* host->target HTT */ 436 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 437 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 438 #ifdef WLAN_FEATURE_FASTPATH 439 /* target->host HTT messages */ 440 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 441 #else /* WLAN_FEATURE_FASTPATH */ 442 /* unused */ 443 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 444 #endif /* WLAN_FEATURE_FASTPATH */ 445 /* Target autonomous HIF_memcpy */ 446 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 447 /* ce_diag, the Diagnostic Window */ 448 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 449 /* target->host pktlog */ 450 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 451 /* Target autonomous HIF_memcpy */ 452 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 453 /* Target autonomous HIF_memcpy */ 454 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 455 /* Target autonomous HIF_memcpy */ 456 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 457 }; 458 459 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = { 460 /* host->target HTC control and raw streams */ 461 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 462 /* could be moved to share CE3 */ 463 #ifdef WLAN_FEATURE_FASTPATH 464 /* target->host BMI + HTC control */ 465 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 466 #else 467 /* target->host BMI + HTC control */ 468 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 469 #endif 470 /* target->host WMI */ 471 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 472 /* host->target WMI */ 473 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 474 /* host->target HTT */ 475 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 476 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 477 #ifdef WLAN_FEATURE_FASTPATH 478 /* target->host HTT messages */ 479 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 480 #else /* WLAN_FEATURE_FASTPATH */ 481 /* unused */ 482 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 483 #endif /* WLAN_FEATURE_FASTPATH */ 484 /* Target autonomous HIF_memcpy */ 485 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 486 /* ce_diag, the Diagnostic Window */ 487 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 488 /* Target autonomous HIF_memcpy */ 489 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 490 }; 491 492 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = { 493 /* host->target HTC control and raw streams */ 494 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 495 /* could be moved to share CE3 */ 496 #ifdef WLAN_FEATURE_FASTPATH 497 /* target->host BMI + HTC control */ 498 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 499 #else 500 /* target->host BMI + HTC control */ 501 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 502 #endif 503 /* target->host WMI */ 504 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 505 /* host->target WMI */ 506 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 507 /* host->target HTT */ 508 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 509 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 510 #ifdef WLAN_FEATURE_FASTPATH 511 /* target->host HTT messages */ 512 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 513 #else /* WLAN_FEATURE_FASTPATH */ 514 /* unused */ 515 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 516 #endif /* WLAN_FEATURE_FASTPATH */ 517 /* Target autonomous HIF_memcpy */ 518 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 519 /* ce_diag, the Diagnostic Window */ 520 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 521 /* target->host pktlog */ 522 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 523 /* Target autonomous HIF_memcpy */ 524 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 525 /* Target autonomous HIF_memcpy */ 526 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 527 /* Target autonomous HIF_memcpy */ 528 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 529 }; 530 531 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = { 532 /* host->target HTC control and raw streams */ 533 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 534 /* could be moved to share CE3 */ 535 #ifdef WLAN_FEATURE_FASTPATH 536 /* target->host BMI + HTC control */ 537 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 538 #else 539 /* target->host BMI + HTC control */ 540 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 541 #endif 542 /* target->host WMI */ 543 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 544 /* host->target WMI */ 545 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 546 /* host->target HTT */ 547 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 548 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 549 #ifdef WLAN_FEATURE_FASTPATH 550 /* target->host HTT messages */ 551 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 552 #else /* WLAN_FEATURE_FASTPATH */ 553 /* unused */ 554 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 555 #endif /* WLAN_FEATURE_FASTPATH */ 556 /* Target autonomous HIF_memcpy */ 557 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 558 /* ce_diag, the Diagnostic Window */ 559 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 560 /* target->host pktlog */ 561 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 562 /* Target autonomous HIF_memcpy */ 563 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 564 /* Target autonomous HIF_memcpy */ 565 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 566 /* Target autonomous HIF_memcpy */ 567 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 568 }; 569 570 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = { 571 /* host->target HTC control and raw streams */ 572 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, 573 /* target->host HTC control */ 574 { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 575 /* target->host WMI */ 576 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, 577 /* host->target WMI */ 578 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 579 /* host->target HTT */ 580 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, 581 /* NB: 50% of src nentries, since tx has 2 frags */ 582 #ifdef WLAN_FEATURE_FASTPATH 583 /* target->host HTT */ 584 { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 585 #else 586 /* unused */ 587 { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 588 #endif 589 /* Reserved for target autonomous HIF_memcpy */ 590 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, }, 591 /* CE7 used only by Host */ 592 }; 593 594 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = { 595 /* host->target HTC control and raw streams */ 596 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, 597 /* target->host HTC control */ 598 { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 599 /* target->host WMI */ 600 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, 601 /* host->target WMI */ 602 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 603 /* host->target HTT */ 604 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, 605 /* NB: 50% of src nentries, since tx has 2 frags */ 606 #ifdef WLAN_FEATURE_FASTPATH 607 /* target->host HTT */ 608 { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 609 #else 610 /* unused */ 611 { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 612 #endif 613 /* Reserved for target autonomous HIF_memcpy */ 614 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, }, 615 /* CE7 used only by Host */ 616 { /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, }, 617 { /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS 618 /* target->host packtlog */ 619 | CE_ATTR_DISABLE_INTR, 0, }, 620 #if PEER_CACHEING_HOST_ENABLE 621 /* target autonomous qcache memcpy */ 622 { /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS | 623 CE_ATTR_DISABLE_INTR, 0, }, 624 #endif 625 }; 626 627 static struct CE_attr host_ce_config_wlan_qca8074[] = { 628 /* host->target HTC control and raw streams */ 629 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 630 /* target->host HTT + HTC control */ 631 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 632 /* target->host WMI */ 633 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 256, NULL,}, 634 /* host->target WMI (mac0) */ 635 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 636 /* host->target HTT */ 637 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 638 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 639 /* target -> host PKTLOG */ 640 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 641 /* Target autonomous HIF_memcpy */ 642 { /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0, 643 0, 0, NULL,}, 644 /* host->target WMI (mac1) */ 645 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 646 /* Target to uMC */ 647 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 648 /* host->target WMI (mac2) */ 649 { /* CE9 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 650 /* target->host HTT */ 651 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 652 /* CE11 unused */ 653 }; 654 655 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = { 656 /* host->target HTC control and raw streams */ 657 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 658 /* target->host HTT */ 659 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 660 /* target->host WMI + HTC control */ 661 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 662 /* host->target WMI */ 663 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 664 /* host->target HTT */ 665 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 666 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 667 /* NB: 50% of src nentries, since tx has 2 frags */ 668 /* Target -> host PKTLOG */ 669 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, 0, 0,}, 670 /* Reserved for target autonomous HIF_memcpy */ 671 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,}, 672 /* CE7 used only by Host */ 673 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 674 8192, 0,}, 675 /* CE8 used only by IPA */ 676 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,}, 677 /* CE9 target->host HTT */ 678 { /* CE9 */ 9, PIPEDIR_OUT, 32, 2048, 8192, 0,}, 679 /* CE10 target->host HTT */ 680 { /* CE10 */ 10, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 681 }; 682 683 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = { 684 /* host->target HTC control and raw streams */ 685 { /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,}, 686 /* target->host HTT + HTC control */ 687 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 688 /* target->host WMI */ 689 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 256, NULL,}, 690 /* host->target WMI (mac0) */ 691 { /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 692 /* host->target HTT */ 693 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 694 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 695 /* target -> host PKTLOG */ 696 { /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 697 /* Target autonomous HIF_memcpy */ 698 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 699 /* host->target WMI (mac1) */ 700 { /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 701 /* Target to uMC */ 702 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 703 /* host->target WMI (mac2) */ 704 { /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 705 /* target->host HTT */ 706 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 707 /* CE11 unused */ 708 }; 709 710 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = { 711 /* host->target HTC control and raw streams */ 712 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 713 /* target->host HTT */ 714 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 715 /* target->host WMI + HTC control */ 716 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 717 /* host->target WMI */ 718 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 719 /* host->target HTT */ 720 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 721 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 722 /* NB: 50% of src nentries, since tx has 2 frags */ 723 /* ipa_uc->target */ 724 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 725 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 726 /* Reserved for target autonomous HIF_memcpy */ 727 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 728 /* CE7 used only by Host */ 729 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 730 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 731 /* CE8 used only by IPA */ 732 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 733 /* CE9 target->host HTT */ 734 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 735 /* CE10 target->host HTT */ 736 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 737 /* Target -> host PKTLOG */ 738 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 739 }; 740 741 #define QCA_6290_CE_COUNT 9 742 #ifdef CONFIG_WIN 743 static struct CE_attr host_ce_config_wlan_qca6290[] = { 744 /* host->target HTC control and raw streams */ 745 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 746 /* target->host HTT + HTC control */ 747 { /* CE1 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048, 748 512, NULL,}, 749 /* target->host WMI */ 750 { /* CE2 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048, 751 32, NULL,}, 752 /* host->target WMI */ 753 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 754 /* host->target HTT */ 755 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 756 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 757 /* target -> host PKTLOG */ 758 { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048, 759 512, NULL,}, 760 /* Target autonomous HIF_memcpy */ 761 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 762 /* host->target WMI (mac1) */ 763 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 764 /* Reserved for target */ 765 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 766 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 767 }; 768 769 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 770 /* host->target HTC control and raw streams */ 771 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 772 /* target->host HTT */ 773 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 774 /* target->host WMI + HTC control */ 775 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 776 /* host->target WMI */ 777 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 778 /* host->target HTT */ 779 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 780 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 781 /* Target -> host PKTLOG */ 782 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 783 /* Reserved for target autonomous HIF_memcpy */ 784 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 785 /* CE7 used only by Host */ 786 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 787 8192, 0,}, 788 /* Reserved for target */ 789 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 790 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 791 }; 792 #else 793 static struct CE_attr host_ce_config_wlan_qca6290[] = { 794 /* host->target HTC control and raw streams */ 795 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 796 /* target->host HTT + HTC control */ 797 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 798 /* target->host WMI */ 799 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 800 /* host->target WMI */ 801 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 802 /* host->target HTT */ 803 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 804 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 805 /* target -> host PKTLOG */ 806 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 807 /* Target autonomous HIF_memcpy */ 808 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 809 /* ce_diag, the Diagnostic Window */ 810 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0, 811 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 812 /* Reserved for target */ 813 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 814 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 815 }; 816 817 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 818 /* host->target HTC control and raw streams */ 819 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 820 /* target->host HTT */ 821 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 822 /* target->host WMI + HTC control */ 823 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 824 /* host->target WMI */ 825 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 826 /* host->target HTT */ 827 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 828 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 829 /* Target -> host PKTLOG */ 830 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 831 /* Reserved for target autonomous HIF_memcpy */ 832 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 833 /* CE7 used only by Host */ 834 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 835 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 836 /* Reserved for target */ 837 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 838 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 839 }; 840 #endif 841 842 #define QCA_6390_CE_COUNT 9 843 static struct CE_attr host_ce_config_wlan_qca6390[] = { 844 /* host->target HTC control and raw streams */ 845 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 846 /* target->host HTT + HTC control */ 847 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 848 /* target->host WMI */ 849 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 850 /* host->target WMI */ 851 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 852 /* host->target HTT */ 853 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 854 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 855 /* target -> host PKTLOG */ 856 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 857 /* Target autonomous HIF_memcpy */ 858 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 859 /* ce_diag, the Diagnostic Window */ 860 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0, 861 0, DIAG_TRANSFER_LIMIT, 0, NULL,}, 862 /* Reserved for target */ 863 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 864 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 865 }; 866 867 static struct CE_pipe_config target_ce_config_wlan_qca6390[] = { 868 /* host->target HTC control and raw streams */ 869 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 870 /* target->host HTT */ 871 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 872 /* target->host WMI + HTC control */ 873 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 874 /* host->target WMI */ 875 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 876 /* host->target HTT */ 877 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 878 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 879 /* Target -> host PKTLOG */ 880 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 881 /* Reserved for target autonomous HIF_memcpy */ 882 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 883 /* CE7 used only by Host */ 884 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 885 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 886 /* Reserved for target */ 887 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 888 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 889 }; 890 #endif /* __HIF_PCI_INTERNAL_H__ */ 891