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 | CE_ATTR_DISABLE_INTR, 0, 0, 579 0, 0, NULL,}, 580 /* host->target WMI (mac1) */ 581 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 582 /* Target to uMC */ 583 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 584 /* host->target WMI (mac2) */ 585 { /* CE9 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 586 /* target->host HTT */ 587 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 588 /* CE11 unused */ 589 }; 590 591 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = { 592 /* host->target HTC control and raw streams */ 593 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 594 /* target->host HTT */ 595 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 596 /* target->host WMI + HTC control */ 597 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 598 /* host->target WMI */ 599 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 600 /* host->target HTT */ 601 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 602 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 603 /* NB: 50% of src nentries, since tx has 2 frags */ 604 /* Target -> host PKTLOG */ 605 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, 0, 0,}, 606 /* Reserved for target autonomous HIF_memcpy */ 607 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,}, 608 /* CE7 used only by Host */ 609 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 610 8192, 0,}, 611 /* CE8 used only by IPA */ 612 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,}, 613 /* CE9 target->host HTT */ 614 { /* CE9 */ 9, PIPEDIR_OUT, 32, 2048, 8192, 0,}, 615 /* CE10 target->host HTT */ 616 { /* CE10 */ 10, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 617 }; 618 619 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = { 620 /* host->target HTC control and raw streams */ 621 { /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,}, 622 /* target->host HTT + HTC control */ 623 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 624 /* target->host WMI */ 625 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 256, NULL,}, 626 /* host->target WMI (mac0) */ 627 { /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 628 /* host->target HTT */ 629 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 630 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 631 /* target -> host PKTLOG */ 632 { /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 633 /* Target autonomous HIF_memcpy */ 634 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 635 /* host->target WMI (mac1) */ 636 { /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 637 /* Target to uMC */ 638 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 639 /* host->target WMI (mac2) */ 640 { /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 641 /* target->host HTT */ 642 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 643 /* CE11 unused */ 644 }; 645 646 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = { 647 /* host->target HTC control and raw streams */ 648 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 649 /* target->host HTT */ 650 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 651 /* target->host WMI + HTC control */ 652 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 653 /* host->target WMI */ 654 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 655 /* host->target HTT */ 656 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 657 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 658 /* NB: 50% of src nentries, since tx has 2 frags */ 659 /* ipa_uc->target */ 660 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 661 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 662 /* Reserved for target autonomous HIF_memcpy */ 663 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 664 /* CE7 used only by Host */ 665 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 666 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 667 /* CE8 used only by IPA */ 668 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 669 /* CE9 target->host HTT */ 670 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 671 /* CE10 target->host HTT */ 672 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 673 /* Target -> host PKTLOG */ 674 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 675 }; 676 677 #define QCA_6290_CE_COUNT 9 678 #ifdef CONFIG_WIN 679 static struct CE_attr host_ce_config_wlan_qca6290[] = { 680 /* host->target HTC control and raw streams */ 681 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 682 /* target->host HTT + HTC control */ 683 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 684 /* target->host WMI */ 685 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 686 /* host->target WMI */ 687 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 688 /* host->target HTT */ 689 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 690 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 691 /* target -> host PKTLOG */ 692 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 693 /* Target autonomous HIF_memcpy */ 694 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 695 /* host->target WMI (mac1) */ 696 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 697 /* Reserved for target */ 698 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 699 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 700 }; 701 702 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 703 /* host->target HTC control and raw streams */ 704 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 705 /* target->host HTT */ 706 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 707 /* target->host WMI + HTC control */ 708 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 709 /* host->target WMI */ 710 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 711 /* host->target HTT */ 712 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 713 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 714 /* Target -> host PKTLOG */ 715 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 716 /* Reserved for target autonomous HIF_memcpy */ 717 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 718 /* CE7 used only by Host */ 719 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 720 8192, 0,}, 721 /* Reserved for target */ 722 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 723 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 724 }; 725 #else 726 static struct CE_attr host_ce_config_wlan_qca6290[] = { 727 /* host->target HTC control and raw streams */ 728 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 729 /* target->host HTT + HTC control */ 730 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 731 /* target->host WMI */ 732 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 733 /* host->target WMI */ 734 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 735 /* host->target HTT */ 736 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 737 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 738 /* target -> host PKTLOG */ 739 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 740 /* Target autonomous HIF_memcpy */ 741 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 742 /* ce_diag, the Diagnostic Window */ 743 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0, 744 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 745 /* Reserved for target */ 746 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 747 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 748 }; 749 750 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 751 /* host->target HTC control and raw streams */ 752 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 753 /* target->host HTT */ 754 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 755 /* target->host WMI + HTC control */ 756 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 757 /* host->target WMI */ 758 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 759 /* host->target HTT */ 760 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 761 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 762 /* Target -> host PKTLOG */ 763 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 764 /* Reserved for target autonomous HIF_memcpy */ 765 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 766 /* CE7 used only by Host */ 767 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 768 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 769 /* Reserved for target */ 770 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 771 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 772 }; 773 #endif 774 #endif /* __HIF_PCI_INTERNAL_H__ */ 775