qcacld-3.0: Refactor BMI members from ol_softc
Group BMI members and access bmi info from hif instead of
dereferencing hif context.
Change-Id: I9108ec1b719ec3e62dd19cc3341cbc1c868bf5de
CRs-Fixed: 967765
diff --git a/core/bmi/src/bmi.c b/core/bmi/src/bmi.c
index 6753f01..9c0a519 100644
--- a/core/bmi/src/bmi.c
+++ b/core/bmi/src/bmi.c
@@ -57,26 +57,30 @@
CDF_STATUS bmi_init(struct ol_softc *scn)
{
+ struct bmi_info *info;
+
if (!scn) {
BMI_ERR("Invalid scn Context");
bmi_assert(0);
return CDF_STATUS_NOT_INITIALIZED;
}
- scn->bmi_done = false;
- if (!scn->bmi_cmd_buff) {
- scn->bmi_cmd_buff = cdf_os_mem_alloc_consistent(scn->cdf_dev,
- MAX_BMI_CMDBUF_SZ, &scn->bmi_cmd_da, 0);
- if (!scn->bmi_cmd_buff) {
+ info = hif_get_bmi_ctx(scn);
+ info->bmi_done = false;
+
+ if (!info->bmi_cmd_buff) {
+ info->bmi_cmd_buff = cdf_os_mem_alloc_consistent(scn->cdf_dev,
+ MAX_BMI_CMDBUF_SZ, &info->bmi_cmd_da, 0);
+ if (!info->bmi_cmd_buff) {
BMI_ERR("No Memory for BMI Command");
return CDF_STATUS_E_NOMEM;
}
}
- if (!scn->bmi_rsp_buff) {
- scn->bmi_rsp_buff = cdf_os_mem_alloc_consistent(scn->cdf_dev,
- MAX_BMI_CMDBUF_SZ, &scn->bmi_rsp_da, 0);
- if (!scn->bmi_rsp_buff) {
+ if (!info->bmi_rsp_buff) {
+ info->bmi_rsp_buff = cdf_os_mem_alloc_consistent(scn->cdf_dev,
+ MAX_BMI_CMDBUF_SZ, &info->bmi_rsp_da, 0);
+ if (!info->bmi_rsp_buff) {
BMI_ERR("No Memory for BMI Response");
goto end;
}
@@ -84,25 +88,27 @@
return CDF_STATUS_SUCCESS;
end:
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_cmd_buff, scn->bmi_cmd_da, 0);
- scn->bmi_cmd_buff = NULL;
+ info->bmi_cmd_buff, info->bmi_cmd_da, 0);
+ info->bmi_cmd_buff = NULL;
return CDF_STATUS_E_NOMEM;
}
void bmi_cleanup(struct ol_softc *scn)
{
- if (scn->bmi_cmd_buff) {
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+
+ if (info->bmi_cmd_buff) {
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_cmd_buff, scn->bmi_cmd_da, 0);
- scn->bmi_cmd_buff = NULL;
- scn->bmi_cmd_da = 0;
+ info->bmi_cmd_buff, info->bmi_cmd_da, 0);
+ info->bmi_cmd_buff = NULL;
+ info->bmi_cmd_da = 0;
}
- if (scn->bmi_rsp_buff) {
+ if (info->bmi_rsp_buff) {
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_rsp_buff, scn->bmi_rsp_da, 0);
- scn->bmi_rsp_buff = NULL;
- scn->bmi_rsp_da = 0;
+ info->bmi_rsp_buff, info->bmi_rsp_da, 0);
+ info->bmi_rsp_buff = NULL;
+ info->bmi_rsp_da = 0;
}
}
@@ -126,11 +132,12 @@
struct ol_softc *scn)
{
int status = 0;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
uint32_t cid, length;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("BMI Phase is Already Done");
return CDF_STATUS_E_PERM;
}
@@ -208,14 +215,15 @@
uint32_t cid;
int status;
uint32_t offset, param_len;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
bmi_assert(BMI_COMMAND_FITS(sizeof(cid) + sizeof(address)));
cdf_mem_set(bmi_cmd_buff, 0, sizeof(cid) + sizeof(address));
cdf_mem_set(bmi_rsp_buff, 0, sizeof(cid) + sizeof(address));
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_DBG("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -249,12 +257,13 @@
uint32_t cid;
int status;
uint32_t offset;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
uint32_t size = sizeof(cid) + sizeof(address) + sizeof(param);
bmi_assert(BMI_COMMAND_FITS(size));
cdf_mem_set(bmi_cmd_buff, 0, size);
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_DBG("Command disallowed");
return CDF_STATUS_E_FAILURE;
}
@@ -290,12 +299,13 @@
uint32_t offset;
uint32_t remaining, txlen;
const uint32_t header = sizeof(cid) + sizeof(length);
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
bmi_assert(BMI_COMMAND_FITS(BMI_DATASZ_MAX + header));
cdf_mem_set(bmi_cmd_buff, 0, BMI_DATASZ_MAX + header);
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -342,13 +352,14 @@
const uint32_t header = sizeof(cid) + sizeof(address) + sizeof(length);
uint8_t aligned_buf[BMI_DATASZ_MAX + 4];
uint8_t *src;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
uint32_t remaining, txlen;
bmi_assert(BMI_COMMAND_FITS(BMI_DATASZ_MAX + header));
cdf_mem_set(bmi_cmd_buff, 0, BMI_DATASZ_MAX + header);
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -402,12 +413,13 @@
uint32_t cid;
int status;
uint32_t offset;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
bmi_assert(BMI_COMMAND_FITS(sizeof(cid) + sizeof(address)));
cdf_mem_set(bmi_cmd_buff, 0, sizeof(cid) + sizeof(address));
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_DBG("Command disallowed");
return CDF_STATUS_E_PERM;
}
diff --git a/core/bmi/src/bmi_1.c b/core/bmi/src/bmi_1.c
index e633030..239f9d3 100644
--- a/core/bmi/src/bmi_1.c
+++ b/core/bmi/src/bmi_1.c
@@ -37,16 +37,17 @@
int status;
uint32_t offset;
uint32_t remaining, rxlen;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
uint32_t align;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_DBG("command disallowed");
return CDF_STATUS_E_PERM;
}
- if (!scn->bmi_cmd_buff || !scn->bmi_rsp_buff) {
+ if (!info->bmi_cmd_buff || !info->bmi_rsp_buff) {
BMI_ERR("BMI Initialization hasn't done");
return CDF_STATUS_NOT_INITIALIZED;
}
@@ -111,9 +112,10 @@
const uint32_t header = sizeof(cid) + sizeof(address) + sizeof(length);
uint8_t aligned_buffer[BMI_DATASZ_MAX];
uint8_t *src;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -178,11 +180,12 @@
int status;
uint32_t offset;
uint32_t param_len;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
uint32_t size = sizeof(cid) + sizeof(address) + sizeof(param);
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -272,6 +275,7 @@
{
int status;
uint32_t cid;
+ struct bmi_info *info;
if (!scn) {
BMI_ERR("Invalid scn context");
@@ -279,43 +283,44 @@
return CDF_STATUS_NOT_INITIALIZED;
}
- if (scn->bmi_done) {
+ info = hif_get_bmi_ctx(scn);
+ if (info->bmi_done) {
BMI_DBG("bmi_done_local skipped");
return CDF_STATUS_E_PERM;
}
BMI_DBG("BMI Done: Enter (device: 0x%p)", scn);
- scn->bmi_done = true;
+ info->bmi_done = true;
cid = BMI_DONE;
- if (!scn->bmi_cmd_buff) {
+ if (!info->bmi_cmd_buff) {
BMI_ERR("Invalid scn BMICmdBuff");
bmi_assert(0);
return CDF_STATUS_NOT_INITIALIZED;
}
- cdf_mem_copy(scn->bmi_cmd_buff, &cid, sizeof(cid));
+ cdf_mem_copy(info->bmi_cmd_buff, &cid, sizeof(cid));
- status = hif_exchange_bmi_msg(scn, scn->bmi_cmd_buff,
+ status = hif_exchange_bmi_msg(scn, info->bmi_cmd_buff,
sizeof(cid), NULL, NULL, 0);
if (status) {
BMI_ERR("Failed to write to the device; status:%d", status);
return CDF_STATUS_E_FAILURE;
}
- if (scn->bmi_cmd_buff) {
+ if (info->bmi_cmd_buff) {
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_cmd_buff, scn->bmi_cmd_da, 0);
- scn->bmi_cmd_buff = NULL;
- scn->bmi_cmd_da = 0;
+ info->bmi_cmd_buff, info->bmi_cmd_da, 0);
+ info->bmi_cmd_buff = NULL;
+ info->bmi_cmd_da = 0;
}
- if (scn->bmi_rsp_buff) {
+ if (info->bmi_rsp_buff) {
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_rsp_buff, scn->bmi_rsp_da, 0);
- scn->bmi_rsp_buff = NULL;
- scn->bmi_rsp_da = 0;
+ info->bmi_rsp_buff, info->bmi_rsp_da, 0);
+ info->bmi_rsp_buff = NULL;
+ info->bmi_rsp_da = 0;
}
return CDF_STATUS_SUCCESS;
diff --git a/core/bmi/src/bmi_2.c b/core/bmi/src/bmi_2.c
index 2391222..b37da7e 100644
--- a/core/bmi/src/bmi_2.c
+++ b/core/bmi/src/bmi_2.c
@@ -39,10 +39,11 @@
int status;
uint32_t length;
uint8_t ret = 0;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed: BMI DONE ALREADY");
return CDF_STATUS_E_PERM;
}
@@ -79,10 +80,11 @@
int status;
uint32_t length;
uint8_t ret = 0;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -110,18 +112,18 @@
return CDF_STATUS_E_FAILURE;
}
- if (scn->bmi_cmd_buff) {
+ if (info->bmi_cmd_buff) {
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_cmd_buff, scn->bmi_cmd_da, 0);
- scn->bmi_cmd_buff = NULL;
- scn->bmi_cmd_da = 0;
+ info->bmi_cmd_buff, info->bmi_cmd_da, 0);
+ info->bmi_cmd_buff = NULL;
+ info->bmi_cmd_da = 0;
}
- if (scn->bmi_rsp_buff) {
+ if (info->bmi_rsp_buff) {
cdf_os_mem_free_consistent(scn->cdf_dev, MAX_BMI_CMDBUF_SZ,
- scn->bmi_rsp_buff, scn->bmi_rsp_da, 0);
- scn->bmi_rsp_buff = NULL;
- scn->bmi_rsp_da = 0;
+ info->bmi_rsp_buff, info->bmi_rsp_da, 0);
+ info->bmi_rsp_buff = NULL;
+ info->bmi_rsp_da = 0;
}
return CDF_STATUS_SUCCESS;
@@ -142,10 +144,11 @@
const uint32_t header = sizeof(cid) + sizeof(address) + sizeof(length);
uint8_t aligned_buffer[BMI_DATASZ_MAX];
uint8_t *src;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -211,12 +214,13 @@
uint8_t ret = 0;
uint32_t offset;
uint32_t remaining, rxlen, rsp_len, total_len;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
/* note we reuse the same buffer to receive on */
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
uint32_t size = sizeof(cid) + sizeof(address) + sizeof(length);
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -282,10 +286,11 @@
int status;
uint32_t length;
uint8_t ret = 0;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -326,11 +331,12 @@
uint32_t offset;
uint32_t length;
uint8_t ret = 0;
- uint8_t *bmi_cmd_buff = scn->bmi_cmd_buff;
- uint8_t *bmi_rsp_buff = scn->bmi_rsp_buff;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
+ uint8_t *bmi_cmd_buff = info->bmi_cmd_buff;
+ uint8_t *bmi_rsp_buff = info->bmi_rsp_buff;
uint32_t addr_h, addr_l;
- if (scn->bmi_done) {
+ if (info->bmi_done) {
BMI_ERR("Command disallowed");
return CDF_STATUS_E_PERM;
}
@@ -383,6 +389,7 @@
struct image_desc_info image_desc_info;
CDF_STATUS status;
struct hif_target_info *tgt_info;
+ struct bmi_info *info = hif_get_bmi_ctx(scn);
if (!scn) {
BMI_ERR("Invalid scn context");
@@ -392,7 +399,7 @@
tgt_info = hif_get_target_info_handle(scn);
- if (scn->bmi_cmd_buff == NULL || scn->bmi_rsp_buff == NULL) {
+ if (info->bmi_cmd_buff == NULL || info->bmi_rsp_buff == NULL) {
BMI_ERR("bmi_open failed!");
return CDF_STATUS_NOT_INITIALIZED;
}
diff --git a/core/bmi/src/ol_fw.c b/core/bmi/src/ol_fw.c
index 93d92a0..d8b5a70 100644
--- a/core/bmi/src/ol_fw.c
+++ b/core/bmi/src/ol_fw.c
@@ -148,6 +148,7 @@
#endif
struct hif_target_info *tgt_info = hif_get_target_info_handle(scn);
uint32_t target_type = tgt_info->target_type;
+ struct bmi_info *bmi_ctx = hif_get_bmi_ctx(scn);
switch (file) {
default:
@@ -155,7 +156,7 @@
return -1;
case ATH_OTP_FILE:
#if defined(CONFIG_CNSS)
- filename = scn->fw_files.otp_data;
+ filename = bmi_ctx->fw_files.otp_data;
#else
filename = QCA_OTP_FILE;
#endif
@@ -166,7 +167,7 @@
case ATH_FIRMWARE_FILE:
if (WLAN_IS_EPPING_ENABLED(cds_get_conparam())) {
#if defined(CONFIG_CNSS)
- filename = scn->fw_files.epping_file;
+ filename = bmi_ctx->fw_files.epping_file;
#else
filename = QCA_FIRMWARE_EPPING_FILE;
#endif
@@ -177,7 +178,7 @@
#ifdef QCA_WIFI_FTM
if (cds_get_conparam() == CDF_GLOBAL_FTM_MODE) {
#if defined(CONFIG_CNSS)
- filename = scn->fw_files.utf_file;
+ filename = bmi_ctx->fw_files.utf_file;
#else
filename = QCA_UTF_FIRMWARE_FILE;
#endif
@@ -190,7 +191,7 @@
}
#endif
#if defined(CONFIG_CNSS)
- filename = scn->fw_files.image_file;
+ filename = bmi_ctx->fw_files.image_file;
#else
filename = QCA_FIRMWARE_FILE;
#endif
@@ -205,7 +206,7 @@
#ifdef QCA_WIFI_FTM
if (cds_get_conparam() == CDF_GLOBAL_FTM_MODE) {
#if defined(CONFIG_CNSS)
- filename = scn->fw_files.utf_board_data;
+ filename = bmi_ctx->fw_files.utf_board_data;
#else
filename = QCA_BOARD_DATA_FILE;
#endif
@@ -218,7 +219,7 @@
}
#endif /* QCA_WIFI_FTM */
#if defined(CONFIG_CNSS)
- filename = scn->fw_files.board_data;
+ filename = bmi_ctx->fw_files.board_data;
#else
filename = QCA_BOARD_DATA_FILE;
#endif
@@ -256,8 +257,8 @@
#if defined(QCA_WIFI_FTM) && defined(CONFIG_CNSS)
/* Try default board data file if FTM specific
* board data file is not present. */
- if (filename == scn->fw_files.utf_board_data) {
- filename = scn->fw_files.board_data;
+ if (filename == bmi_ctx->fw_files.utf_board_data) {
+ filename = bmi_ctx->fw_files.board_data;
BMI_INFO("%s: Trying to load default %s",
__func__, filename);
if (request_firmware(&fw_entry, filename,
@@ -1211,9 +1212,10 @@
struct hif_config_info *ini_cfg = hif_get_ini_handle(scn);
uint32_t target_type = tgt_info->target_type;
uint32_t target_version = tgt_info->target_version;
+ struct bmi_info *bmi_ctx = hif_get_bmi_ctx(scn);
#ifdef CONFIG_CNSS
- if (0 != cnss_get_fw_files_for_target(&scn->fw_files,
+ if (0 != cnss_get_fw_files_for_target(&bmi_ctx->fw_files,
target_type,
target_version)) {
BMI_ERR("%s: No FW files from CNSS driver", __func__);