qcacmn: Initial changes in hif for ipq5332 target compilation

Added device ID and target type checks in hif for ipq5332 traget
compilation.

CRs-Fixed: 3273827
Change-Id: I771d741c204695a678bf22bccd039047b9dc8356
This commit is contained in:
Sajini R
2022-08-22 17:43:55 +05:30
committad av Madan Koyyalamudi
förälder 51cde26ad5
incheckning 5d150285fd
10 ändrade filer med 142 tillägg och 7 borttagningar

Visa fil

@@ -81,6 +81,7 @@ typedef void *hif_handle_t;
#define HIF_TYPE_QCN9224 27
#define HIF_TYPE_QCA9574 28
#define HIF_TYPE_MANGO 29
#define HIF_TYPE_QCA5332 30
#define DMA_COHERENT_MASK_DEFAULT 37

Visa fil

@@ -49,4 +49,5 @@ extern struct hostdef_s *QCN6122_HOSTDEF;
extern struct hostdef_s *QCN9224v1_HOSTDEF;
extern struct hostdef_s *QCN9224_HOSTDEF;
extern struct hostdef_s *QCA9574_HOSTDEF;
extern struct hostdef_s *QCA5332_HOSTDEF;
#endif

Visa fil

@@ -49,6 +49,7 @@ extern struct targetdef_s *KIWI_TARGETdef;
extern struct targetdef_s *QCN9224v1_TARGETDEF;
extern struct targetdef_s *QCN9224_TARGETDEF;
extern struct targetdef_s *QCA9574_TARGETDEF;
extern struct targetdef_s *QCA5332_TARGETDEF;
extern struct ce_reg_def *AR6002_CE_TARGETdef;
extern struct ce_reg_def *AR6003_CE_TARGETdef;
@@ -73,5 +74,6 @@ extern struct ce_reg_def *KIWI_CE_TARGETdef;
extern struct ce_reg_def *QCN9224v1_CE_TARGETDEF;
extern struct ce_reg_def *QCN9224_CE_TARGETDEF;
extern struct ce_reg_def *QCA9574_CE_TARGETDEF;
extern struct ce_reg_def *QCA5332_CE_TARGETDEF;
#endif

Visa fil

@@ -110,6 +110,7 @@ static ssize_t ath_procfs_diag_read_legacy(struct file *file,
(tgt_info->target_type == TARGET_TYPE_QCN9224) ||
(tgt_info->target_type == TARGET_TYPE_QCN6122) ||
(tgt_info->target_type == TARGET_TYPE_QCA5018) ||
(tgt_info->target_type == TARGET_TYPE_QCA5332) ||
(tgt_info->target_type == TARGET_TYPE_QCA6018) ||
(tgt_info->target_type == TARGET_TYPE_QCN7605) ||
(tgt_info->target_type == TARGET_TYPE_KIWI) ||
@@ -193,6 +194,7 @@ static ssize_t ath_procfs_diag_write_legacy(struct file *file,
(tgt_info->target_type == TARGET_TYPE_QCN9224) ||
(tgt_info->target_type == TARGET_TYPE_QCN6122) ||
(tgt_info->target_type == TARGET_TYPE_QCA5018) ||
(tgt_info->target_type == TARGET_TYPE_QCA5332) ||
(tgt_info->target_type == TARGET_TYPE_QCA6018) ||
(tgt_info->target_type == TARGET_TYPE_QCN7605) ||
(tgt_info->target_type == TARGET_TYPE_KIWI) ||

Visa fil

@@ -1068,6 +1068,66 @@ static struct CE_pipe_config target_ce_config_wlan_qcn6122[] = {
#define PKTLOG_DST_ENTRIES 512
#endif
#define QCA_5332_CE_COUNT 12
static struct CE_attr host_ce_config_wlan_qca5332[] = {
/* 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, 128, 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,},
/* target -> host PKTLOG */
#ifdef REMOVE_PKT_LOG
{ /* CE5 */ 0, 0, 0, 0, 0, NULL,},
#else
{/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048, PKTLOG_DST_ENTRIES, NULL,},
#endif
/* Target autonomous HIF_memcpy */
{/*CE6*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 0, 0, NULL,},
/* CV Prefetch */
{/*CE7*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 0, 0, NULL,},
/* Target HIF memcpy (Generic HIF memcypy) */
{/*CE8*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 0, 0, NULL,},
/* WMI logging/CFR/Spectral/Radar/ */
{/*CE9*/ (CE_ATTR_FLAGS), 0, 0, 2048, 128, NULL,},
/* Customer reserve */
{/*CE10*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 0, 0, NULL,},
/* Un-assigned */
{/*CE11*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0, 0, 0, 0, NULL,},
};
static struct CE_pipe_config target_ce_config_wlan_qca5332[] = {
/* 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, 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,},
/* 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 Reserved for CV Prefetch */
{ /* CE7 */ 7, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
/* CE8 Reserved for target generic HIF memcpy */
{ /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
/* WMI logging/CFR/Spectral/Radar/ */
{ /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
/* CE 10,11 to be defined */
{/* CE11 unused */10, PIPEDIR_NONE, 0, 0, 0, 0,},
{/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
};
#define QCA_5018_CE_COUNT 6
static struct CE_attr host_ce_config_wlan_qca5018[] = {
/* host->target HTC control and raw streams */

Visa fil

@@ -55,8 +55,8 @@
#if (defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6290) || \
defined(QCA_WIFI_QCA6018) || defined(QCA_WIFI_QCA5018) || \
defined(QCA_WIFI_KIWI) || defined(QCA_WIFI_QCA9574)) && \
!defined(QCA_WIFI_SUPPORT_SRNG)
defined(QCA_WIFI_KIWI) || defined(QCA_WIFI_QCA5332) || \
defined(QCA_WIFI_QCA9574)) && !defined(QCA_WIFI_SUPPORT_SRNG)
#define QCA_WIFI_SUPPORT_SRNG
#endif
@@ -885,6 +885,34 @@ static struct service_to_pipe target_service_to_ce_map_qcn9000[] = {
};
#endif
#if (defined(QCA_WIFI_QCA5332))
static struct service_to_pipe target_service_to_ce_map_qca5332[] = {
{ 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, 1, },
{ HTC_RAW_STREAMS_SVC, PIPEDIR_OUT, 0},
{ HTC_RAW_STREAMS_SVC, PIPEDIR_IN, 1 },
{ HTT_DATA_MSG_SVC, PIPEDIR_OUT, 4, },
{ HTT_DATA_MSG_SVC, PIPEDIR_IN, 1, },
{ PACKET_LOG_SVC, PIPEDIR_IN, 5, },
{ WMI_CONTROL_DIAG_SVC, PIPEDIR_IN, 9, },
/* (Additions here) */
{ 0, 0, 0, },
};
#else
static struct service_to_pipe target_service_to_ce_map_qca5332[] = {
};
#endif
#if (defined(QCA_WIFI_QCN9224))
static struct service_to_pipe target_service_to_ce_map_qcn9224[] = {
{ WMI_DATA_VO_SVC, PIPEDIR_OUT, 3, },
@@ -1404,6 +1432,11 @@ static void hif_select_service_to_pipe_map(struct hif_softc *scn,
hif_select_ce_map_qcn9224(tgt_svc_map_to_use,
sz_tgt_svc_map_to_use);
break;
case TARGET_TYPE_QCA5332:
*tgt_svc_map_to_use = target_service_to_ce_map_qca5332;
*sz_tgt_svc_map_to_use =
sizeof(target_service_to_ce_map_qca5332);
break;
case TARGET_TYPE_QCA5018:
case TARGET_TYPE_QCN6122:
*tgt_svc_map_to_use =
@@ -1679,6 +1712,7 @@ bool ce_srng_based(struct hif_softc *scn)
case TARGET_TYPE_MANGO:
case TARGET_TYPE_QCN9224:
case TARGET_TYPE_QCA9574:
case TARGET_TYPE_QCA5332:
return true;
default:
return false;
@@ -4049,6 +4083,13 @@ void hif_ce_prepare_config(struct hif_softc *scn)
case TARGET_TYPE_QCN9224:
hif_set_ce_config_qcn9224(scn, hif_state);
break;
case TARGET_TYPE_QCA5332:
hif_state->host_ce_config = host_ce_config_wlan_qca5332;
hif_state->target_ce_config = target_ce_config_wlan_qca5332;
hif_state->target_ce_config_sz =
sizeof(target_ce_config_wlan_qca5332);
scn->ce_count = QCA_5332_CE_COUNT;
break;
case TARGET_TYPE_QCN6122:
hif_state->host_ce_config = host_ce_config_wlan_qcn6122;
hif_state->target_ce_config = target_ce_config_wlan_qcn6122;

Visa fil

@@ -41,7 +41,8 @@
#include "hif_debug.h"
#include "mp_dev.h"
#if defined(QCA_WIFI_QCA8074) || defined(QCA_WIFI_QCA6018) || \
defined(QCA_WIFI_QCA5018) || defined(QCA_WIFI_QCA9574)
defined(QCA_WIFI_QCA5018) || defined(QCA_WIFI_QCA9574) || \
defined(QCA_WIFI_QCA5332)
#include "hal_api.h"
#endif
#include "hif_napi.h"
@@ -1077,7 +1078,7 @@ static inline int hif_get_num_active_grp_tasklets(struct hif_softc *scn)
defined(QCA_WIFI_QCN9000) || defined(QCA_WIFI_QCA6490) || \
defined(QCA_WIFI_QCA6750) || defined(QCA_WIFI_QCA5018) || \
defined(QCA_WIFI_KIWI) || defined(QCA_WIFI_QCN9224) || \
defined(QCA_WIFI_QCA9574))
defined(QCA_WIFI_QCA9574)) || defined(QCA_WIFI_QCA5332)
/**
* hif_get_num_pending_work() - get the number of entries in
* the workqueue pending to be completed.
@@ -1213,7 +1214,7 @@ uint8_t hif_get_ep_vote_access(struct hif_opaque_softc *hif_ctx,
defined(QCA_WIFI_QCN9000) || defined(QCA_WIFI_QCA6490) || \
defined(QCA_WIFI_QCA6750) || defined(QCA_WIFI_QCA5018) || \
defined(QCA_WIFI_KIWI) || defined(QCA_WIFI_QCN9224) || \
defined(QCA_WIFI_QCA9574))
defined(QCA_WIFI_QCA9574)) || defined(QCA_WIFI_QCA5332)
static QDF_STATUS hif_hal_attach(struct hif_softc *scn)
{
if (ce_srng_based(scn)) {
@@ -1658,6 +1659,12 @@ int hif_get_device_type(uint32_t device_id,
hif_info(" *********** qca5018 *************");
break;
case QCA5332_DEVICE_ID:
*hif_type = HIF_TYPE_QCA5332;
*target_type = TARGET_TYPE_QCA5332;
hif_info(" *********** QCA5332 *************");
break;
case QCA9574_DEVICE_ID:
*hif_type = HIF_TYPE_QCA9574;
*target_type = TARGET_TYPE_QCA9574;

Visa fil

@@ -1730,6 +1730,7 @@ int hif_pci_bus_configure(struct hif_softc *hif_sc)
if (((hif_sc->target_info.target_type == TARGET_TYPE_QCA8074) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA8074V2) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA9574) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA5332) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA5018) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCN6122) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA6018)) &&
@@ -1753,6 +1754,7 @@ int hif_pci_bus_configure(struct hif_softc *hif_sc)
if (((hif_sc->target_info.target_type == TARGET_TYPE_QCA8074) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA8074V2) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA9574) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA5332) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA5018) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCN6122) ||
(hif_sc->target_info.target_type == TARGET_TYPE_QCA6018)) &&
@@ -3522,6 +3524,7 @@ int hif_configure_irq(struct hif_softc *scn)
case TARGET_TYPE_QCA8074V2:
case TARGET_TYPE_QCA6018:
case TARGET_TYPE_QCA5018:
case TARGET_TYPE_QCA5332:
case TARGET_TYPE_QCA9574:
ret = hif_ahb_configure_irq(sc);
break;

Visa fil

@@ -164,6 +164,14 @@ void hif_target_register_tbl_attach(struct hif_softc *scn, u32 target_type)
break;
#endif
#if defined(QCA5332_HEADERS_DEF)
case TARGET_TYPE_QCA5332:
scn->targetdef = QCA5332_TARGETDEF;
scn->target_ce_def = QCA5332_CE_TARGETDEF;
hif_info("TARGET_TYPE_QCA5332");
break;
#endif
#if defined(QCA6390_HEADERS_DEF)
case TARGET_TYPE_QCA6390:
scn->targetdef = QCA6390_TARGETdef;
@@ -306,6 +314,11 @@ void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
scn->hostdef = QCA5018_HOSTDEF;
break;
#endif
#if defined(QCA5332_HEADERS_DEF)
case HIF_TYPE_QCA5332:
scn->hostdef = QCA5332_HOSTDEF;
break;
#endif
#if defined(QCA9574_HEADERS_DEF)
case HIF_TYPE_QCA9574:
scn->hostdef = QCA9574_HOSTDEF;

Visa fil

@@ -406,7 +406,8 @@ void hif_ahb_disable_bus(struct hif_softc *scn)
if (memres)
mem_pa_size = memres->end - memres->start + 1;
if (tgt_info->target_type == TARGET_TYPE_QCA5018) {
if (tgt_info->target_type == TARGET_TYPE_QCA5018 ||
tgt_info->target_type == TARGET_TYPE_QCA5332) {
iounmap(sc->mem_ce);
sc->mem_ce = NULL;
scn->mem_ce = NULL;
@@ -533,7 +534,8 @@ QDF_STATUS hif_ahb_enable_bus(struct hif_softc *ol_sc,
* In QCA5018 CE region moved to SOC outside WCSS block.
* Allocate separate I/O remap to access CE registers.
*/
if (tgt_info->target_type == TARGET_TYPE_QCA5018) {
if (tgt_info->target_type == TARGET_TYPE_QCA5018 ||
tgt_info->target_type == TARGET_TYPE_QCA5332) {
struct hif_softc *scn = HIF_GET_SOFTC(sc);
sc->mem_ce = ioremap_nocache(HOST_CE_ADDRESS, HOST_CE_SIZE);
@@ -638,6 +640,7 @@ void hif_ahb_irq_enable(struct hif_softc *scn, int ce_id)
if (tgt_info->target_type == TARGET_TYPE_QCA8074 ||
tgt_info->target_type == TARGET_TYPE_QCA8074V2 ||
tgt_info->target_type == TARGET_TYPE_QCA9574 ||
tgt_info->target_type == TARGET_TYPE_QCA5332 ||
tgt_info->target_type == TARGET_TYPE_QCA5018 ||
tgt_info->target_type == TARGET_TYPE_QCA6018) {
/* Enable destination ring interrupts for
@@ -691,6 +694,7 @@ void hif_ahb_irq_disable(struct hif_softc *scn, int ce_id)
if (tgt_info->target_type == TARGET_TYPE_QCA8074 ||
tgt_info->target_type == TARGET_TYPE_QCA8074V2 ||
tgt_info->target_type == TARGET_TYPE_QCA9574 ||
tgt_info->target_type == TARGET_TYPE_QCA5332 ||
tgt_info->target_type == TARGET_TYPE_QCA5018 ||
tgt_info->target_type == TARGET_TYPE_QCA6018) {
/* Disable destination ring interrupts for
@@ -773,6 +777,7 @@ void hif_display_ahb_irq_regs(struct hif_softc *scn)
if (tgt_info->target_type == TARGET_TYPE_QCA8074 ||
tgt_info->target_type == TARGET_TYPE_QCA8074V2 ||
tgt_info->target_type == TARGET_TYPE_QCA9574 ||
tgt_info->target_type == TARGET_TYPE_QCA5332 ||
tgt_info->target_type == TARGET_TYPE_QCA5018 ||
tgt_info->target_type == TARGET_TYPE_QCA6018) {
regval = hif_read32_mb(scn, mem +