From 017c719e4bb7e8d11fcad75df51ea2993deb9763 Mon Sep 17 00:00:00 2001 From: Jinwei Chen Date: Fri, 18 Dec 2020 02:54:41 -0800 Subject: [PATCH] qcacmn: Add HIF changes to support WCN7850 HIF changes to support WCN7850 WLAN chipset. Change-Id: I02cd0702839a09b13a10b95237519f900a4cb7f9 --- dp/inc/cdp_txrx_cmn_reg.h | 2 + hif/inc/hif.h | 1 + hif/inc/hostdef.h | 1 + hif/inc/target_type.h | 5 + hif/inc/targetdef.h | 3 +- hif/src/ath_procfs.c | 10 +- hif/src/ce/ce_assignment.h | 49 ++++++++ hif/src/ce/ce_main.c | 44 +++++++- hif/src/hif_hw_version.h | 3 +- hif/src/hif_main.c | 18 ++- hif/src/hif_main.h | 4 + hif/src/pcie/if_pci.c | 11 +- hif/src/regtable.c | 15 +++ hif/src/wcn7850def.c | 225 +++++++++++++++++++++++++++++++++++++ 14 files changed, 378 insertions(+), 13 deletions(-) create mode 100644 hif/src/wcn7850def.c diff --git a/dp/inc/cdp_txrx_cmn_reg.h b/dp/inc/cdp_txrx_cmn_reg.h index b6e2060873..0e3bef4ef9 100644 --- a/dp/inc/cdp_txrx_cmn_reg.h +++ b/dp/inc/cdp_txrx_cmn_reg.h @@ -126,6 +126,8 @@ ol_txrx_soc_handle cdp_soc_attach(u_int16_t devid, case RUMIM2M_DEVICE_ID_NODE3: /*lithium emulation */ case RUMIM2M_DEVICE_ID_NODE4: /*lithium emulation */ case RUMIM2M_DEVICE_ID_NODE5: /*lithium emulation */ + case WCN7850_EMULATION_DEVICE_ID: + case WCN7850_DEVICE_ID: return dp_soc_attach_wifi3(psoc, hif_handle, htc_handle, qdf_dev, dp_ol_if_ops, devid); break; diff --git a/hif/inc/hif.h b/hif/inc/hif.h index 82d7e6f7a6..e871c15f20 100644 --- a/hif/inc/hif.h +++ b/hif/inc/hif.h @@ -69,6 +69,7 @@ typedef void *hif_handle_t; #define HIF_TYPE_QCA6750 23 #define HIF_TYPE_QCA5018 24 #define HIF_TYPE_QCN6122 25 +#define HIF_TYPE_WCN7850 26 #define DMA_COHERENT_MASK_DEFAULT 37 diff --git a/hif/inc/hostdef.h b/hif/inc/hostdef.h index 0c3ecafe5a..63f690aa92 100644 --- a/hif/inc/hostdef.h +++ b/hif/inc/hostdef.h @@ -37,6 +37,7 @@ extern struct hostdef_s *QCA6290_HOSTdef; extern struct hostdef_s *QCA6390_HOSTdef; extern struct hostdef_s *QCA6490_HOSTdef; extern struct hostdef_s *QCA6750_HOSTdef; +extern struct hostdef_s *WCN7850_HOSTdef; #ifdef ATH_AHB extern struct hostdef_s *IPQ4019_HOSTdef; diff --git a/hif/inc/target_type.h b/hif/inc/target_type.h index 04083eec78..fd903f0a1a 100644 --- a/hif/inc/target_type.h +++ b/hif/inc/target_type.h @@ -70,6 +70,11 @@ extern "C" { #define TARGET_TYPE_QCN6122 30 #endif +/* Hamilton */ +#ifndef TARGET_TYPE_WCN7850 +#define TARGET_TYPE_WCN7850 31 +#endif + #ifdef __cplusplus } #endif diff --git a/hif/inc/targetdef.h b/hif/inc/targetdef.h index dfeb18126b..01e40aab5b 100644 --- a/hif/inc/targetdef.h +++ b/hif/inc/targetdef.h @@ -47,6 +47,7 @@ extern struct targetdef_s *QCA6018_TARGETDEF; extern struct targetdef_s *QCA5018_TARGETDEF; extern struct targetdef_s *QCN9000_TARGETDEF; extern struct targetdef_s *QCN6122_TARGETDEF; +extern struct targetdef_s *WCN7850_TARGETdef; extern struct ce_reg_def *AR6002_CE_TARGETdef; extern struct ce_reg_def *AR6003_CE_TARGETdef; @@ -70,6 +71,6 @@ extern struct ce_reg_def *QCA6018_CE_TARGETDEF; extern struct ce_reg_def *QCA5018_CE_TARGETDEF; extern struct ce_reg_def *QCN9000_CE_TARGETDEF; extern struct ce_reg_def *QCN6122_CE_TARGETDEF; - +extern struct ce_reg_def *WCN7850_CE_TARGETdef; #endif diff --git a/hif/src/ath_procfs.c b/hif/src/ath_procfs.c index 68f279fb4e..61a471e692 100644 --- a/hif/src/ath_procfs.c +++ b/hif/src/ath_procfs.c @@ -108,7 +108,8 @@ static ssize_t ath_procfs_diag_read_legacy(struct file *file, (tgt_info->target_type == TARGET_TYPE_QCN6122) || (tgt_info->target_type == TARGET_TYPE_QCA5018) || (tgt_info->target_type == TARGET_TYPE_QCA6018) || - (tgt_info->target_type == TARGET_TYPE_QCN7605))) || + (tgt_info->target_type == TARGET_TYPE_QCN7605) || + (tgt_info->target_type == TARGET_TYPE_WCN7850))) || (scn->bus_type == QDF_BUS_TYPE_IPCI && (tgt_info->target_type == TARGET_TYPE_QCA6750)) || ((scn->bus_type == QDF_BUS_TYPE_USB) && @@ -187,7 +188,8 @@ static ssize_t ath_procfs_diag_write_legacy(struct file *file, (tgt_info->target_type == TARGET_TYPE_QCN6122) || (tgt_info->target_type == TARGET_TYPE_QCA5018) || (tgt_info->target_type == TARGET_TYPE_QCA6018) || - (tgt_info->target_type == TARGET_TYPE_QCN7605))) || + (tgt_info->target_type == TARGET_TYPE_QCN7605) || + (tgt_info->target_type == TARGET_TYPE_WCN7850))) || (scn->bus_type == QDF_BUS_TYPE_IPCI && (tgt_info->target_type == TARGET_TYPE_QCA6750)) || ((scn->bus_type == QDF_BUS_TYPE_USB) && @@ -333,7 +335,7 @@ static ssize_t ath_procfs_diag_read_ext(struct file *file, char __user *buf, switch (tgt_info->target_type) { case TARGET_TYPE_QCA6390: case TARGET_TYPE_QCA6490: - /* case Hamiltons: */ + case TARGET_TYPE_WCN7850: if (op_type == OP_TYPE_EXT_DIRECT) rv = ath_procfs_direct_read(scn, offset, @@ -408,7 +410,7 @@ static ssize_t ath_procfs_diag_write_ext(struct file *file, switch (tgt_info->target_type) { case TARGET_TYPE_QCA6390: case TARGET_TYPE_QCA6490: - /* case Hamiltons: */ + case TARGET_TYPE_WCN7850: if (op_type == OP_TYPE_EXT_DIRECT) rv = ath_procfs_direct_write(scn, offset, diff --git a/hif/src/ce/ce_assignment.h b/hif/src/ce/ce_assignment.h index 3c23f959dc..3d19b5781e 100644 --- a/hif/src/ce/ce_assignment.h +++ b/hif/src/ce/ce_assignment.h @@ -1368,4 +1368,53 @@ static struct CE_pipe_config target_ce_config_wlan_qca6750[] = { { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ }; + +#define WCN_7850_CE_COUNT 9 +static struct CE_attr host_ce_config_wlan_wcn7850[] = { + /* 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, 3200, 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, + 256, 256, 0, NULL,}, + /* target -> host PKTLOG */ + { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, + /* Target autonomous HIF_memcpy */ + { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, + /* ce_diag, the Diagnostic Window */ + { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0, + 0, DIAG_TRANSFER_LIMIT, 0, NULL,}, + /* Reserved for target */ + { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,}, + /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ +}; + +static struct CE_pipe_config target_ce_config_wlan_wcn7850[] = { + /* 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, 32, 3200, 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,}, + /* Target -> host PKTLOG */ + { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 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,}, + /* Reserved for target */ + { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, + /* CE 9, 10, 11 belong to CoreBsp & MHI driver */ +}; #endif /* __HIF_PCI_INTERNAL_H__ */ diff --git a/hif/src/ce/ce_main.c b/hif/src/ce/ce_main.c index 5793bc3858..98512e6a85 100644 --- a/hif/src/ce/ce_main.c +++ b/hif/src/ce/ce_main.c @@ -53,8 +53,8 @@ #endif #if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6290) || \ - defined(QCA_WIFI_QCA6018) || defined(QCA_WIFI_QCA5018)) && \ - !defined(QCA_WIFI_SUPPORT_SRNG) + defined(QCA_WIFI_QCA6018) || defined(QCA_WIFI_QCA5018) || \ + defined(QCA_WIFI_WCN7850)) && !defined(QCA_WIFI_SUPPORT_SRNG) #define QCA_WIFI_SUPPORT_SRNG #endif @@ -693,6 +693,33 @@ static struct service_to_pipe target_service_to_ce_map_qca6750[] = { }; #endif +#if (defined(QCA_WIFI_WCN7850)) +static struct service_to_pipe target_service_to_ce_map_wcn7850[] = { + { WMI_DATA_VO_SVC, PIPEDIR_OUT, 3, }, + { WMI_DATA_VO_SVC, PIPEDIR_IN, 2, }, + { WMI_DATA_BK_SVC, PIPEDIR_OUT, 3, }, + { WMI_DATA_BK_SVC, PIPEDIR_IN, 2, }, + { WMI_DATA_BE_SVC, PIPEDIR_OUT, 3, }, + { WMI_DATA_BE_SVC, PIPEDIR_IN, 2, }, + { WMI_DATA_VI_SVC, PIPEDIR_OUT, 3, }, + { WMI_DATA_VI_SVC, PIPEDIR_IN, 2, }, + { WMI_CONTROL_SVC, PIPEDIR_OUT, 3, }, + { WMI_CONTROL_SVC, PIPEDIR_IN, 2, }, + { HTC_CTRL_RSVD_SVC, PIPEDIR_OUT, 0, }, + { HTC_CTRL_RSVD_SVC, PIPEDIR_IN, 2, }, + { HTT_DATA_MSG_SVC, PIPEDIR_OUT, 4, }, + { HTT_DATA_MSG_SVC, PIPEDIR_IN, 1, }, +#ifdef WLAN_FEATURE_WMI_DIAG_OVER_CE7 + { PACKET_LOG_SVC, PIPEDIR_IN, 5, }, +#endif + /* (Additions here) */ + { 0, 0, 0, }, +}; +#else +static struct service_to_pipe target_service_to_ce_map_wcn7850[] = { +}; +#endif + static struct service_to_pipe target_service_to_ce_map_ar900b[] = { { WMI_DATA_VO_SVC, @@ -895,6 +922,11 @@ static void hif_select_service_to_pipe_map(struct hif_softc *scn, *sz_tgt_svc_map_to_use = sizeof(target_service_to_ce_map_qca6750); break; + case TARGET_TYPE_WCN7850: + *tgt_svc_map_to_use = target_service_to_ce_map_wcn7850; + *sz_tgt_svc_map_to_use = + sizeof(target_service_to_ce_map_wcn7850); + break; case TARGET_TYPE_QCA8074: *tgt_svc_map_to_use = target_service_to_ce_map_qca8074; *sz_tgt_svc_map_to_use = @@ -1152,6 +1184,7 @@ bool ce_srng_based(struct hif_softc *scn) case TARGET_TYPE_QCN9000: case TARGET_TYPE_QCN6122: case TARGET_TYPE_QCA5018: + case TARGET_TYPE_WCN7850: return true; default: return false; @@ -3394,6 +3427,13 @@ void hif_ce_prepare_config(struct hif_softc *scn) scn->ce_count = QCA_6750_CE_COUNT; break; + case TARGET_TYPE_WCN7850: + hif_state->host_ce_config = host_ce_config_wlan_wcn7850; + hif_state->target_ce_config = target_ce_config_wlan_wcn7850; + hif_state->target_ce_config_sz = + sizeof(target_ce_config_wlan_wcn7850); + scn->ce_count = WCN_7850_CE_COUNT; + break; case TARGET_TYPE_ADRASTEA: if (hif_is_attribute_set(scn, HIF_LOWDESC_CE_NO_PKTLOG_CFG)) { hif_state->host_ce_config = diff --git a/hif/src/hif_hw_version.h b/hif/src/hif_hw_version.h index a11daf51e2..0090950f11 100644 --- a/hif/src/hif_hw_version.h +++ b/hif/src/hif_hw_version.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018, 2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2018, 2020-2021 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -33,6 +33,7 @@ #define QCA9377_REV1_1_VERSION 0x5020001 #define QCA6390_V1 0x50040000 #define QCA6490_V1 0x50060000 +#define WCN7850_V1 0xDEADBEEF // TODO Define this #define WCN3990_v1 0x40000000 #define WCN3990_v2 0x40010000 #define WCN3990_v2_1 0x40010002 diff --git a/hif/src/hif_main.c b/hif/src/hif_main.c index 21a659b558..0f500c466b 100644 --- a/hif/src/hif_main.c +++ b/hif/src/hif_main.c @@ -349,6 +349,11 @@ static const struct qwlan_hw qwlan_hw_list[] = { .id = QCA9379_REV1_VERSION, .subid = 0xD, .name = "QCA9379_REV1_1", + }, + { + .id = WCN7850_V1, + .subid = 0xE, + .name = "WCN7850_V1", } }; @@ -765,7 +770,8 @@ static inline int hif_get_num_active_grp_tasklets(struct hif_softc *scn) #if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6018) || \ defined(QCA_WIFI_QCA6290) || defined(QCA_WIFI_QCA6390) || \ defined(QCA_WIFI_QCN9000) || defined(QCA_WIFI_QCA6490) || \ - defined(QCA_WIFI_QCA6750) || defined(QCA_WIFI_QCA5018)) + defined(QCA_WIFI_QCA6750) || defined(QCA_WIFI_QCA5018) || \ + defined(QCA_WIFI_WCN7850)) /** * hif_get_num_pending_work() - get the number of entries in * the workqueue pending to be completed. @@ -809,7 +815,8 @@ QDF_STATUS hif_try_complete_tasks(struct hif_softc *scn) #if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6018) || \ defined(QCA_WIFI_QCA6290) || defined(QCA_WIFI_QCA6390) || \ defined(QCA_WIFI_QCN9000) || defined(QCA_WIFI_QCA6490) || \ - defined(QCA_WIFI_QCA6750) || defined(QCA_WIFI_QCA5018)) + defined(QCA_WIFI_QCA6750) || defined(QCA_WIFI_QCA5018) || \ + defined(QCA_WIFI_WCN7850)) static QDF_STATUS hif_hal_attach(struct hif_softc *scn) { if (ce_srng_based(scn)) { @@ -1216,6 +1223,13 @@ int hif_get_device_type(uint32_t device_id, hif_info(" *********** QCA6750 *************"); break; + case WCN7850_DEVICE_ID: + case WCN7850_EMULATION_DEVICE_ID: + *hif_type = HIF_TYPE_WCN7850; + *target_type = TARGET_TYPE_WCN7850; + hif_info(" *********** WCN7850 *************"); + break; + case QCA8074V2_DEVICE_ID: *hif_type = HIF_TYPE_QCA8074V2; *target_type = TARGET_TYPE_QCA8074V2; diff --git a/hif/src/hif_main.h b/hif/src/hif_main.h index 8339c85d22..22dd80acf2 100644 --- a/hif/src/hif_main.h +++ b/hif/src/hif_main.h @@ -100,6 +100,10 @@ #define QCA6750_EMULATION_DEVICE_ID (0x010c) #define QCA6750_DEVICE_ID (0x1105) +/* TODO: change IDs for Hamilton */ +#define WCN7850_EMULATION_DEVICE_ID (0xfffa) +#define WCN7850_DEVICE_ID (0x1107) + #define ADRASTEA_DEVICE_ID_P2_E12 (0x7021) #define AR9887_DEVICE_ID (0x0050) #define AR900B_DEVICE_ID (0x0040) diff --git a/hif/src/pcie/if_pci.c b/hif/src/pcie/if_pci.c index ab7ac90d81..10e2ffdcd4 100644 --- a/hif/src/pcie/if_pci.c +++ b/hif/src/pcie/if_pci.c @@ -43,7 +43,8 @@ #include "mp_dev.h" #include "hif_debug.h" -#if (defined(QCA_WIFI_QCA6390) || defined(QCA_WIFI_QCA6490)) +#if (defined(QCA_WIFI_QCA6390) || defined(QCA_WIFI_QCA6490) || \ + defined(QCA_WIFI_WCN7850)) #include "hal_api.h" #endif @@ -3176,7 +3177,8 @@ int hif_pci_configure_grp_irq(struct hif_softc *scn, return 0; } -#if (defined(QCA_WIFI_QCA6390) || defined(QCA_WIFI_QCA6490)) +#if (defined(QCA_WIFI_QCA6390) || defined(QCA_WIFI_QCA6490) || \ + defined(QCA_WIFI_WCN7850)) uint32_t hif_pci_reg_read32(struct hif_softc *hif_sc, uint32_t offset) { @@ -3378,6 +3380,8 @@ static bool hif_is_pld_based_target(struct hif_pci_softc *sc, case QCA6490_DEVICE_ID: case AR6320_DEVICE_ID: case QCN7605_DEVICE_ID: + case WCN7850_DEVICE_ID: + case WCN7850_EMULATION_DEVICE_ID: return true; } return false; @@ -3622,7 +3626,8 @@ int hif_pci_addr_in_boundary(struct hif_softc *scn, uint32_t offset) tgt_info->target_type == TARGET_TYPE_QCA6390 || tgt_info->target_type == TARGET_TYPE_QCA6490 || tgt_info->target_type == TARGET_TYPE_QCN7605 || - tgt_info->target_type == TARGET_TYPE_QCA8074) { + tgt_info->target_type == TARGET_TYPE_QCA8074 || + tgt_info->target_type == TARGET_TYPE_WCN7850) { /* * Need to consider offset's memtype for QCA6290/QCA8074, * also mem_len and DRAM_BASE_ADDRESS/DRAM_SIZE need to be diff --git a/hif/src/regtable.c b/hif/src/regtable.c index 13cd621bd1..f2ea63e3a7 100644 --- a/hif/src/regtable.c +++ b/hif/src/regtable.c @@ -166,6 +166,14 @@ void hif_target_register_tbl_attach(struct hif_softc *scn, u32 target_type) break; #endif /* QCA6490_HEADERS_DEF */ +#if defined(WCN7850_HEADERS_DEF) + case TARGET_TYPE_WCN7850: + scn->targetdef = WCN7850_TARGETdef; + scn->target_ce_def = WCN7850_CE_TARGETdef; + hif_info("TARGET_TYPE_WCN7850"); + break; +#endif /* WCN7850_HEADERS_DEF */ + #if defined(QCA6750_HEADERS_DEF) case TARGET_TYPE_QCA6750: scn->targetdef = QCA6750_TARGETdef; @@ -291,6 +299,13 @@ void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type) break; #endif /* QCA6490_HEADERS_DEF */ +#if defined(WCN7850_HEADERS_DEF) + case HIF_TYPE_WCN7850: + scn->hostdef = WCN7850_HOSTdef; + hif_info("HIF_TYPE_WCN7850"); + break; +#endif /* WCN7850_HEADERS_DEF */ + #if defined(QCA6750_HEADERS_DEF) case HIF_TYPE_QCA6750: scn->hostdef = QCA6750_HOSTdef; diff --git a/hif/src/wcn7850def.c b/hif/src/wcn7850def.c new file mode 100644 index 0000000000..7653fbc7de --- /dev/null +++ b/hif/src/wcn7850def.c @@ -0,0 +1,225 @@ +/* + * Copyright (c) 2021 The Linux Foundation. All rights reserved. + * + * 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. + */ + +#if defined(WCN7850_HEADERS_DEF) + +#undef UMAC +#define WLAN_HEADERS 1 + +#include "beryllium_top_reg.h" +#include "wcss_version.h" + +#define MISSING 0 + +#define SOC_RESET_CONTROL_OFFSET MISSING +#define GPIO_PIN0_OFFSET MISSING +#define GPIO_PIN1_OFFSET MISSING +#define GPIO_PIN0_CONFIG_MASK MISSING +#define GPIO_PIN1_CONFIG_MASK MISSING +#define LOCAL_SCRATCH_OFFSET 0x18 +#define GPIO_PIN10_OFFSET MISSING +#define GPIO_PIN11_OFFSET MISSING +#define GPIO_PIN12_OFFSET MISSING +#define GPIO_PIN13_OFFSET MISSING +#define MBOX_BASE_ADDRESS MISSING +#define INT_STATUS_ENABLE_ERROR_LSB MISSING +#define INT_STATUS_ENABLE_ERROR_MASK MISSING +#define INT_STATUS_ENABLE_CPU_LSB MISSING +#define INT_STATUS_ENABLE_CPU_MASK MISSING +#define INT_STATUS_ENABLE_COUNTER_LSB MISSING +#define INT_STATUS_ENABLE_COUNTER_MASK MISSING +#define INT_STATUS_ENABLE_MBOX_DATA_LSB MISSING +#define INT_STATUS_ENABLE_MBOX_DATA_MASK MISSING +#define ERROR_STATUS_ENABLE_RX_UNDERFLOW_LSB MISSING +#define ERROR_STATUS_ENABLE_RX_UNDERFLOW_MASK MISSING +#define ERROR_STATUS_ENABLE_TX_OVERFLOW_LSB MISSING +#define ERROR_STATUS_ENABLE_TX_OVERFLOW_MASK MISSING +#define COUNTER_INT_STATUS_ENABLE_BIT_LSB MISSING +#define COUNTER_INT_STATUS_ENABLE_BIT_MASK MISSING +#define INT_STATUS_ENABLE_ADDRESS MISSING +#define CPU_INT_STATUS_ENABLE_BIT_LSB MISSING +#define CPU_INT_STATUS_ENABLE_BIT_MASK MISSING +#define HOST_INT_STATUS_ADDRESS MISSING +#define CPU_INT_STATUS_ADDRESS MISSING +#define ERROR_INT_STATUS_ADDRESS MISSING +#define ERROR_INT_STATUS_WAKEUP_MASK MISSING +#define ERROR_INT_STATUS_WAKEUP_LSB MISSING +#define ERROR_INT_STATUS_RX_UNDERFLOW_MASK MISSING +#define ERROR_INT_STATUS_RX_UNDERFLOW_LSB MISSING +#define ERROR_INT_STATUS_TX_OVERFLOW_MASK MISSING +#define ERROR_INT_STATUS_TX_OVERFLOW_LSB MISSING +#define COUNT_DEC_ADDRESS MISSING +#define HOST_INT_STATUS_CPU_MASK MISSING +#define HOST_INT_STATUS_CPU_LSB MISSING +#define HOST_INT_STATUS_ERROR_MASK MISSING +#define HOST_INT_STATUS_ERROR_LSB MISSING +#define HOST_INT_STATUS_COUNTER_MASK MISSING +#define HOST_INT_STATUS_COUNTER_LSB MISSING +#define RX_LOOKAHEAD_VALID_ADDRESS MISSING +#define WINDOW_DATA_ADDRESS MISSING +#define WINDOW_READ_ADDR_ADDRESS MISSING +#define WINDOW_WRITE_ADDR_ADDRESS MISSING +/* GPIO Register */ +#define GPIO_ENABLE_W1TS_LOW_ADDRESS MISSING +#define GPIO_PIN0_CONFIG_LSB MISSING +#define GPIO_PIN0_PAD_PULL_LSB MISSING +#define GPIO_PIN0_PAD_PULL_MASK MISSING +/* SI reg */ +#define SI_CONFIG_ERR_INT_MASK MISSING +#define SI_CONFIG_ERR_INT_LSB MISSING + +#define RTC_SOC_BASE_ADDRESS MISSING +#define RTC_WMAC_BASE_ADDRESS MISSING +#define SOC_CORE_BASE_ADDRESS MISSING +#define WLAN_MAC_BASE_ADDRESS MISSING +#define GPIO_BASE_ADDRESS MISSING +#define ANALOG_INTF_BASE_ADDRESS MISSING +#define CE0_BASE_ADDRESS MISSING +#define CE1_BASE_ADDRESS MISSING +#define CE_COUNT 12 +#define CE_WRAPPER_BASE_ADDRESS MISSING +#define SI_BASE_ADDRESS MISSING +#define DRAM_BASE_ADDRESS MISSING + +#define WLAN_SYSTEM_SLEEP_DISABLE_LSB MISSING +#define WLAN_SYSTEM_SLEEP_DISABLE_MASK MISSING +#define CLOCK_CONTROL_OFFSET MISSING +#define CLOCK_CONTROL_SI0_CLK_MASK MISSING +#define RESET_CONTROL_SI0_RST_MASK MISSING +#define WLAN_RESET_CONTROL_OFFSET MISSING +#define WLAN_RESET_CONTROL_COLD_RST_MASK MISSING +#define WLAN_RESET_CONTROL_WARM_RST_MASK MISSING +#define CPU_CLOCK_OFFSET MISSING + +#define CPU_CLOCK_STANDARD_LSB MISSING +#define CPU_CLOCK_STANDARD_MASK MISSING +#define LPO_CAL_ENABLE_LSB MISSING +#define LPO_CAL_ENABLE_MASK MISSING +#define WLAN_SYSTEM_SLEEP_OFFSET MISSING + +#define SOC_CHIP_ID_ADDRESS MISSING +#define SOC_CHIP_ID_REVISION_MASK MISSING +#define SOC_CHIP_ID_REVISION_LSB MISSING +#define SOC_CHIP_ID_REVISION_MSB MISSING + +#define FW_IND_EVENT_PENDING MISSING +#define FW_IND_INITIALIZED MISSING + +#define MSDU_LINK_EXT_3_TCP_OVER_IPV4_CHECKSUM_EN_MASK MISSING +#define MSDU_LINK_EXT_3_TCP_OVER_IPV6_CHECKSUM_EN_MASK MISSING +#define MSDU_LINK_EXT_3_UDP_OVER_IPV4_CHECKSUM_EN_MASK MISSING +#define MSDU_LINK_EXT_3_UDP_OVER_IPV6_CHECKSUM_EN_MASK MISSING +#define MSDU_LINK_EXT_3_TCP_OVER_IPV4_CHECKSUM_EN_LSB MISSING +#define MSDU_LINK_EXT_3_TCP_OVER_IPV6_CHECKSUM_EN_LSB MISSING +#define MSDU_LINK_EXT_3_UDP_OVER_IPV4_CHECKSUM_EN_LSB MISSING +#define MSDU_LINK_EXT_3_UDP_OVER_IPV6_CHECKSUM_EN_LSB MISSING + +#define SR_WR_INDEX_ADDRESS MISSING +#define DST_WATERMARK_ADDRESS MISSING + +#define DST_WR_INDEX_ADDRESS MISSING +#define SRC_WATERMARK_ADDRESS MISSING +#define SRC_WATERMARK_LOW_MASK MISSING +#define SRC_WATERMARK_HIGH_MASK MISSING +#define DST_WATERMARK_LOW_MASK MISSING +#define DST_WATERMARK_HIGH_MASK MISSING +#define CURRENT_SRRI_ADDRESS MISSING +#define CURRENT_DRRI_ADDRESS MISSING +#define HOST_IS_SRC_RING_HIGH_WATERMARK_MASK MISSING +#define HOST_IS_SRC_RING_LOW_WATERMARK_MASK MISSING +#define HOST_IS_DST_RING_HIGH_WATERMARK_MASK MISSING +#define HOST_IS_DST_RING_LOW_WATERMARK_MASK MISSING +#define HOST_IS_ADDRESS MISSING +#define MISC_IS_ADDRESS MISSING +#define HOST_IS_COPY_COMPLETE_MASK MISSING +#define CE_WRAPPER_BASE_ADDRESS MISSING +#define CE_WRAPPER_INTERRUPT_SUMMARY_ADDRESS MISSING +#define CE_DDR_ADDRESS_FOR_RRI_LOW MISSING +#define CE_DDR_ADDRESS_FOR_RRI_HIGH MISSING + +#if (defined(WCSS_VERSION) && (WCSS_VERSION >= 72)) +#define HOST_IE_ADDRESS UMAC_CE_COMMON_WFSS_CE_COMMON_R0_CE_HOST_IE_0 +#define HOST_IE_ADDRESS_2 UMAC_CE_COMMON_WFSS_CE_COMMON_R0_CE_HOST_IE_1 +#else /* WCSS_VERSION < 72 */ +#define HOST_IE_ADDRESS UMAC_CE_COMMON_CE_HOST_IE_0 +#define HOST_IE_ADDRESS_2 UMAC_CE_COMMON_CE_HOST_IE_1 +#endif /* WCSS_VERSION */ + +#define HOST_IE_COPY_COMPLETE_MASK MISSING +#define SR_BA_ADDRESS MISSING +#define SR_BA_ADDRESS_HIGH MISSING +#define SR_SIZE_ADDRESS MISSING +#define CE_CTRL1_ADDRESS MISSING +#define CE_CTRL1_DMAX_LENGTH_MASK MISSING +#define DR_BA_ADDRESS MISSING +#define DR_BA_ADDRESS_HIGH MISSING +#define DR_SIZE_ADDRESS MISSING +#define CE_CMD_REGISTER MISSING +#define CE_MSI_ADDRESS MISSING +#define CE_MSI_ADDRESS_HIGH MISSING +#define CE_MSI_DATA MISSING +#define CE_MSI_ENABLE_BIT MISSING +#define MISC_IE_ADDRESS MISSING +#define MISC_IS_AXI_ERR_MASK MISSING +#define MISC_IS_DST_ADDR_ERR_MASK MISSING +#define MISC_IS_SRC_LEN_ERR_MASK MISSING +#define MISC_IS_DST_MAX_LEN_VIO_MASK MISSING +#define MISC_IS_DST_RING_OVERFLOW_MASK MISSING +#define MISC_IS_SRC_RING_OVERFLOW_MASK MISSING +#define SRC_WATERMARK_LOW_LSB MISSING +#define SRC_WATERMARK_HIGH_LSB MISSING +#define DST_WATERMARK_LOW_LSB MISSING +#define DST_WATERMARK_HIGH_LSB MISSING +#define CE_WRAPPER_INTERRUPT_SUMMARY_HOST_MSI_MASK MISSING +#define CE_WRAPPER_INTERRUPT_SUMMARY_HOST_MSI_LSB MISSING +#define CE_CTRL1_DMAX_LENGTH_LSB MISSING +#define CE_CTRL1_SRC_RING_BYTE_SWAP_EN_MASK MISSING +#define CE_CTRL1_DST_RING_BYTE_SWAP_EN_MASK MISSING +#define CE_CTRL1_SRC_RING_BYTE_SWAP_EN_LSB MISSING +#define CE_CTRL1_DST_RING_BYTE_SWAP_EN_LSB MISSING +#define CE_CTRL1_IDX_UPD_EN_MASK MISSING +#define CE_WRAPPER_DEBUG_OFFSET MISSING +#define CE_WRAPPER_DEBUG_SEL_MSB MISSING +#define CE_WRAPPER_DEBUG_SEL_LSB MISSING +#define CE_WRAPPER_DEBUG_SEL_MASK MISSING +#define CE_DEBUG_OFFSET MISSING +#define CE_DEBUG_SEL_MSB MISSING +#define CE_DEBUG_SEL_LSB MISSING +#define CE_DEBUG_SEL_MASK MISSING +#define CE0_BASE_ADDRESS MISSING +#define CE1_BASE_ADDRESS MISSING +#define A_WIFI_APB_3_A_WCMN_APPS_CE_INTR_ENABLES MISSING +#define A_WIFI_APB_3_A_WCMN_APPS_CE_INTR_STATUS MISSING + +#define WCN7850_BOARD_DATA_SZ MISSING +#define WCN7850_BOARD_EXT_DATA_SZ MISSING + +#define MY_TARGET_DEF WCN7850_TARGETdef +#define MY_HOST_DEF WCN7850_HOSTdef +#define MY_CEREG_DEF WCN7850_CE_TARGETdef +#define MY_TARGET_BOARD_DATA_SZ WCN7850_BOARD_DATA_SZ +#define MY_TARGET_BOARD_EXT_DATA_SZ WCN7850_BOARD_EXT_DATA_SZ +#include "targetdef.h" +#include "hostdef.h" +#else +#include "common_drv.h" +#include "targetdef.h" +#include "hostdef.h" +struct targetdef_s *WCN7850_TARGETdef; +struct hostdef_s *WCN7850_HOSTdef; +#endif /*WCN7850_HEADERS_DEF */