qcacld-3.0: Define init-deinit basic framework for phase 3 convergence

Define basic dispatcher framework for init/deinit. Each individual
component is supposed to define its init/deinit primitives and replace
dummy place holder primitives.

Change-Id: I35140ea7af03ce568e1732435458caf78ab28996
CRs-Fixed: 1095741
This commit is contained in:
Rajeev Kumar
2016-11-30 11:20:40 -08:00
committed by qcabuildsw
parent a529136479
commit 97767a0297
3 changed files with 34 additions and 0 deletions

12
Kbuild
View File

@@ -842,6 +842,16 @@ HTT_OBJS := $(HTT_DIR)/htt_tx.o \
$(HTT_DIR)/htt_fw_stats.o \ $(HTT_DIR)/htt_fw_stats.o \
$(HTT_DIR)/htt_rx.o $(HTT_DIR)/htt_rx.o
############## INIT-DEINIT ###########
INIT_DEINIT_DIR := init_deinit/dispatcher
INIT_DEINIT_INC_DIR := $(INIT_DEINIT_DIR)/inc
INIT_DEINIT_SRC_DIR := $(INIT_DEINIT_DIR)/src
INIT_DEINIT_OBJ_DIR := $(WLAN_COMMON_ROOT)/$(INIT_DEINIT_SRC_DIR)
INIT_DEINIT_INC := -I$(WLAN_COMMON_INC)/$(INIT_DEINIT_INC_DIR)
INIT_DEINIT_OBJS := $(INIT_DEINIT_OBJ_DIR)/dispatcher_init_deinit.o
############## HTC ########## ############## HTC ##########
HTC_DIR := htc HTC_DIR := htc
HTC_INC := -I$(WLAN_COMMON_INC)/$(HTC_DIR) HTC_INC := -I$(WLAN_COMMON_INC)/$(HTC_DIR)
@@ -1051,6 +1061,7 @@ INCS += $(WMA_INC) \
$(CDP_INC) \ $(CDP_INC) \
$(PKTLOG_INC) \ $(PKTLOG_INC) \
$(HTT_INC) \ $(HTT_INC) \
$(INIT_DEINIT_INC) \
$(HTC_INC) \ $(HTC_INC) \
$(DFS_INC) \ $(DFS_INC) \
$(WCFG_INC) \ $(WCFG_INC) \
@@ -1091,6 +1102,7 @@ OBJS += $(WMA_OBJS) \
$(WMI_OBJS) \ $(WMI_OBJS) \
$(FWLOG_OBJS) \ $(FWLOG_OBJS) \
$(HTC_OBJS) \ $(HTC_OBJS) \
$(INIT_DEINIT_OBJS) \
$(DFS_OBJS) $(DFS_OBJS)
OBJS += $(HIF_OBJS) \ OBJS += $(HIF_OBJS) \

View File

@@ -63,6 +63,7 @@
#include <cdp_txrx_cmn_reg.h> #include <cdp_txrx_cmn_reg.h>
#include <cdp_txrx_cfg.h> #include <cdp_txrx_cfg.h>
#include <cdp_txrx_misc.h> #include <cdp_txrx_misc.h>
#include <dispatcher_init_deinit.h>
/* Preprocessor Definitions and Constants */ /* Preprocessor Definitions and Constants */
/* Maximum number of cds message queue get wrapper failures to cause panic */ /* Maximum number of cds message queue get wrapper failures to cause panic */
@@ -463,6 +464,8 @@ QDF_STATUS cds_open(void)
QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_INFO_HIGH, QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_INFO_HIGH,
"%s: CDS successfully Opened", __func__); "%s: CDS successfully Opened", __func__);
dispatcher_psoc_open();
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
err_sme_close: err_sme_close:
@@ -709,6 +712,8 @@ QDF_STATUS cds_enable(v_CONTEXT_t cds_context)
QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_INFO, QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_INFO,
"%s: CDS Start is successful!!", __func__); "%s: CDS Start is successful!!", __func__);
dispatcher_psoc_enable();
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
err_soc_target_detach: err_soc_target_detach:
@@ -763,6 +768,14 @@ QDF_STATUS cds_disable(v_CONTEXT_t cds_context)
QDF_STATUS qdf_status; QDF_STATUS qdf_status;
void *handle; void *handle;
/* PSOC disable for all new components. It needs to happen before
* target is PDEV suspended such that a component can abort all its
* ongoing transaction with FW. Always keep it before wma_stop() as
* wma_stop() does target PDEV suspend.
*/
dispatcher_psoc_disable();
qdf_status = wma_stop(cds_context, HAL_STOP_TYPE_RF_KILL); qdf_status = wma_stop(cds_context, HAL_STOP_TYPE_RF_KILL);
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
@@ -939,6 +952,8 @@ QDF_STATUS cds_close(v_CONTEXT_t cds_context)
cds_deinit_ini_config(); cds_deinit_ini_config();
qdf_timer_module_deinit(); qdf_timer_module_deinit();
dispatcher_psoc_close();
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }

View File

@@ -108,6 +108,7 @@
#include "nan_api.h" #include "nan_api.h"
#include <wlan_hdd_napi.h> #include <wlan_hdd_napi.h>
#include "wlan_hdd_disa.h" #include "wlan_hdd_disa.h"
#include <dispatcher_init_deinit.h>
#ifdef MODULE #ifdef MODULE
#define WLAN_MODULE_NAME module_name(THIS_MODULE) #define WLAN_MODULE_NAME module_name(THIS_MODULE)
@@ -9121,6 +9122,8 @@ static int __hdd_module_init(void)
goto err_hdd_init; goto err_hdd_init;
} }
dispatcher_init();
qdf_wake_lock_create(&wlan_wake_lock, "wlan"); qdf_wake_lock_create(&wlan_wake_lock, "wlan");
hdd_set_conparam((uint32_t) con_mode); hdd_set_conparam((uint32_t) con_mode);
@@ -9137,9 +9140,12 @@ static int __hdd_module_init(void)
return 0; return 0;
out: out:
qdf_wake_lock_destroy(&wlan_wake_lock); qdf_wake_lock_destroy(&wlan_wake_lock);
dispatcher_deinit();
hdd_deinit(); hdd_deinit();
err_hdd_init: err_hdd_init:
pld_deinit(); pld_deinit();
return ret; return ret;
} }
@@ -9181,6 +9187,7 @@ static void __hdd_module_exit(void)
qdf_wake_lock_destroy(&wlan_wake_lock); qdf_wake_lock_destroy(&wlan_wake_lock);
dispatcher_deinit();
hdd_deinit(); hdd_deinit();
pld_deinit(); pld_deinit();