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 QCA_WIFI_3_0 81 static struct CE_attr host_ce_config_wlan[] = { 82 /* host->target HTC control and raw streams */ 83 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 84 /* target->host HTT + HTC control */ 85 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 86 /* target->host WMI */ 87 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 88 /* host->target WMI */ 89 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 90 /* host->target HTT */ 91 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 92 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 93 /* ipa_uc->target HTC control */ 94 { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 95 CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,}, 96 /* Target autonomous HIF_memcpy */ 97 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 98 /* ce_diag, the Diagnostic Window */ 99 { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 100 /* Target to uMC */ 101 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 102 /* target->host HTT */ 103 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 104 /* target->host HTT */ 105 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 106 /* target -> host PKTLOG */ 107 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 108 }; 109 110 static struct CE_pipe_config target_ce_config_wlan[] = { 111 /* host->target HTC control and raw streams */ 112 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 113 /* target->host HTT */ 114 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 115 /* target->host WMI + HTC control */ 116 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,}, 117 /* host->target WMI */ 118 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 119 /* host->target HTT */ 120 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 121 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 122 /* NB: 50% of src nentries, since tx has 2 frags */ 123 /* ipa_uc->target */ 124 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 125 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 126 /* Reserved for target autonomous HIF_memcpy */ 127 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 128 /* CE7 used only by Host */ 129 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 130 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 131 /* CE8 used only by IPA */ 132 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 133 /* CE9 target->host HTT */ 134 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 135 /* CE10 target->host HTT */ 136 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 137 /* Target -> host PKTLOG */ 138 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 139 }; 140 141 #ifdef WLAN_FEATURE_EPPING 142 static struct CE_attr host_ce_config_wlan_epping_poll[] = { 143 /* host->target HTC control and raw streams */ 144 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 145 /* target->host EP-ping */ 146 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 147 /* target->host EP-ping */ 148 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 149 /* host->target EP-ping */ 150 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 151 /* host->target EP-ping */ 152 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 153 /* EP-ping heartbeat */ 154 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 155 /* unused */ 156 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 157 /* ce_diag, the Diagnostic Window */ 158 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 159 }; 160 161 static struct CE_attr host_ce_config_wlan_epping_irq[] = { 162 /* host->target HTC control and raw streams */ 163 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 164 /* target->host EP-ping */ 165 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 166 /* target->host EP-ping */ 167 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 168 /* host->target EP-ping */ 169 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 170 /* host->target EP-ping */ 171 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 172 /* EP-ping heartbeat */ 173 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 174 /* unused */ 175 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 176 /* ce_diag, the Diagnostic Window */ 177 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 178 }; 179 /* 180 * EP-ping firmware's CE configuration 181 */ 182 static struct CE_pipe_config target_ce_config_wlan_epping[] = { 183 /* host->target HTC control and raw streams */ 184 { /* CE0 */ 0, PIPEDIR_OUT, 16, 2048, CE_ATTR_FLAGS, 0,}, 185 /* target->host EP-ping */ 186 { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 187 /* target->host EP-ping */ 188 { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 189 /* host->target EP-ping */ 190 { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 191 /* host->target EP-ping */ 192 { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 193 /* EP-ping heartbeat */ 194 { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 195 /* unused */ 196 { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,}, 197 /* CE7 used only by Host */ 198 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 199 /* CE8 used only by IPA */ 200 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,} 201 }; 202 #endif 203 #else 204 static struct CE_attr host_ce_config_wlan[] = { 205 /* host->target HTC control and raw streams */ 206 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 207 /* target->host HTT + HTC control */ 208 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 209 /* target->host WMI */ 210 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 211 /* host->target WMI */ 212 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 213 /* host->target HTT */ 214 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 215 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 216 /* ipa_uc->target HTC control */ 217 { /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 218 1024, 512, 0, NULL,}, 219 /* Target autonomous HIF_memcpy */ 220 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 221 /* ce_diag, the Diagnostic Window */ 222 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 223 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 224 }; 225 226 static struct CE_pipe_config target_ce_config_wlan[] = { 227 /* host->target HTC control and raw streams */ 228 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0,}, 229 /* target->host HTT + HTC control */ 230 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 231 /* target->host WMI */ 232 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 233 /* host->target WMI */ 234 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 235 /* host->target HTT */ 236 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,}, 237 /* NB: 50% of src nentries, since tx has 2 frags */ 238 /* ipa_uc->target HTC control */ 239 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, CE_ATTR_FLAGS, 0,}, 240 /* Reserved for target autonomous HIF_memcpy */ 241 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,}, 242 /* CE7 used only by Host */ 243 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 244 /* CE8 used only by IPA */ 245 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,} 246 }; 247 248 #ifdef WLAN_FEATURE_EPPING 249 static struct CE_attr host_ce_config_wlan_epping_poll[] = { 250 /* host->target HTC control and raw streams */ 251 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 252 /* target->host EP-ping */ 253 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 254 /* target->host EP-ping */ 255 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,}, 256 /* host->target EP-ping */ 257 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 258 /* host->target EP-ping */ 259 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 260 /* EP-ping heartbeat */ 261 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 262 /* unused */ 263 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 264 /* ce_diag, the Diagnostic Window */ 265 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 266 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 267 /* The following CEs are not being used yet */ 268 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 269 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 270 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 271 }; 272 static struct CE_attr host_ce_config_wlan_epping_irq[] = { 273 /* host->target HTC control and raw streams */ 274 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,}, 275 /* target->host EP-ping */ 276 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 277 /* target->host EP-ping */ 278 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 279 /* host->target EP-ping */ 280 { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 281 /* host->target EP-ping */ 282 { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,}, 283 /* EP-ping heartbeat */ 284 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,}, 285 /* unused */ 286 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 287 /* ce_diag, the Diagnostic Window */ 288 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 289 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 290 /* The following CEs are not being used yet */ 291 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 292 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 293 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 294 }; 295 /* 296 * EP-ping firmware's CE configuration 297 */ 298 static struct CE_pipe_config target_ce_config_wlan_epping[] = { 299 /* host->target HTC control and raw streams */ 300 { /* CE0 */ 0, PIPEDIR_OUT, 16, 256, CE_ATTR_FLAGS, 0,}, 301 /* target->host EP-ping */ 302 { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 303 /* target->host EP-ping */ 304 { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 305 /* host->target EP-ping */ 306 { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 307 /* host->target EP-ping */ 308 { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,}, 309 /* EP-ping heartbeat */ 310 { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,}, 311 /* unused */ 312 { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,}, 313 /* CE7 used only by Host */ 314 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 315 /* CE8 used only by IPA */ 316 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 317 { /* CE9 */ 9, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 318 { /* CE10 */ 10, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 319 { /* CE11 */ 11, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,}, 320 }; 321 #endif 322 #endif 323 324 static struct CE_attr host_ce_config_wlan_ar9888[] = { 325 /* host->target HTC control and raw streams */ 326 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 327 /* target->host BMI + HTC control */ 328 /* could be moved to share CE3 */ 329 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 330 /* target->host WMI */ 331 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 332 /* host->target WMI */ 333 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 334 /* host->target HTT */ 335 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 336 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 337 #ifdef WLAN_FEATURE_FASTPATH 338 /* target->host HTT messages */ 339 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 340 #else /* WLAN_FEATURE_FASTPATH */ 341 /* unused */ 342 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 343 #endif /* WLAN_FEATURE_FASTPATH */ 344 /* Target autonomous HIF_memcpy */ 345 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 346 /* ce_diag, the Diagnostic Window */ 347 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 348 /* Target autonomous HIF_memcpy */ 349 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 350 }; 351 352 static struct CE_attr host_ce_config_wlan_ar900b[] = { 353 /* host->target HTC control and raw streams */ 354 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 355 /* target->host BMI + HTC control */ 356 /* could be moved to share CE3 */ 357 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 358 /* target->host WMI */ 359 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 360 /* host->target WMI */ 361 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 362 /* host->target HTT */ 363 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 364 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 365 #ifdef WLAN_FEATURE_FASTPATH 366 /* target->host HTT messages */ 367 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 368 #else /* WLAN_FEATURE_FASTPATH */ 369 /* unused */ 370 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 371 #endif /* WLAN_FEATURE_FASTPATH */ 372 /* Target autonomous HIF_memcpy */ 373 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 374 /* ce_diag, the Diagnostic Window */ 375 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 376 /* target->host pktlog */ 377 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 378 /* Target autonomous HIF_memcpy */ 379 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 380 /* Target autonomous HIF_memcpy */ 381 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 382 /* Target autonomous HIF_memcpy */ 383 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 384 }; 385 386 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = { 387 /* host->target HTC control and raw streams */ 388 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 389 /* could be moved to share CE3 */ 390 #ifdef WLAN_FEATURE_FASTPATH 391 /* target->host BMI + HTC control */ 392 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 393 #else 394 /* target->host BMI + HTC control */ 395 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 396 #endif 397 /* target->host WMI */ 398 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 399 /* host->target WMI */ 400 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 401 /* host->target HTT */ 402 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 403 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 404 #ifdef WLAN_FEATURE_FASTPATH 405 /* target->host HTT messages */ 406 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 407 #else /* WLAN_FEATURE_FASTPATH */ 408 /* unused */ 409 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 410 #endif /* WLAN_FEATURE_FASTPATH */ 411 /* Target autonomous HIF_memcpy */ 412 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 413 /* ce_diag, the Diagnostic Window */ 414 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 415 /* Target autonomous HIF_memcpy */ 416 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 417 }; 418 419 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = { 420 /* host->target HTC control and raw streams */ 421 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 422 /* could be moved to share CE3 */ 423 #ifdef WLAN_FEATURE_FASTPATH 424 /* target->host BMI + HTC control */ 425 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 426 #else 427 /* target->host BMI + HTC control */ 428 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 429 #endif 430 /* target->host WMI */ 431 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 432 /* host->target WMI */ 433 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 434 /* host->target HTT */ 435 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 436 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 437 #ifdef WLAN_FEATURE_FASTPATH 438 /* target->host HTT messages */ 439 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 440 #else /* WLAN_FEATURE_FASTPATH */ 441 /* unused */ 442 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 443 #endif /* WLAN_FEATURE_FASTPATH */ 444 /* Target autonomous HIF_memcpy */ 445 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 446 /* ce_diag, the Diagnostic Window */ 447 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 448 /* target->host pktlog */ 449 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 450 /* Target autonomous HIF_memcpy */ 451 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 452 /* Target autonomous HIF_memcpy */ 453 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 454 /* Target autonomous HIF_memcpy */ 455 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 456 }; 457 458 static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = { 459 /* host->target HTC control and raw streams */ 460 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, 461 /* could be moved to share CE3 */ 462 #ifdef WLAN_FEATURE_FASTPATH 463 /* target->host BMI + HTC control */ 464 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, }, 465 #else 466 /* target->host BMI + HTC control */ 467 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 468 #endif 469 /* target->host WMI */ 470 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, }, 471 /* host->target WMI */ 472 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, }, 473 /* host->target HTT */ 474 { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 475 CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, 476 #ifdef WLAN_FEATURE_FASTPATH 477 /* target->host HTT messages */ 478 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, 479 #else /* WLAN_FEATURE_FASTPATH */ 480 /* unused */ 481 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 482 #endif /* WLAN_FEATURE_FASTPATH */ 483 /* Target autonomous HIF_memcpy */ 484 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 485 /* ce_diag, the Diagnostic Window */ 486 { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, 487 /* target->host pktlog */ 488 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 489 /* Target autonomous HIF_memcpy */ 490 { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 491 /* Target autonomous HIF_memcpy */ 492 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 493 /* Target autonomous HIF_memcpy */ 494 { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, 495 }; 496 497 static struct CE_pipe_config target_ce_config_wlan_ar9888[] = { 498 /* host->target HTC control and raw streams */ 499 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, 500 /* target->host HTC control */ 501 { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 502 /* target->host WMI */ 503 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, 504 /* host->target WMI */ 505 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 506 /* host->target HTT */ 507 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, 508 /* NB: 50% of src nentries, since tx has 2 frags */ 509 #ifdef WLAN_FEATURE_FASTPATH 510 /* target->host HTT */ 511 { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 512 #else 513 /* unused */ 514 { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 515 #endif 516 /* Reserved for target autonomous HIF_memcpy */ 517 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, }, 518 /* CE7 used only by Host */ 519 }; 520 521 static struct CE_pipe_config target_ce_config_wlan_ar900b[] = { 522 /* host->target HTC control and raw streams */ 523 { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, 524 /* target->host HTC control */ 525 { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 526 /* target->host WMI */ 527 { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, 528 /* host->target WMI */ 529 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 530 /* host->target HTT */ 531 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, 532 /* NB: 50% of src nentries, since tx has 2 frags */ 533 #ifdef WLAN_FEATURE_FASTPATH 534 /* target->host HTT */ 535 { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, 536 #else 537 /* unused */ 538 { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, 539 #endif 540 /* Reserved for target autonomous HIF_memcpy */ 541 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, }, 542 /* CE7 used only by Host */ 543 { /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, }, 544 { /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS 545 /* target->host packtlog */ 546 | CE_ATTR_DISABLE_INTR, 0, }, 547 #if PEER_CACHEING_HOST_ENABLE 548 /* target autonomous qcache memcpy */ 549 { /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS | 550 CE_ATTR_DISABLE_INTR, 0, }, 551 #endif 552 }; 553 554 static struct CE_attr host_ce_config_wlan_qca8074[] = { 555 /* host->target HTC control and raw streams */ 556 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 557 /* target->host HTT + HTC control */ 558 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 559 /* target->host WMI */ 560 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 256, NULL,}, 561 /* host->target WMI (mac0) */ 562 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 563 /* host->target HTT */ 564 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 565 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 566 /* target -> host PKTLOG */ 567 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 568 /* Target autonomous HIF_memcpy */ 569 { /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0, 570 0, 0, NULL,}, 571 /* host->target WMI (mac1) */ 572 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 573 /* Target to uMC */ 574 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 575 /* host->target WMI (mac2) */ 576 { /* CE9 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 577 /* target->host HTT */ 578 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 579 /* CE11 unused */ 580 }; 581 582 static struct CE_pipe_config target_ce_config_wlan_qca8074[] = { 583 /* host->target HTC control and raw streams */ 584 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 585 /* target->host HTT */ 586 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 587 /* target->host WMI + HTC control */ 588 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 589 /* host->target WMI */ 590 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 591 /* host->target HTT */ 592 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 593 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 594 /* NB: 50% of src nentries, since tx has 2 frags */ 595 /* Target -> host PKTLOG */ 596 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, 0, 0,}, 597 /* Reserved for target autonomous HIF_memcpy */ 598 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,}, 599 /* CE7 used only by Host */ 600 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 601 8192, 0,}, 602 /* CE8 used only by IPA */ 603 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,}, 604 /* CE9 target->host HTT */ 605 { /* CE9 */ 9, PIPEDIR_OUT, 32, 2048, 8192, 0,}, 606 /* CE10 target->host HTT */ 607 { /* CE10 */ 10, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,}, 608 }; 609 610 static struct CE_attr host_ce_config_wlan_qca8074_pci[] = { 611 /* host->target HTC control and raw streams */ 612 { /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,}, 613 /* target->host HTT + HTC control */ 614 { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 615 /* target->host WMI */ 616 { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 256, NULL,}, 617 /* host->target WMI (mac0) */ 618 { /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 619 /* host->target HTT */ 620 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 621 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 622 /* target -> host PKTLOG */ 623 { /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,}, 624 /* Target autonomous HIF_memcpy */ 625 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 626 /* host->target WMI (mac1) */ 627 { /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 628 /* Target to uMC */ 629 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 630 /* host->target WMI (mac2) */ 631 { /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,}, 632 /* target->host HTT */ 633 { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 634 /* CE11 unused */ 635 }; 636 637 static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = { 638 /* host->target HTC control and raw streams */ 639 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 640 /* target->host HTT */ 641 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 642 /* target->host WMI + HTC control */ 643 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 644 /* host->target WMI */ 645 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 646 /* host->target HTT */ 647 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 648 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 649 /* NB: 50% of src nentries, since tx has 2 frags */ 650 /* ipa_uc->target */ 651 { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, 652 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 653 /* Reserved for target autonomous HIF_memcpy */ 654 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 655 /* CE7 used only by Host */ 656 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 657 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 658 /* CE8 used only by IPA */ 659 { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 660 /* CE9 target->host HTT */ 661 { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 662 /* CE10 target->host HTT */ 663 { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 664 /* Target -> host PKTLOG */ 665 { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 666 }; 667 668 #define QCA_6290_CE_COUNT 9 669 #ifdef CONFIG_WIN 670 static struct CE_attr host_ce_config_wlan_qca6290[] = { 671 /* host->target HTC control and raw streams */ 672 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 673 /* target->host HTT + HTC control */ 674 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 675 /* target->host WMI */ 676 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 677 /* host->target WMI */ 678 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 679 /* host->target HTT */ 680 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 681 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 682 /* target -> host PKTLOG */ 683 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 684 /* Target autonomous HIF_memcpy */ 685 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 686 /* host->target WMI (mac1) */ 687 { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 688 /* Reserved for target */ 689 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 690 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 691 }; 692 693 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 694 /* host->target HTC control and raw streams */ 695 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 696 /* target->host HTT */ 697 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 698 /* target->host WMI + HTC control */ 699 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 700 /* host->target WMI */ 701 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 702 /* host->target HTT */ 703 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 704 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 705 /* Target -> host PKTLOG */ 706 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 707 /* Reserved for target autonomous HIF_memcpy */ 708 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 709 /* CE7 used only by Host */ 710 { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, 711 8192, 0,}, 712 /* Reserved for target */ 713 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 714 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 715 }; 716 #else 717 static struct CE_attr host_ce_config_wlan_qca6290[] = { 718 /* host->target HTC control and raw streams */ 719 { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,}, 720 /* target->host HTT + HTC control */ 721 { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 722 /* target->host WMI */ 723 { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, 724 /* host->target WMI */ 725 { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, 726 /* host->target HTT */ 727 { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 728 CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,}, 729 /* target -> host PKTLOG */ 730 { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, 731 /* Target autonomous HIF_memcpy */ 732 { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 733 /* ce_diag, the Diagnostic Window */ 734 { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0, 735 2, DIAG_TRANSFER_LIMIT, 2, NULL,}, 736 /* Reserved for target */ 737 { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, 738 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 739 }; 740 741 static struct CE_pipe_config target_ce_config_wlan_qca6290[] = { 742 /* host->target HTC control and raw streams */ 743 { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 744 /* target->host HTT */ 745 { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 746 /* target->host WMI + HTC control */ 747 { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 748 /* host->target WMI */ 749 { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, 750 /* host->target HTT */ 751 { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, 752 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 753 /* Target -> host PKTLOG */ 754 { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, 755 /* Reserved for target autonomous HIF_memcpy */ 756 { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 757 /* CE7 used only by Host */ 758 { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 759 (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,}, 760 /* Reserved for target */ 761 { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, 762 /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ 763 }; 764 #endif 765 #endif /* __HIF_PCI_INTERNAL_H__ */ 766