qcacmn: Add HIF changes to support WCN7850

HIF changes to support WCN7850 WLAN chipset.

Change-Id: I02cd0702839a09b13a10b95237519f900a4cb7f9
This commit is contained in:
Jinwei Chen
2020-12-18 02:54:41 -08:00
committed by snandini
parent d4119f1507
commit 017c719e4b
14 changed files with 378 additions and 13 deletions

View File

@@ -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_NODE3: /*lithium emulation */
case RUMIM2M_DEVICE_ID_NODE4: /*lithium emulation */ case RUMIM2M_DEVICE_ID_NODE4: /*lithium emulation */
case RUMIM2M_DEVICE_ID_NODE5: /*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, return dp_soc_attach_wifi3(psoc, hif_handle, htc_handle,
qdf_dev, dp_ol_if_ops, devid); qdf_dev, dp_ol_if_ops, devid);
break; break;

View File

@@ -69,6 +69,7 @@ typedef void *hif_handle_t;
#define HIF_TYPE_QCA6750 23 #define HIF_TYPE_QCA6750 23
#define HIF_TYPE_QCA5018 24 #define HIF_TYPE_QCA5018 24
#define HIF_TYPE_QCN6122 25 #define HIF_TYPE_QCN6122 25
#define HIF_TYPE_WCN7850 26
#define DMA_COHERENT_MASK_DEFAULT 37 #define DMA_COHERENT_MASK_DEFAULT 37

View File

@@ -37,6 +37,7 @@ extern struct hostdef_s *QCA6290_HOSTdef;
extern struct hostdef_s *QCA6390_HOSTdef; extern struct hostdef_s *QCA6390_HOSTdef;
extern struct hostdef_s *QCA6490_HOSTdef; extern struct hostdef_s *QCA6490_HOSTdef;
extern struct hostdef_s *QCA6750_HOSTdef; extern struct hostdef_s *QCA6750_HOSTdef;
extern struct hostdef_s *WCN7850_HOSTdef;
#ifdef ATH_AHB #ifdef ATH_AHB
extern struct hostdef_s *IPQ4019_HOSTdef; extern struct hostdef_s *IPQ4019_HOSTdef;

View File

@@ -70,6 +70,11 @@ extern "C" {
#define TARGET_TYPE_QCN6122 30 #define TARGET_TYPE_QCN6122 30
#endif #endif
/* Hamilton */
#ifndef TARGET_TYPE_WCN7850
#define TARGET_TYPE_WCN7850 31
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -47,6 +47,7 @@ extern struct targetdef_s *QCA6018_TARGETDEF;
extern struct targetdef_s *QCA5018_TARGETDEF; extern struct targetdef_s *QCA5018_TARGETDEF;
extern struct targetdef_s *QCN9000_TARGETDEF; extern struct targetdef_s *QCN9000_TARGETDEF;
extern struct targetdef_s *QCN6122_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 *AR6002_CE_TARGETdef;
extern struct ce_reg_def *AR6003_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 *QCA5018_CE_TARGETDEF;
extern struct ce_reg_def *QCN9000_CE_TARGETDEF; extern struct ce_reg_def *QCN9000_CE_TARGETDEF;
extern struct ce_reg_def *QCN6122_CE_TARGETDEF; extern struct ce_reg_def *QCN6122_CE_TARGETDEF;
extern struct ce_reg_def *WCN7850_CE_TARGETdef;
#endif #endif

View File

@@ -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_QCN6122) ||
(tgt_info->target_type == TARGET_TYPE_QCA5018) || (tgt_info->target_type == TARGET_TYPE_QCA5018) ||
(tgt_info->target_type == TARGET_TYPE_QCA6018) || (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 && (scn->bus_type == QDF_BUS_TYPE_IPCI &&
(tgt_info->target_type == TARGET_TYPE_QCA6750)) || (tgt_info->target_type == TARGET_TYPE_QCA6750)) ||
((scn->bus_type == QDF_BUS_TYPE_USB) && ((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_QCN6122) ||
(tgt_info->target_type == TARGET_TYPE_QCA5018) || (tgt_info->target_type == TARGET_TYPE_QCA5018) ||
(tgt_info->target_type == TARGET_TYPE_QCA6018) || (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 && (scn->bus_type == QDF_BUS_TYPE_IPCI &&
(tgt_info->target_type == TARGET_TYPE_QCA6750)) || (tgt_info->target_type == TARGET_TYPE_QCA6750)) ||
((scn->bus_type == QDF_BUS_TYPE_USB) && ((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) { switch (tgt_info->target_type) {
case TARGET_TYPE_QCA6390: case TARGET_TYPE_QCA6390:
case TARGET_TYPE_QCA6490: case TARGET_TYPE_QCA6490:
/* case Hamiltons: */ case TARGET_TYPE_WCN7850:
if (op_type == OP_TYPE_EXT_DIRECT) if (op_type == OP_TYPE_EXT_DIRECT)
rv = ath_procfs_direct_read(scn, rv = ath_procfs_direct_read(scn,
offset, offset,
@@ -408,7 +410,7 @@ static ssize_t ath_procfs_diag_write_ext(struct file *file,
switch (tgt_info->target_type) { switch (tgt_info->target_type) {
case TARGET_TYPE_QCA6390: case TARGET_TYPE_QCA6390:
case TARGET_TYPE_QCA6490: case TARGET_TYPE_QCA6490:
/* case Hamiltons: */ case TARGET_TYPE_WCN7850:
if (op_type == OP_TYPE_EXT_DIRECT) if (op_type == OP_TYPE_EXT_DIRECT)
rv = ath_procfs_direct_write(scn, rv = ath_procfs_direct_write(scn,
offset, offset,

View File

@@ -1368,4 +1368,53 @@ static struct CE_pipe_config target_ce_config_wlan_qca6750[] = {
{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,}, { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
/* CE 9, 10, 11 belong to CoreBsp & MHI driver */ /* 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__ */ #endif /* __HIF_PCI_INTERNAL_H__ */

View File

@@ -53,8 +53,8 @@
#endif #endif
#if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6290) || \ #if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6290) || \
defined(QCA_WIFI_QCA6018) || defined(QCA_WIFI_QCA5018)) && \ defined(QCA_WIFI_QCA6018) || defined(QCA_WIFI_QCA5018) || \
!defined(QCA_WIFI_SUPPORT_SRNG) defined(QCA_WIFI_WCN7850)) && !defined(QCA_WIFI_SUPPORT_SRNG)
#define QCA_WIFI_SUPPORT_SRNG #define QCA_WIFI_SUPPORT_SRNG
#endif #endif
@@ -693,6 +693,33 @@ static struct service_to_pipe target_service_to_ce_map_qca6750[] = {
}; };
#endif #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[] = { static struct service_to_pipe target_service_to_ce_map_ar900b[] = {
{ {
WMI_DATA_VO_SVC, 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 = *sz_tgt_svc_map_to_use =
sizeof(target_service_to_ce_map_qca6750); sizeof(target_service_to_ce_map_qca6750);
break; 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: case TARGET_TYPE_QCA8074:
*tgt_svc_map_to_use = target_service_to_ce_map_qca8074; *tgt_svc_map_to_use = target_service_to_ce_map_qca8074;
*sz_tgt_svc_map_to_use = *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_QCN9000:
case TARGET_TYPE_QCN6122: case TARGET_TYPE_QCN6122:
case TARGET_TYPE_QCA5018: case TARGET_TYPE_QCA5018:
case TARGET_TYPE_WCN7850:
return true; return true;
default: default:
return false; return false;
@@ -3394,6 +3427,13 @@ void hif_ce_prepare_config(struct hif_softc *scn)
scn->ce_count = QCA_6750_CE_COUNT; scn->ce_count = QCA_6750_CE_COUNT;
break; 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: case TARGET_TYPE_ADRASTEA:
if (hif_is_attribute_set(scn, HIF_LOWDESC_CE_NO_PKTLOG_CFG)) { if (hif_is_attribute_set(scn, HIF_LOWDESC_CE_NO_PKTLOG_CFG)) {
hif_state->host_ce_config = hif_state->host_ce_config =

View File

@@ -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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -33,6 +33,7 @@
#define QCA9377_REV1_1_VERSION 0x5020001 #define QCA9377_REV1_1_VERSION 0x5020001
#define QCA6390_V1 0x50040000 #define QCA6390_V1 0x50040000
#define QCA6490_V1 0x50060000 #define QCA6490_V1 0x50060000
#define WCN7850_V1 0xDEADBEEF // TODO Define this
#define WCN3990_v1 0x40000000 #define WCN3990_v1 0x40000000
#define WCN3990_v2 0x40010000 #define WCN3990_v2 0x40010000
#define WCN3990_v2_1 0x40010002 #define WCN3990_v2_1 0x40010002

View File

@@ -349,6 +349,11 @@ static const struct qwlan_hw qwlan_hw_list[] = {
.id = QCA9379_REV1_VERSION, .id = QCA9379_REV1_VERSION,
.subid = 0xD, .subid = 0xD,
.name = "QCA9379_REV1_1", .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) || \ #if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6018) || \
defined(QCA_WIFI_QCA6290) || defined(QCA_WIFI_QCA6390) || \ defined(QCA_WIFI_QCA6290) || defined(QCA_WIFI_QCA6390) || \
defined(QCA_WIFI_QCN9000) || defined(QCA_WIFI_QCA6490) || \ 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 * hif_get_num_pending_work() - get the number of entries in
* the workqueue pending to be completed. * 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) || \ #if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6018) || \
defined(QCA_WIFI_QCA6290) || defined(QCA_WIFI_QCA6390) || \ defined(QCA_WIFI_QCA6290) || defined(QCA_WIFI_QCA6390) || \
defined(QCA_WIFI_QCN9000) || defined(QCA_WIFI_QCA6490) || \ 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) static QDF_STATUS hif_hal_attach(struct hif_softc *scn)
{ {
if (ce_srng_based(scn)) { if (ce_srng_based(scn)) {
@@ -1216,6 +1223,13 @@ int hif_get_device_type(uint32_t device_id,
hif_info(" *********** QCA6750 *************"); hif_info(" *********** QCA6750 *************");
break; 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: case QCA8074V2_DEVICE_ID:
*hif_type = HIF_TYPE_QCA8074V2; *hif_type = HIF_TYPE_QCA8074V2;
*target_type = TARGET_TYPE_QCA8074V2; *target_type = TARGET_TYPE_QCA8074V2;

View File

@@ -100,6 +100,10 @@
#define QCA6750_EMULATION_DEVICE_ID (0x010c) #define QCA6750_EMULATION_DEVICE_ID (0x010c)
#define QCA6750_DEVICE_ID (0x1105) #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 ADRASTEA_DEVICE_ID_P2_E12 (0x7021)
#define AR9887_DEVICE_ID (0x0050) #define AR9887_DEVICE_ID (0x0050)
#define AR900B_DEVICE_ID (0x0040) #define AR900B_DEVICE_ID (0x0040)

View File

@@ -43,7 +43,8 @@
#include "mp_dev.h" #include "mp_dev.h"
#include "hif_debug.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" #include "hal_api.h"
#endif #endif
@@ -3176,7 +3177,8 @@ int hif_pci_configure_grp_irq(struct hif_softc *scn,
return 0; 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 hif_pci_reg_read32(struct hif_softc *hif_sc,
uint32_t offset) uint32_t offset)
{ {
@@ -3378,6 +3380,8 @@ static bool hif_is_pld_based_target(struct hif_pci_softc *sc,
case QCA6490_DEVICE_ID: case QCA6490_DEVICE_ID:
case AR6320_DEVICE_ID: case AR6320_DEVICE_ID:
case QCN7605_DEVICE_ID: case QCN7605_DEVICE_ID:
case WCN7850_DEVICE_ID:
case WCN7850_EMULATION_DEVICE_ID:
return true; return true;
} }
return false; 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_QCA6390 ||
tgt_info->target_type == TARGET_TYPE_QCA6490 || tgt_info->target_type == TARGET_TYPE_QCA6490 ||
tgt_info->target_type == TARGET_TYPE_QCN7605 || 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, * Need to consider offset's memtype for QCA6290/QCA8074,
* also mem_len and DRAM_BASE_ADDRESS/DRAM_SIZE need to be * also mem_len and DRAM_BASE_ADDRESS/DRAM_SIZE need to be

View File

@@ -166,6 +166,14 @@ void hif_target_register_tbl_attach(struct hif_softc *scn, u32 target_type)
break; break;
#endif /* QCA6490_HEADERS_DEF */ #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) #if defined(QCA6750_HEADERS_DEF)
case TARGET_TYPE_QCA6750: case TARGET_TYPE_QCA6750:
scn->targetdef = QCA6750_TARGETdef; scn->targetdef = QCA6750_TARGETdef;
@@ -291,6 +299,13 @@ void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
break; break;
#endif /* QCA6490_HEADERS_DEF */ #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) #if defined(QCA6750_HEADERS_DEF)
case HIF_TYPE_QCA6750: case HIF_TYPE_QCA6750:
scn->hostdef = QCA6750_HOSTdef; scn->hostdef = QCA6750_HOSTdef;

225
hif/src/wcn7850def.c Normal file
View File

@@ -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 */