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
このコミットが含まれているのは:
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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) ||
|
||||
|
@@ -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 */
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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 +
|
||||
|
新しいイシューから参照
ユーザーをブロックする