1 /* 2 * Copyright (c) 2014-2018 The Linux Foundation. All rights reserved. 3 * 4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc. 5 * 6 * 7 * Permission to use, copy, modify, and/or distribute this software for 8 * any purpose with or without fee is hereby granted, provided that the 9 * above copyright notice and this permission notice appear in all 10 * copies. 11 * 12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 19 * PERFORMANCE OF THIS SOFTWARE. 20 */ 21 22 /* 23 * This file was originally distributed by Qualcomm Atheros, Inc. 24 * under proprietary terms before Copyright ownership was assigned 25 * to the Linux Foundation. 26 */ 27 28 /* 29 * Implementation of the Host-side Host InterFace (HIF) API 30 * for a Host/Target interconnect using Copy Engines over PCIe. 31 */ 32 33 #ifndef __HIF_PCI_INTERNAL_H__ 34 #define __HIF_PCI_INTERNAL_H__ 35 36 #ifndef CONFIG_WIN 37 #ifndef PEER_CACHEING_HOST_ENABLE 38 #define PEER_CACHEING_HOST_ENABLE 0 39 #endif 40 #endif 41 42 #define HIF_PCI_DEBUG ATH_DEBUG_MAKE_MODULE_MASK(0) 43 #define HIF_PCI_IPA_UC_ASSIGNED_CE 5 44 45 #if defined(WLAN_DEBUG) || defined(DEBUG) 46 static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = { 47 {HIF_PCI_DEBUG, "hif_pci"}, 48 }; 49 50 ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface", 51 ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO, 52 ATH_DEBUG_DESCRIPTION_COUNT 53 (g_hif_debug_description), 54 g_hif_debug_description); 55 #endif 56 57 #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG 58 /* globals are initialized to 0 by the compiler */; 59 spinlock_t pcie_access_log_lock; 60 unsigned int pcie_access_log_seqnum; 61 struct HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM]; 62 static void hif_target_dump_access_log(void); 63 #endif 64 65 /* 66 * Host software's Copy Engine configuration. 67 * This table is derived from the CE_PCI TABLE, above. 68 */ 69 #ifdef BIG_ENDIAN_HOST 70 #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA 71 #else 72 #define CE_ATTR_FLAGS 0 73 #endif 74 75 /* Maximum number of Copy Engine's supported */ 76 #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048 77 #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096 78 79 #define EPPING_CE_FLAGS_POLL \ 80 (CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS) 81 82 #ifdef CONFIG_WIN 83 #define PIPEDIR_INOUT_H2H 4 84 #endif 85 86 #define CE_ATTR_DIAG_FLAGS \ 87 (CE_ATTR_FLAGS | CE_ATTR_DIAG) 88 89 #ifdef QCA_WIFI_3_0 90 static struct CE_attr host_ce_config_wlan[] = { 91 /* host->target HTC control and raw streams */ 92 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 93 /* target->host HTT + HTC control */ 94 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 95 /* target->host WMI */ 96 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 97 /* host->target WMI */ 98 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 99 /* host->target HTT */ 100 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 101 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 102 /* ipa_uc->target HTC control */ 103 { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 104 CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,}, 105 /* Target autonomous HIF_memcpy */ 106 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 107 /* ce_diag, the Diagnostic Window */ 108 { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 109 /* Target to uMC */ 110 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 111 /* target->host HTT */ 112 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 113 /* target->host HTT */ 114 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 115 /* target -> host PKTLOG */ 116 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 117 }; 118 119 static struct CE_pipe_config target_ce_config_wlan[] = { 120 /* host->target HTC control and raw streams */ 121 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 122 /* target->host HTT */ 123 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 124 /* target->host WMI + HTC control */ 125 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,}, 126 /* host->target WMI */ 127 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 128 /* host->target HTT */ 129 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 130 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 131 /* NB: 50% of src nentries, since tx has 2 frags */ 132 /* ipa_uc->target */ 133 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 134 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 135 /* Reserved for target autonomous HIF_memcpy */ 136 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 137 /* CE7 used only by Host */ 138 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 139 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 140 /* CE8 used only by IPA */ 141 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 142 /* CE9 target->host HTT */ 143 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 144 /* CE10 target->host HTT */ 145 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 146 /* Target -> host PKTLOG */ 147 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 148 }; 149 150 #ifdef WLAN_FEATURE_EPPING 151 static struct CE_attr host_ce_config_wlan_epping_poll[] = { 152 /* host->target HTC control and raw streams */ 153 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 154 /* target->host EP-ping */ 155 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 156 /* target->host EP-ping */ 157 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 158 /* host->target EP-ping */ 159 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 160 /* host->target EP-ping */ 161 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 162 /* EP-ping heartbeat */ 163 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 164 /* unused */ 165 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 166 /* ce_diag, the Diagnostic Window */ 167 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 168 }; 169 170 static struct CE_attr host_ce_config_wlan_epping_irq[] = { 171 /* host->target HTC control and raw streams */ 172 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 173 /* target->host EP-ping */ 174 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 175 /* target->host EP-ping */ 176 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 177 /* host->target EP-ping */ 178 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 179 /* host->target EP-ping */ 180 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 181 /* EP-ping heartbeat */ 182 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 183 /* unused */ 184 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 185 /* ce_diag, the Diagnostic Window */ 186 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 187 }; 188 /* 189 * EP-ping firmware's CE configuration 190 */ 191 static struct CE_pipe_config target_ce_config_wlan_epping[] = { 192 /* host->target HTC control and raw streams */ 193 { /* CE0 */ 0, PIPEDIR_OUT, 16, 2048, CE_ATTR_FLAGS, 0,}, 194 /* target->host EP-ping */ 195 { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 196 /* target->host EP-ping */ 197 { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 198 /* host->target EP-ping */ 199 { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 200 /* host->target EP-ping */ 201 { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 202 /* EP-ping heartbeat */ 203 { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 204 /* unused */ 205 { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,}, 206 /* CE7 used only by Host */ 207 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 208 /* CE8 used only by IPA */ 209 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,} 210 }; 211 #endif 212 #else 213 static struct CE_attr host_ce_config_wlan[] = { 214 /* host->target HTC control and raw streams */ 215 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 216 /* target->host HTT + HTC control */ 217 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 218 /* target->host WMI */ 219 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 220 /* host->target WMI */ 221 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 222 /* host->target HTT */ 223 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 224 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 225 /* ipa_uc->target HTC control */ 226 { /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 227 1024, 512, 0, NULL,}, 228 /* Target autonomous HIF_memcpy */ 229 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 230 /* ce_diag, the Diagnostic Window */ 231 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 232 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 233 }; 234 235 static struct CE_pipe_config target_ce_config_wlan[] = { 236 /* host->target HTC control and raw streams */ 237 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0,}, 238 /* target->host HTT + HTC control */ 239 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 240 /* target->host WMI */ 241 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 242 /* host->target WMI */ 243 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 244 /* host->target HTT */ 245 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,}, 246 /* NB: 50% of src nentries, since tx has 2 frags */ 247 /* ipa_uc->target HTC control */ 248 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, CE_ATTR_FLAGS, 0,}, 249 /* Reserved for target autonomous HIF_memcpy */ 250 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,}, 251 /* CE7 used only by Host */ 252 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 253 /* CE8 used only by IPA */ 254 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,} 255 }; 256 257 #ifdef WLAN_FEATURE_EPPING 258 static struct CE_attr host_ce_config_wlan_epping_poll[] = { 259 /* host->target HTC control and raw streams */ 260 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 261 /* target->host EP-ping */ 262 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 263 /* target->host EP-ping */ 264 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 265 /* host->target EP-ping */ 266 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 267 /* host->target EP-ping */ 268 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 269 /* EP-ping heartbeat */ 270 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 271 /* unused */ 272 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 273 /* ce_diag, the Diagnostic Window */ 274 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 275 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 276 /* The following CEs are not being used yet */ 277 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 278 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 279 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 280 }; 281 static struct CE_attr host_ce_config_wlan_epping_irq[] = { 282 /* host->target HTC control and raw streams */ 283 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 284 /* target->host EP-ping */ 285 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 286 /* target->host EP-ping */ 287 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 288 /* host->target EP-ping */ 289 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 290 /* host->target EP-ping */ 291 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 292 /* EP-ping heartbeat */ 293 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 294 /* unused */ 295 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 296 /* ce_diag, the Diagnostic Window */ 297 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 298 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 299 /* The following CEs are not being used yet */ 300 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 301 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 302 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 303 }; 304 /* 305 * EP-ping firmware's CE configuration 306 */ 307 static struct CE_pipe_config target_ce_config_wlan_epping[] = { 308 /* host->target HTC control and raw streams */ 309 { /* CE0 */ 0, PIPEDIR_OUT, 16, 256, CE_ATTR_FLAGS, 0,}, 310 /* target->host EP-ping */ 311 { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 312 /* target->host EP-ping */ 313 { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 314 /* host->target EP-ping */ 315 { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 316 /* host->target EP-ping */ 317 { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 318 /* EP-ping heartbeat */ 319 { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 320 /* unused */ 321 { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,}, 322 /* CE7 used only by Host */ 323 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 324 /* CE8 used only by IPA */ 325 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 326 { /* CE9 */ 9, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 327 { /* CE10 */ 10, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 328 { /* CE11 */ 11, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 329 }; 330 #endif 331 #endif 332 333 static struct CE_attr host_ce_config_wlan_ar9888[] = { 334 /* host->target HTC control and raw streams */ 335 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 336 /* target->host BMI + HTC control */ 337 /* could be moved to share CE3 */ 338 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 339 /* target->host WMI */ 340 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 341 /* host->target WMI */ 342 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 343 /* host->target HTT */ 344 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 345 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 346 #if WLAN_FEATURE_FASTPATH 347 /* target->host HTT messages */ 348 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 349 #else /* WLAN_FEATURE_FASTPATH */ 350 /* unused */ 351 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 352 #endif /* WLAN_FEATURE_FASTPATH */ 353 /* Target autonomous HIF_memcpy */ 354 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 355 /* ce_diag, the Diagnostic Window */ 356 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 357 /* Target autonomous HIF_memcpy */ 358 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 359 }; 360 361 static struct CE_attr host_ce_config_wlan_ar900b[] = { 362 /* host->target HTC control and raw streams */ 363 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 364 /* target->host BMI + HTC control */ 365 /* could be moved to share CE3 */ 366 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 367 /* target->host WMI */ 368 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 369 /* host->target WMI */ 370 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 371 /* host->target HTT */ 372 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 373 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 374 #if WLAN_FEATURE_FASTPATH 375 /* target->host HTT messages */ 376 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 377 #else /* WLAN_FEATURE_FASTPATH */ 378 /* unused */ 379 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 380 #endif /* WLAN_FEATURE_FASTPATH */ 381 /* Target autonomous HIF_memcpy */ 382 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 383 /* ce_diag, the Diagnostic Window */ 384 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 385 /* target->host pktlog */ 386 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 387 /* Target autonomous HIF_memcpy */ 388 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 389 /* Target autonomous HIF_memcpy */ 390 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 391 /* Target autonomous HIF_memcpy */ 392 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 393 }; 394 395 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = { 396 /* host->target HTC control and raw streams */ 397 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 398 /* could be moved to share CE3 */ 399 #if WLAN_FEATURE_FASTPATH 400 /* target->host BMI + HTC control */ 401 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 402 #else 403 /* target->host BMI + HTC control */ 404 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 405 #endif 406 /* target->host WMI */ 407 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 408 /* host->target WMI */ 409 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 410 /* host->target HTT */ 411 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 412 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 413 #if WLAN_FEATURE_FASTPATH 414 /* target->host HTT messages */ 415 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 416 #else /* WLAN_FEATURE_FASTPATH */ 417 /* unused */ 418 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 419 #endif /* WLAN_FEATURE_FASTPATH */ 420 /* Target autonomous HIF_memcpy */ 421 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 422 /* ce_diag, the Diagnostic Window */ 423 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 424 /* Target autonomous HIF_memcpy */ 425 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 426 }; 427 428 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = { 429 /* host->target HTC control and raw streams */ 430 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 431 /* could be moved to share CE3 */ 432 #if WLAN_FEATURE_FASTPATH 433 /* target->host BMI + HTC control */ 434 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 435 #else 436 /* target->host BMI + HTC control */ 437 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 438 #endif 439 /* target->host WMI */ 440 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 441 /* host->target WMI */ 442 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 443 /* host->target HTT */ 444 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 445 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 446 #if WLAN_FEATURE_FASTPATH 447 /* target->host HTT messages */ 448 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 449 #else /* WLAN_FEATURE_FASTPATH */ 450 /* unused */ 451 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 452 #endif /* WLAN_FEATURE_FASTPATH */ 453 /* Target autonomous HIF_memcpy */ 454 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 455 /* ce_diag, the Diagnostic Window */ 456 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 457 /* target->host pktlog */ 458 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 459 /* Target autonomous HIF_memcpy */ 460 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 461 /* Target autonomous HIF_memcpy */ 462 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 463 /* Target autonomous HIF_memcpy */ 464 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 465 }; 466 467 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = { 468 /* host->target HTC control and raw streams */ 469 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 470 /* could be moved to share CE3 */ 471 #if WLAN_FEATURE_FASTPATH 472 /* target->host BMI + HTC control */ 473 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 474 #else 475 /* target->host BMI + HTC control */ 476 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 477 #endif 478 /* target->host WMI */ 479 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 480 /* host->target WMI */ 481 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 482 /* host->target HTT */ 483 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 484 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 485 #if WLAN_FEATURE_FASTPATH 486 /* target->host HTT messages */ 487 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 488 #else /* WLAN_FEATURE_FASTPATH */ 489 /* unused */ 490 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 491 #endif /* WLAN_FEATURE_FASTPATH */ 492 /* Target autonomous HIF_memcpy */ 493 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 494 /* ce_diag, the Diagnostic Window */ 495 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 496 /* target->host pktlog */ 497 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 498 /* Target autonomous HIF_memcpy */ 499 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 500 /* Target autonomous HIF_memcpy */ 501 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 502 /* Target autonomous HIF_memcpy */ 503 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 504 }; 505 506 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = { 507 /* host->target HTC control and raw streams */ 508 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, 509 /* target->host HTC control */ 510 { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 511 /* target->host WMI */ 512 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, 513 /* host->target WMI */ 514 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 515 /* host->target HTT */ 516 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, 517 /* NB: 50% of src nentries, since tx has 2 frags */ 518 #if WLAN_FEATURE_FASTPATH 519 /* target->host HTT */ 520 { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 521 #else 522 /* unused */ 523 { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 524 #endif 525 /* Reserved for target autonomous HIF_memcpy */ 526 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, }, 527 /* CE7 used only by Host */ 528 }; 529 530 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = { 531 /* host->target HTC control and raw streams */ 532 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, 533 /* target->host HTC control */ 534 { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 535 /* target->host WMI */ 536 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, 537 /* host->target WMI */ 538 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 539 /* host->target HTT */ 540 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, 541 /* NB: 50% of src nentries, since tx has 2 frags */ 542 #if WLAN_FEATURE_FASTPATH 543 /* target->host HTT */ 544 { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 545 #else 546 /* unused */ 547 { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 548 #endif 549 /* Reserved for target autonomous HIF_memcpy */ 550 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, }, 551 /* CE7 used only by Host */ 552 { /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, }, 553 { /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS 554 /* target->host packtlog */ 555 | CE_ATTR_DISABLE_INTR, 0, }, 556 #if PEER_CACHEING_HOST_ENABLE 557 /* target autonomous qcache memcpy */ 558 { /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS | 559 CE_ATTR_DISABLE_INTR, 0, }, 560 #endif 561 }; 562 563 static struct CE_attr host_ce_config_wlan_qca8074[] = { 564 /* host->target HTC control and raw streams */ 565 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 566 /* target->host HTT + HTC control */ 567 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 568 /* target->host WMI */ 569 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 256, NULL,}, 570 /* host->target WMI (mac0) */ 571 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 572 /* host->target HTT */ 573 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 574 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 575 /* target -> host PKTLOG */ 576 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 577 /* Target autonomous HIF_memcpy */ 578 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 579 /* host->target WMI (mac1) */ 580 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 581 /* Target to uMC */ 582 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 583 /* host->target WMI (mac2) */ 584 { /* CE9 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 585 /* target->host HTT */ 586 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 587 /* CE11 unused */ 588 }; 589 590 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = { 591 /* host->target HTC control and raw streams */ 592 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 593 /* target->host HTT */ 594 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 595 /* target->host WMI + HTC control */ 596 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 597 /* host->target WMI */ 598 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 599 /* host->target HTT */ 600 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 601 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 602 /* NB: 50% of src nentries, since tx has 2 frags */ 603 /* Target -> host PKTLOG */ 604 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, 0, 0,}, 605 /* Reserved for target autonomous HIF_memcpy */ 606 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,}, 607 /* CE7 used only by Host */ 608 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 609 8192, 0,}, 610 /* CE8 used only by IPA */ 611 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,}, 612 /* CE9 target->host HTT */ 613 { /* CE9 */ 9, PIPEDIR_OUT, 32, 2048, 8192, 0,}, 614 /* CE10 target->host HTT */ 615 { /* CE10 */ 10, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 616 }; 617 618 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = { 619 /* host->target HTC control and raw streams */ 620 { /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,}, 621 /* target->host HTT + HTC control */ 622 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 623 /* target->host WMI */ 624 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 256, NULL,}, 625 /* host->target WMI (mac0) */ 626 { /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 627 /* host->target HTT */ 628 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 629 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 630 /* target -> host PKTLOG */ 631 { /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 632 /* Target autonomous HIF_memcpy */ 633 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 634 /* host->target WMI (mac1) */ 635 { /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 636 /* Target to uMC */ 637 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 638 /* host->target WMI (mac2) */ 639 { /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 640 /* target->host HTT */ 641 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 642 /* CE11 unused */ 643 }; 644 645 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = { 646 /* host->target HTC control and raw streams */ 647 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 648 /* target->host HTT */ 649 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 650 /* target->host WMI + HTC control */ 651 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 652 /* host->target WMI */ 653 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 654 /* host->target HTT */ 655 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 656 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 657 /* NB: 50% of src nentries, since tx has 2 frags */ 658 /* ipa_uc->target */ 659 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 660 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 661 /* Reserved for target autonomous HIF_memcpy */ 662 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 663 /* CE7 used only by Host */ 664 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 665 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 666 /* CE8 used only by IPA */ 667 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 668 /* CE9 target->host HTT */ 669 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 670 /* CE10 target->host HTT */ 671 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 672 /* Target -> host PKTLOG */ 673 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 674 }; 675 676 #define QCA_6290_CE_COUNT 9 677 #ifdef CONFIG_WIN 678 static struct CE_attr host_ce_config_wlan_qca6290[] = { 679 /* host->target HTC control and raw streams */ 680 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 681 /* target->host HTT + HTC control */ 682 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 683 /* target->host WMI */ 684 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 685 /* host->target WMI */ 686 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 687 /* host->target HTT */ 688 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 689 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 690 /* target -> host PKTLOG */ 691 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 692 /* Target autonomous HIF_memcpy */ 693 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 694 /* host->target WMI (mac1) */ 695 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 696 /* Reserved for target */ 697 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 698 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 699 }; 700 701 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 702 /* host->target HTC control and raw streams */ 703 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 704 /* target->host HTT */ 705 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 706 /* target->host WMI + HTC control */ 707 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 708 /* host->target WMI */ 709 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 710 /* host->target HTT */ 711 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 712 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 713 /* Target -> host PKTLOG */ 714 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 715 /* Reserved for target autonomous HIF_memcpy */ 716 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 717 /* CE7 used only by Host */ 718 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 719 8192, 0,}, 720 /* Reserved for target */ 721 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 722 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 723 }; 724 #else 725 static struct CE_attr host_ce_config_wlan_qca6290[] = { 726 /* host->target HTC control and raw streams */ 727 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 728 /* target->host HTT + HTC control */ 729 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 730 /* target->host WMI */ 731 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 732 /* host->target WMI */ 733 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 734 /* host->target HTT */ 735 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 736 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 737 /* target -> host PKTLOG */ 738 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 739 /* Target autonomous HIF_memcpy */ 740 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 741 /* ce_diag, the Diagnostic Window */ 742 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0, 743 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 744 /* Reserved for target */ 745 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 746 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 747 }; 748 749 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 750 /* host->target HTC control and raw streams */ 751 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 752 /* target->host HTT */ 753 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 754 /* target->host WMI + HTC control */ 755 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 756 /* host->target WMI */ 757 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 758 /* host->target HTT */ 759 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 760 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 761 /* Target -> host PKTLOG */ 762 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 763 /* Reserved for target autonomous HIF_memcpy */ 764 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 765 /* CE7 used only by Host */ 766 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 767 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 768 /* Reserved for target */ 769 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 770 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 771 }; 772 #endif 773 #endif /* __HIF_PCI_INTERNAL_H__ */ 774