123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 |
- /*
- * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
- /*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
- /*
- * Implementation of the Host-side Host InterFace (HIF) API
- * for a Host/Target interconnect using Copy Engines over PCIe.
- */
- #ifndef __HIF_PCI_INTERNAL_H__
- #define __HIF_PCI_INTERNAL_H__
- #ifndef CONFIG_WIN
- #ifndef PEER_CACHEING_HOST_ENABLE
- #define PEER_CACHEING_HOST_ENABLE 0
- #endif
- #endif
- #define HIF_PCI_DEBUG ATH_DEBUG_MAKE_MODULE_MASK(0)
- #define HIF_PCI_IPA_UC_ASSIGNED_CE 5
- #if defined(DEBUG)
- static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = {
- {HIF_PCI_DEBUG, "hif_pci"},
- };
- ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface",
- ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO,
- ATH_DEBUG_DESCRIPTION_COUNT
- (g_hif_debug_description),
- g_hif_debug_description);
- #endif
- #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
- /* globals are initialized to 0 by the compiler */;
- spinlock_t pcie_access_log_lock;
- unsigned int pcie_access_log_seqnum;
- HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM];
- static void hif_target_dump_access_log(void);
- #endif
- /*
- * Host software's Copy Engine configuration.
- * This table is derived from the CE_PCI TABLE, above.
- */
- #ifdef BIG_ENDIAN_HOST
- #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA
- #else
- #define CE_ATTR_FLAGS 0
- #endif
- /* Maximum number of Copy Engine's supported */
- #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048
- #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096
- #define DIAG_CE_ID 7
- #define EPPING_CE_FLAGS_POLL \
- (CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS)
- #ifdef CONFIG_WIN
- #define PIPEDIR_INOUT_H2H 4
- #endif
- #ifdef QCA_WIFI_3_0
- static struct CE_attr host_ce_config_wlan[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
- /* target->host HTT + HTC control */
- { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
- /* target->host WMI */
- { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 64, NULL,},
- /* host->target WMI */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
- /* host->target HTT */
- { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
- CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
- /* ipa_uc->target HTC control */
- { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
- 1024, 512, 0, NULL,},
- /* Target autonomous HIF_memcpy */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* ce_diag, the Diagnostic Window */
- { /* CE7 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
- 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
- /* Target to uMC */
- { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* target->host HTT */
- { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
- /* target->host HTT */
- { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
- /* target -> host PKTLOG */
- { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
- };
- static struct CE_pipe_config target_ce_config_wlan[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* target->host HTT */
- { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* target->host WMI + HTC control */
- { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target WMI */
- { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target HTT */
- { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
- (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
- /* NB: 50% of src nentries, since tx has 2 frags */
- /* ipa_uc->target */
- { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64,
- (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
- /* Reserved for target autonomous HIF_memcpy */
- { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
- /* CE7 used only by Host */
- { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
- (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
- /* CE8 used only by IPA */
- { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* CE9 target->host HTT */
- { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* CE10 target->host HTT */
- { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* Target -> host PKTLOG */
- { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- };
- static struct CE_attr host_ce_config_wlan_epping_poll[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
- /* target->host EP-ping */
- { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
- /* target->host EP-ping */
- { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
- /* host->target EP-ping */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* host->target EP-ping */
- { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* EP-ping heartbeat */
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* unused */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* ce_diag, the Diagnostic Window */
- { /* CE7 */ CE_ATTR_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
- };
- static struct CE_attr host_ce_config_wlan_epping_irq[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
- /* target->host EP-ping */
- { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* target->host EP-ping */
- { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* host->target EP-ping */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* host->target EP-ping */
- { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* EP-ping heartbeat */
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* unused */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* ce_diag, the Diagnostic Window */
- { /* CE7 */ CE_ATTR_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
- };
- /*
- * EP-ping firmware's CE configuration
- */
- static struct CE_pipe_config target_ce_config_wlan_epping[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ 0, PIPEDIR_OUT, 16, 2048, CE_ATTR_FLAGS, 0,},
- /* target->host EP-ping */
- { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* target->host EP-ping */
- { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target EP-ping */
- { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target EP-ping */
- { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* EP-ping heartbeat */
- { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* unused */
- { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
- /* CE7 used only by Host */
- { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
- /* CE8 used only by IPA */
- { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
- };
- #else
- static struct CE_attr host_ce_config_wlan[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
- /* target->host HTT + HTC control */
- { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
- /* target->host WMI */
- { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
- /* host->target WMI */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
- /* host->target HTT */
- { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
- CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
- /* ipa_uc->target HTC control */
- { /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
- 1024, 512, 0, NULL,},
- /* Target autonomous HIF_memcpy */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* ce_diag, the Diagnostic Window */
- { /* CE7 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR,
- 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
- };
- static struct CE_pipe_config target_ce_config_wlan[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0,},
- /* target->host HTT + HTC control */
- { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* target->host WMI */
- { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target WMI */
- { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target HTT */
- { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
- /* NB: 50% of src nentries, since tx has 2 frags */
- /* ipa_uc->target HTC control */
- { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, CE_ATTR_FLAGS, 0,},
- /* Reserved for target autonomous HIF_memcpy */
- { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,},
- /* CE7 used only by Host */
- { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
- /* CE8 used only by IPA */
- { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
- };
- static struct CE_attr host_ce_config_wlan_epping_poll[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
- /* target->host EP-ping */
- { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
- /* target->host EP-ping */
- { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
- /* host->target EP-ping */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* host->target EP-ping */
- { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* EP-ping heartbeat */
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* unused */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* ce_diag, the Diagnostic Window */
- { /* CE7 */ CE_ATTR_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
- { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* The following CEs are not being used yet */
- { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- };
- static struct CE_attr host_ce_config_wlan_epping_irq[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
- /* target->host EP-ping */
- { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* target->host EP-ping */
- { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* host->target EP-ping */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* host->target EP-ping */
- { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
- /* EP-ping heartbeat */
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
- /* unused */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* ce_diag, the Diagnostic Window */
- { /* CE7 */ CE_ATTR_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
- { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- /* The following CEs are not being used yet */
- { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
- };
- /*
- * EP-ping firmware's CE configuration
- */
- static struct CE_pipe_config target_ce_config_wlan_epping[] = {
- /* host->target HTC control and raw streams */
- { /* CE0 */ 0, PIPEDIR_OUT, 16, 256, CE_ATTR_FLAGS, 0,},
- /* target->host EP-ping */
- { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* target->host EP-ping */
- { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target EP-ping */
- { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* host->target EP-ping */
- { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* EP-ping heartbeat */
- { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
- /* unused */
- { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
- /* CE7 used only by Host */
- { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
- /* CE8 used only by IPA */
- { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
- { /* CE9 */ 9, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,},
- { /* CE10 */ 10, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,},
- { /* CE11 */ 11, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,},
- };
- #endif
- static struct CE_attr host_ce_config_wlan_ar9888[] = {
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, /* host->target HTC control and raw streams */
- /* could be moved to share CE3 */
- { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },/* target->host BMI + HTC control */
- { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },/* target->host WMI */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },/* host->target WMI */
- { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
- CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, /* host->target HTT */
- #if WLAN_FEATURE_FASTPATH
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, /* target->host HTT messages */
- #else /* WLAN_FEATURE_FASTPATH */
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* unused */
- #endif /* WLAN_FEATURE_FASTPATH */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* Target autonomous HIF_memcpy */
- { /* CE7 */ CE_ATTR_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, /* ce_diag, the Diagnostic Window */
- { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* Target autonomous HIF_memcpy */
- };
- static struct CE_attr host_ce_config_wlan_ar900b[] = {
- { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, }, /* host->target HTC control and raw streams */
- /* could be moved to share CE3 */
- { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },/* target->host BMI + HTC control */
- { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },/* target->host WMI */
- { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },/* host->target WMI */
- { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
- CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, }, /* host->target HTT */
- #if WLAN_FEATURE_FASTPATH
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, }, /* target->host HTT messages */
- #else /* WLAN_FEATURE_FASTPATH */
- { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* unused */
- #endif /* WLAN_FEATURE_FASTPATH */
- { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* Target autonomous HIF_memcpy */
- { /* CE7 */ CE_ATTR_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, }, /* ce_diag, the Diagnostic Window */
- { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },/* target->host pktlog */
- { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* Target autonomous HIF_memcpy */
- { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* Target autonomous HIF_memcpy */
- { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, }, /* Target autonomous HIF_memcpy */
- };
- static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
- { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, /* host->target HTC control and raw streams */
- { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, /* target->host HTC control */
- { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, /* target->host WMI */
- { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, /* host->target WMI */
- { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, /* host->target HTT */
- /* NB: 50% of src nentries, since tx has 2 frags */
- #if WLAN_FEATURE_FASTPATH
- { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, /* target->host HTT */
- #else
- { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, /* unused */
- #endif
- { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },/* Reserved for target autonomous HIF_memcpy */
- /* CE7 used only by Host */
- };
- static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
- { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, }, /* host->target HTC control and raw streams */
- { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, /* target->host HTC control */
- { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, }, /* target->host WMI */
- { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, /* host->target WMI */
- { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, }, /* host->target HTT */
- /* NB: 50% of src nentries, since tx has 2 frags */
- #if WLAN_FEATURE_FASTPATH
- { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, }, /* target->host HTT */
- #else
- { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, }, /* unused */
- #endif
- { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },/* Reserved for target autonomous HIF_memcpy */
- { /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, }, /* CE7 used only by Host */
- { /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
- | CE_ATTR_DISABLE_INTR, 0, }, /* target->host packtlog */
- #if PEER_CACHEING_HOST_ENABLE
- { /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
- CE_ATTR_DISABLE_INTR, 0, }, /* target autonomous qcache memcpy */
- #endif
- };
- static struct CE_attr *host_ce_config = host_ce_config_wlan;
- static struct CE_pipe_config *target_ce_config = target_ce_config_wlan;
- static int target_ce_config_sz = sizeof(target_ce_config_wlan);
- #endif /* __HIF_PCI_INTERNAL_H__ */
|