From bf1debc03a9693cb6a8f7685826d28d448e08656 Mon Sep 17 00:00:00 2001 From: Chaoli Zhou Date: Tue, 18 Feb 2020 22:06:49 +0800 Subject: [PATCH] qcacld-3.0: Refine ol_txrx_ipa_wdi_tx_smmu_params for different target Currently, Linux Kernel 4.9 doesn't support WDI3/WDI2 over GSI, so it missed the definition of is_txr_rn_db_pcie_addr & is_evt_rn_db_pcie_addr, and we should not call the relevant API for Linux Kernel 4.9 + ROME target. So refine the function ol_txrx_ipa_wdi_tx_smmu_params to fix compile issue. Change-Id: I050d7f8613f9a5ae05d6a269dece53db624d18e2 --- core/dp/txrx/ol_txrx_ipa.c | 61 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/core/dp/txrx/ol_txrx_ipa.c b/core/dp/txrx/ol_txrx_ipa.c index d10df6465060..a5e2bc650c15 100644 --- a/core/dp/txrx/ol_txrx_ipa.c +++ b/core/dp/txrx/ol_txrx_ipa.c @@ -306,6 +306,7 @@ static inline void ol_txrx_setup_mcc_sys_pipes( #endif #ifdef ENABLE_SMMU_S1_TRANSLATION +#ifdef QCA_WIFI_3_0 /** * ol_txrx_ipa_wdi_tx_smmu_params() - Config IPA TX params * @ipa_res: IPA resources @@ -341,7 +342,6 @@ static inline void ol_txrx_ipa_wdi_tx_smmu_params( QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(tx_smmu) = 0; } -#ifdef QCA_WIFI_3_0 /** * ol_txrx_ipa_wdi_rx_smmu_params() - Config IPA RX params * @ipa_res: IPA resources @@ -380,6 +380,33 @@ static inline void ol_txrx_ipa_wdi_rx_smmu_params( } #else + +static inline void ol_txrx_ipa_wdi_tx_smmu_params( + struct ol_txrx_ipa_resources *ipa_res, + qdf_ipa_wdi_pipe_setup_info_smmu_t *tx_smmu, + bool over_gsi) +{ + QDF_IPA_WDI_SETUP_INFO_SMMU_CLIENT(tx_smmu) = + IPA_CLIENT_WLAN1_CONS; + qdf_mem_copy(&QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_BASE( + tx_smmu), + &ipa_res->tx_comp_ring->sgtable, + sizeof(sgtable_t)); + QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_SIZE(tx_smmu) = + ipa_res->tx_comp_ring->mem_info.size; + qdf_mem_copy(&QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_BASE( + tx_smmu), + &ipa_res->ce_sr->sgtable, + sizeof(sgtable_t)); + QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_SIZE(tx_smmu) = + ipa_res->ce_sr_ring_size; + QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_DOORBELL_PA(tx_smmu) = + ipa_res->ce_reg_paddr; + QDF_IPA_WDI_SETUP_INFO_SMMU_NUM_PKT_BUFFERS(tx_smmu) = + ipa_res->tx_num_alloc_buffer; + QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(tx_smmu) = 0; +} + static inline void ol_txrx_ipa_wdi_rx_smmu_params( struct ol_txrx_ipa_resources *ipa_res, qdf_ipa_wdi_pipe_setup_info_smmu_t *rx_smmu, @@ -417,6 +444,7 @@ static inline void ol_txrx_ipa_wdi_rx_smmu_params( } #endif +#ifdef QCA_WIFI_3_0 /** * ol_txrx_ipa_wdi_tx_params() - Config IPA TX params * @ipa_res: IPA resources @@ -457,7 +485,6 @@ static inline void ol_txrx_ipa_wdi_tx_params( QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(tx) = 0; } -#ifdef QCA_WIFI_3_0 /** * ol_txrx_ipa_wdi_rx_params() - Config IPA RX params * @ipa_res: IPA resources @@ -491,6 +518,36 @@ static inline void ol_txrx_ipa_wdi_rx_params( } #else +static inline void ol_txrx_ipa_wdi_tx_params( + struct ol_txrx_ipa_resources *ipa_res, + qdf_ipa_wdi_pipe_setup_info_t *tx, + bool over_gsi) +{ + qdf_device_t osdev = cds_get_context(QDF_MODULE_ID_QDF_DEVICE); + + if (!osdev) { + QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, + "%s: qdf device is null!", __func__); + return; + } + + QDF_IPA_WDI_SETUP_INFO_CLIENT(tx) = IPA_CLIENT_WLAN1_CONS; + QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(tx) = + qdf_mem_get_dma_addr(osdev, + &ipa_res->tx_comp_ring->mem_info); + QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(tx) = + ipa_res->tx_comp_ring->mem_info.size; + QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(tx) = + qdf_mem_get_dma_addr(osdev, + &ipa_res->ce_sr->mem_info); + QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(tx) = + ipa_res->ce_sr_ring_size; + QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(tx) = + ipa_res->ce_reg_paddr; + QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(tx) = + ipa_res->tx_num_alloc_buffer; + QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(tx) = 0; +} static inline void ol_txrx_ipa_wdi_rx_params( struct ol_txrx_ipa_resources *ipa_res,