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:

committed by
Prakash Dhavali

parent
9ef9458c04
commit
ec702b0afb
@@ -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);
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
* @memory_block - non-NULL reserved memory location
|
||||||
|
* @block_len - size of the dump to collect
|
||||||
*
|
*
|
||||||
* Function to perform core dump for the target
|
* Function to perform core dump for the target.
|
||||||
*
|
*
|
||||||
* \param: scn - ol_softc handler
|
* Return: int
|
||||||
* memory_block - non-NULL reserved memory location
|
*/
|
||||||
* block_len - size of the dump to collect
|
|
||||||
*
|
|
||||||
* \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));
|
||||||
|
}
|
||||||
|
@@ -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 */
|
||||||
|
@@ -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) */
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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 */
|
||||||
|
@@ -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 */
|
||||||
|
Reference in New Issue
Block a user