qcacld-3.0: Create ini config structures for each modules

Update ini configuration parameters for each modules in the driver

Change-Id: I00b1f2a9690060a15854ad84d819e9b883e95c41
CRs-Fixed: 967765
This commit is contained in:
Komal Seelam
2016-02-24 18:42:16 +05:30
committed by Prakash Dhavali
parent 9ef9458c04
commit ec702b0afb
8 changed files with 118 additions and 42 deletions

View File

@@ -41,6 +41,27 @@ struct ol_context;
CDF_STATUS ol_cds_init(cdf_device_t cdf_dev, void *hif_ctx); CDF_STATUS ol_cds_init(cdf_device_t cdf_dev, void *hif_ctx);
void ol_cds_free(void); void ol_cds_free(void);
/**
* struct hif_config_info - Place Holder for hif confiruation
* @enable_uart_print: UART Print
* @enable_self_recovery: Self Recovery
* @enable_fw_log: To Enable FW LOG
* @enable_lpass_support: LPASS support
* @enable_ramdump_collection: Ramdump Collection
*
* Structure for holding ini parameters.
*/
struct ol_config_info {
bool enable_uart_print;
bool enable_self_recovery;
bool enable_fw_log;
bool enable_lpass_support;
bool enable_ramdump_collection;
};
void ol_init_ini_config(struct ol_context *ol_ctx,
struct ol_config_info *cfg);
#ifdef HIF_PCI #ifdef HIF_PCI
void bmi_cleanup(struct ol_context *scn); void bmi_cleanup(struct ol_context *scn);
CDF_STATUS bmi_done(struct ol_context *ol_ctx); CDF_STATUS bmi_done(struct ol_context *ol_ctx);

View File

@@ -155,10 +155,11 @@ struct bmi_info {
*/ */
struct ol_context { struct ol_context {
struct bmi_info bmi; struct bmi_info bmi;
struct ol_config_info cfg_info;
uint8_t *cal_in_flash; uint8_t *cal_in_flash;
cdf_device_t cdf_dev; cdf_device_t cdf_dev;
struct ol_softc *scn;
cdf_work_t ramdump_work; cdf_work_t ramdump_work;
struct ol_softc *scn;
struct targetdef_t { struct targetdef_t {
struct targetdef_s *targetdef; struct targetdef_s *targetdef;
} tgt_def; } tgt_def;
@@ -187,4 +188,5 @@ CDF_STATUS bmi_done_local(struct ol_context *ol_ctx);
CDF_STATUS ol_download_firmware(struct ol_context *ol_ctx); CDF_STATUS ol_download_firmware(struct ol_context *ol_ctx);
CDF_STATUS ol_configure_target(struct ol_context *ol_ctx); CDF_STATUS ol_configure_target(struct ol_context *ol_ctx);
void ramdump_work_handler(void *arg); void ramdump_work_handler(void *arg);
struct ol_config_info *ol_get_ini_handle(struct ol_context *ol_ctx);
#endif #endif

View File

@@ -527,14 +527,14 @@ int ol_copy_ramdump(struct ol_softc *scn)
return ret; return ret;
} }
void ramdump_work_handler(void *ol_context) void ramdump_work_handler(void *data)
{ {
int ret; int ret;
uint32_t host_interest_address; uint32_t host_interest_address;
uint32_t dram_dump_values[4]; uint32_t dram_dump_values[4];
uint32_t target_type; uint32_t target_type;
struct hif_target_info *tgt_info; struct hif_target_info *tgt_info;
struct ol_context *ol_ctx = ol_context; struct ol_context *ol_ctx = data;
struct ol_softc *ramdump_scn = ol_ctx->scn; struct ol_softc *ramdump_scn = ol_ctx->scn;
if (!ramdump_scn) { if (!ramdump_scn) {
@@ -612,7 +612,7 @@ void ol_target_failure(void *instance, CDF_STATUS status)
struct ol_context *ol_ctx = instance; struct ol_context *ol_ctx = instance;
struct ol_softc *scn = ol_ctx->scn; struct ol_softc *scn = ol_ctx->scn;
tp_wma_handle wma = cds_get_context(CDF_MODULE_ID_WMA); tp_wma_handle wma = cds_get_context(CDF_MODULE_ID_WMA);
struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); struct ol_config_info *ini_cfg = ol_get_ini_handle(ol_ctx);
int ret; int ret;
ol_target_status target_status = ol_target_status target_status =
hif_get_target_status(scn); hif_get_target_status(scn);
@@ -672,7 +672,7 @@ CDF_STATUS ol_configure_target(struct ol_context *ol_ctx)
#endif #endif
struct ol_softc *scn = ol_ctx->scn; struct ol_softc *scn = ol_ctx->scn;
struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); struct hif_target_info *tgt_info = hif_get_target_info_handle(scn);
struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); struct ol_config_info *ini_cfg = ol_get_ini_handle(ol_ctx);
uint32_t target_type = tgt_info->target_type; uint32_t target_type = tgt_info->target_type;
/* Tell target which HTC version it is used */ /* Tell target which HTC version it is used */
@@ -813,7 +813,8 @@ CDF_STATUS ol_configure_target(struct ol_context *ol_ctx)
return CDF_STATUS_SUCCESS; return CDF_STATUS_SUCCESS;
} }
static int ol_check_dataset_patch(struct ol_softc *scn, uint32_t *address) static int
ol_check_dataset_patch(struct ol_softc *scn, uint32_t *address)
{ {
/* Check if patch file needed for this target type/version. */ /* Check if patch file needed for this target type/version. */
return 0; return 0;
@@ -1209,7 +1210,7 @@ CDF_STATUS ol_download_firmware(struct ol_context *ol_ctx)
int status = !EOK; int status = !EOK;
CDF_STATUS ret; CDF_STATUS ret;
struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); struct hif_target_info *tgt_info = hif_get_target_info_handle(scn);
struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); struct ol_config_info *ini_cfg = ol_get_ini_handle(ol_ctx);
uint32_t target_type = tgt_info->target_type; uint32_t target_type = tgt_info->target_type;
uint32_t target_version = tgt_info->target_version; uint32_t target_version = tgt_info->target_version;
struct bmi_info *bmi_ctx = GET_BMI_CONTEXT(ol_ctx); struct bmi_info *bmi_ctx = GET_BMI_CONTEXT(ol_ctx);
@@ -1310,8 +1311,8 @@ CDF_STATUS ol_download_firmware(struct ol_context *ol_ctx)
/* Apply the patches */ /* Apply the patches */
if (ol_check_dataset_patch(scn, &address)) { if (ol_check_dataset_patch(scn, &address)) {
if ((ol_transfer_bin_file(ol_ctx, ATH_PATCH_FILE, address, false)) if ((ol_transfer_bin_file(ol_ctx, ATH_PATCH_FILE, address,
!= EOK) { false)) != EOK) {
return -1; return -1;
} }
bmi_write_memory(hif_hia_item_address(target_type, bmi_write_memory(hif_hia_item_address(target_type,
@@ -1546,17 +1547,16 @@ void ol_dump_target_memory(struct ol_softc *scn, void *memory_block)
} }
} }
/**--------------------------------------------------------------------------- /**
* \brief ol_target_coredump * ol_target_coredump() - API to collect target ramdump
* * @inst - private context
* Function to perform core dump for the target * @memory_block - non-NULL reserved memory location
* * @block_len - size of the dump to collect
* \param: scn - ol_softc handler *
* memory_block - non-NULL reserved memory location * Function to perform core dump for the target.
* block_len - size of the dump to collect *
* * Return: int
* \return: None */
* --------------------------------------------------------------------------*/
static int ol_target_coredump(void *inst, void *memory_block, static int ol_target_coredump(void *inst, void *memory_block,
uint32_t block_len) uint32_t block_len)
{ {
@@ -1633,3 +1633,27 @@ static int ol_target_coredump(void *inst, void *memory_block,
} }
return ret; return ret;
} }
/**
* ol_get_ini_handle() - API to get Ol INI configuration
* @ol_ctx: OL Context
*
* Return: pointer to OL configuration
*/
struct ol_config_info *ol_get_ini_handle(struct ol_context *ol_ctx)
{
return &ol_ctx->cfg_info;
}
/**
* ol_init_ini_config() - API to initialize INI configuration
* @ol_ctx: OL Context
* @cfg: OL ini configuration
*
* Return: void
*/
void ol_init_ini_config(struct ol_context *ol_ctx,
struct ol_config_info *cfg)
{
cdf_mem_copy(&ol_ctx->cfg_info, cfg, sizeof(struct ol_config_info));
}

View File

@@ -172,8 +172,8 @@ CDF_STATUS cds_open(void)
tMacOpenParameters mac_openParms; tMacOpenParameters mac_openParms;
cdf_device_t cdf_ctx; cdf_device_t cdf_ctx;
HTC_INIT_INFO htcInfo; HTC_INIT_INFO htcInfo;
struct ol_softc *scn;
struct ol_context *ol_ctx; struct ol_context *ol_ctx;
struct ol_softc *scn;
void *HTCHandle; void *HTCHandle;
hdd_context_t *pHddCtx; hdd_context_t *pHddCtx;
@@ -255,7 +255,7 @@ CDF_STATUS cds_open(void)
goto err_sched_close; goto err_sched_close;
} }
hdd_update_hif_config(scn, pHddCtx); hdd_update_config(pHddCtx);
ol_ctx = cds_get_context(CDF_MODULE_ID_BMI); ol_ctx = cds_get_context(CDF_MODULE_ID_BMI);
/* Initialize BMI and Download firmware */ /* Initialize BMI and Download firmware */

View File

@@ -1525,5 +1525,5 @@ hdd_adapter_t *hdd_get_adapter_by_sme_session_id(hdd_context_t *hdd_ctx,
phy_ch_width hdd_map_nl_chan_width(enum nl80211_chan_width ch_width); phy_ch_width hdd_map_nl_chan_width(enum nl80211_chan_width ch_width);
uint8_t wlan_hdd_find_opclass(tHalHandle hal, uint8_t channel, uint8_t wlan_hdd_find_opclass(tHalHandle hal, uint8_t channel,
uint8_t bw_offset); uint8_t bw_offset);
void hdd_update_hif_config(void *scn, hdd_context_t *hdd_ctx); void hdd_update_config(hdd_context_t *hdd_ctx);
#endif /* end #if !defined(WLAN_HDD_MAIN_H) */ #endif /* end #if !defined(WLAN_HDD_MAIN_H) */

View File

@@ -309,7 +309,7 @@ static CDF_STATUS wlan_ftm_cds_open(v_CONTEXT_t p_cds_context,
goto err_htc_close; goto err_htc_close;
} }
#if defined(QCA_WIFI_FTM) #if defined(QCA_WIFI_FTM)
hdd_update_hif_config(pHifContext, hdd_ctx); hdd_update_config(hdd_ctx);
pHtcContext = cds_get_context(CDF_MODULE_ID_HTC); pHtcContext = cds_get_context(CDF_MODULE_ID_HTC);
if (!pHtcContext) { if (!pHtcContext) {

View File

@@ -105,6 +105,7 @@ extern int hdd_hostapd_stop(struct net_device *dev);
#include "cds_concurrency.h" #include "cds_concurrency.h"
#include "wlan_hdd_green_ap.h" #include "wlan_hdd_green_ap.h"
#include "platform_icnss.h" #include "platform_icnss.h"
#include "bmi.h"
#ifdef MODULE #ifdef MODULE
#define WLAN_MODULE_NAME module_name(THIS_MODULE) #define WLAN_MODULE_NAME module_name(THIS_MODULE)
@@ -6989,23 +6990,57 @@ static inline bool hdd_is_lpass_supported(hdd_context_t *hdd_ctx)
#endif #endif
/** /**
* hdd_update_hif_config() - Initialize HIF ini parameters * hdd_update_ol_config - API to update ol configuration parameters
* @scn: HIF Context * @hdd_ctx: HDD context
* @hdd_ctx: HDD Context
* *
* API is used to initialize all HIF configuration parameters
* Return: void * Return: void
*/ */
void hdd_update_hif_config(void *scn, hdd_context_t *hdd_ctx) static void hdd_update_ol_config(hdd_context_t *hdd_ctx)
{ {
struct hif_config_info *cfg = hif_get_ini_handle(scn); struct ol_config_info cfg;
struct ol_context *ol_ctx = cds_get_context(CDF_MODULE_ID_BMI);
cfg->enable_self_recovery = hdd_ctx->config->enableSelfRecovery; if (!ol_ctx)
cfg->enable_uart_print = hdd_ctx->config->enablefwprint; return;
cfg->enable_fw_log = hdd_ctx->config->enable_fw_log;
cfg->enable_ramdump_collection = cfg.enable_self_recovery = hdd_ctx->config->enableSelfRecovery;
hdd_ctx->config->is_ramdump_enabled; cfg.enable_uart_print = hdd_ctx->config->enablefwprint;
cfg->enable_lpass_support = hdd_is_lpass_supported(hdd_ctx); cfg.enable_fw_log = hdd_ctx->config->enable_fw_log;
cfg.enable_ramdump_collection = hdd_ctx->config->is_ramdump_enabled;
cfg.enable_lpass_support = hdd_is_lpass_supported(hdd_ctx);
ol_init_ini_config(ol_ctx, &cfg);
}
/**
* hdd_update_hif_config - API to update HIF configuration parameters
* @hdd_ctx: HDD Context
*
* Return: void
*/
static void hdd_update_hif_config(hdd_context_t *hdd_ctx)
{
struct ol_softc *scn = cds_get_context(CDF_MODULE_ID_HIF);
struct hif_config_info cfg;
if (!scn)
return;
cfg.enable_self_recovery = hdd_ctx->config->enableSelfRecovery;
hif_init_ini_config(scn, &cfg);
}
/**
* hdd_update_config() - Initialize driver per module ini parameters
* @hdd_ctx: HDD Context
*
* API is used to initialize all driver per module configuration parameters
* Return: void
*/
void hdd_update_config(hdd_context_t *hdd_ctx)
{
hdd_update_ol_config(hdd_ctx);
hdd_update_hif_config(hdd_ctx);
} }
/* Register the module init/exit functions */ /* Register the module init/exit functions */

View File

@@ -181,7 +181,6 @@ int epping_enable(struct device *parent_dev)
HTC_INIT_INFO htcInfo; HTC_INIT_INFO htcInfo;
struct ol_softc *scn; struct ol_softc *scn;
tSirMacAddr adapter_macAddr; tSirMacAddr adapter_macAddr;
struct hif_config_info *cfg;
struct hif_target_info *tgt_info; struct hif_target_info *tgt_info;
struct ol_context *ol_ctx; struct ol_context *ol_ctx;
@@ -216,11 +215,6 @@ int epping_enable(struct device *parent_dev)
return -1; return -1;
} }
cfg = hif_get_ini_handle(scn);
cfg->enable_uart_print = 0;
cfg->enable_fw_log = 0;
tgt_info = hif_get_target_info_handle(scn); tgt_info = hif_get_target_info_handle(scn);
/* store target type and target version info in hdd ctx */ /* store target type and target version info in hdd ctx */