soc: qcom: icnss2: Use device specific firmware versions

From branches: mona-r-oss lisa-r-oss taoyao-s-oss zijin-s-oss redwood-s-oss

Change-Id: I6962479d585a2fa04216bdb96f4207672ec7fd37
This commit is contained in:
Giovanni Ricca 2022-09-10 01:41:45 +05:30
parent 04ecdb7b1b
commit c65543d317
No known key found for this signature in database

View File

@ -21,6 +21,7 @@
#include <linux/thread_info.h>
#include <linux/firmware.h>
#include <linux/soc/qcom/qmi.h>
#include <linux/hwid.h>
#include <linux/platform_device.h>
#include <soc/qcom/icnss2.h>
#include <soc/qcom/service-locator.h>
@ -39,9 +40,23 @@
#define BDF_FILE_NAME_PREFIX "bdwlan"
#define ELF_BDF_FILE_NAME "bdwlan.elf"
#define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e"
#define ELF_BDF_FILE_NAME_K9D "bd_k9d.elf"
#define ELF_BDF_FILE_NAME_K9D_GLOBAL "bd_k9dgl.elf"
#define ELF_BDF_FILE_NAME_K9D_INDIA "bd_k9din.elf"
#define ELF_BDF_FILE_NAME_K9B "bd_k9b.elf"
#define ELF_BDF_FILE_NAME_K9E "bd_k9e.elf"
#define ELF_BDF_FILE_NAME_L9 "bd_l9.elf"
#define ELF_BDF_FILE_NAME_L9_GLOBAL "bd_l9gl.elf"
#define ELF_BDF_FILE_NAME_L9_INDIA "bd_l9in.elf"
#define ELF_BDF_FILE_NAME_M20_GLOBAL "bd_m20gl.elf"
#define ELF_BDF_FILE_NAME_M20_INDIA "bd_m20in.elf"
#define ELF_BDF_FILE_NAME_M20 "bd_m20.elf"
#define BIN_BDF_FILE_NAME "bdwlan.bin"
#define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b"
#define REGDB_FILE_NAME "regdb.bin"
#define REGDB_FILE_NAME_XIAOMI "regdb_xiaomi.bin"
#define DUMMY_BDF_FILE_NAME "bdwlan.dmy"
#define QDSS_TRACE_CONFIG_FILE "qdss_trace_config.cfg"
@ -774,11 +789,12 @@ int icnss_qmi_get_dms_mac(struct icnss_priv *priv)
if (resp.resp.error == DMS_MAC_NOT_PROVISIONED) {
icnss_pr_err("NV MAC address is not provisioned");
priv->dms.nv_mac_not_prov = 1;
ret = -resp.resp.result;
} else {
icnss_pr_err("QMI_DMS_GET_MAC_ADDRESS_REQ_V01 failed, result: %d, err: %d\n",
resp.resp.result, resp.resp.error);
ret = -EAGAIN;
}
ret = -resp.resp.result;
goto out;
}
if (!resp.mac_address_valid ||
@ -932,11 +948,47 @@ static int icnss_get_bdf_file_name(struct icnss_priv *priv,
{
char filename_tmp[ICNSS_MAX_FILE_NAME];
int ret = 0;
int hw_platform_ver = -1;
uint32_t hw_country_ver = 0;
hw_platform_ver = get_hw_version_platform();
hw_country_ver = get_hw_country_version();
switch (bdf_type) {
case ICNSS_BDF_ELF:
if (priv->board_id == 0xFF)
{
if (hw_platform_ver == HARDWARE_PROJECT_K9D) {
if ((uint32_t)CountryGlobal == hw_country_ver) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_K9D_GLOBAL);
} else if ((uint32_t)CountryIndia == hw_country_ver) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_K9D_INDIA);
} else {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_K9D);
}
} else if (hw_platform_ver == HARDWARE_PROJECT_K9B) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_K9B);
} else if (hw_platform_ver == HARDWARE_PROJECT_K9E) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_K9E);
} else if (hw_platform_ver == HARDWARE_PROJECT_L9) {
if ((uint32_t)CountryGlobal == hw_country_ver) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_L9_GLOBAL);
} else if ((uint32_t)CountryIndia == hw_country_ver) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_L9_INDIA);
} else {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_L9);
}
} else if (hw_platform_ver == HARDWARE_PROJECT_M20) {
if ((uint32_t)CountryGlobal == hw_country_ver) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_M20_GLOBAL);
} else if ((uint32_t)CountryIndia == hw_country_ver) {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_M20_INDIA);
} else {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_M20);
}
} else {
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME);
}
}
else if (priv->board_id < 0xFF)
snprintf(filename_tmp, filename_len,
ELF_BDF_FILE_NAME_PREFIX "%02x",
@ -961,7 +1013,7 @@ static int icnss_get_bdf_file_name(struct icnss_priv *priv,
priv->board_id & 0xFF);
break;
case ICNSS_BDF_REGDB:
snprintf(filename_tmp, filename_len, REGDB_FILE_NAME);
snprintf(filename_tmp, filename_len, REGDB_FILE_NAME_XIAOMI);
break;
case ICNSS_BDF_DUMMY:
icnss_pr_dbg("CNSS_BDF_DUMMY is set, sending dummy BDF\n");