Loading drivers/net/wireless/cnss2/bus.c +17 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,23 @@ void cnss_bus_deinit(struct cnss_plat_data *plat_priv) } } void cnss_bus_add_fw_prefix_name(struct cnss_plat_data *plat_priv, char *prefix_name, char *name) { if (!plat_priv) return; switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_add_fw_prefix_name(plat_priv->bus_priv, prefix_name, name); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); return; } } int cnss_bus_load_m3(struct cnss_plat_data *plat_priv) { if (!plat_priv) Loading drivers/net/wireless/cnss2/bus.h +2 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ void *cnss_bus_dev_to_bus_priv(struct device *dev); struct cnss_plat_data *cnss_bus_dev_to_plat_priv(struct device *dev); int cnss_bus_init(struct cnss_plat_data *plat_priv); void cnss_bus_deinit(struct cnss_plat_data *plat_priv); void cnss_bus_add_fw_prefix_name(struct cnss_plat_data *plat_priv, char *prefix_name, char *name); int cnss_bus_load_m3(struct cnss_plat_data *plat_priv); int cnss_bus_alloc_fw_mem(struct cnss_plat_data *plat_priv); int cnss_bus_alloc_qdss_mem(struct cnss_plat_data *plat_priv); Loading drivers/net/wireless/cnss2/main.c +8 −0 Original line number Diff line number Diff line Loading @@ -2434,6 +2434,12 @@ static void cnss_get_wlaon_pwr_ctrl_info(struct cnss_plat_data *plat_priv) plat_priv->set_wlaon_pwr_ctrl); } static bool cnss_use_fw_path_with_prefix(struct cnss_plat_data *plat_priv) { return of_property_read_bool(plat_priv->plat_dev->dev.of_node, "qcom,converged-dt"); } static const struct platform_device_id cnss_platform_id_table[] = { { .name = "qca6174", .driver_data = QCA6174_DEVICE_ID, }, { .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, }, Loading Loading @@ -2499,6 +2505,8 @@ static int cnss_probe(struct platform_device *plat_dev) plat_priv->device_id = device_id->driver_data; plat_priv->bus_type = cnss_get_bus_type(plat_priv->device_id); plat_priv->use_nv_mac = cnss_use_nv_mac(plat_priv); plat_priv->use_fw_path_with_prefix = cnss_use_fw_path_with_prefix(plat_priv); cnss_set_plat_priv(plat_dev, plat_priv); platform_set_drvdata(plat_dev, plat_priv); INIT_LIST_HEAD(&plat_priv->vreg_list); Loading drivers/net/wireless/cnss2/main.h +3 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ #define TIME_CLOCK_FREQ_HZ 19200000 #define CNSS_RAMDUMP_MAGIC 0x574C414E #define CNSS_RAMDUMP_VERSION 0 #define MAX_FIRMWARE_NAME_LEN 20 #define CNSS_EVENT_SYNC BIT(0) #define CNSS_EVENT_UNINTERRUPTIBLE BIT(1) Loading Loading @@ -401,7 +402,8 @@ struct cnss_plat_data { u8 *diag_reg_read_buf; u8 cal_done; u8 powered_on; char firmware_name[13]; u8 use_fw_path_with_prefix; char firmware_name[MAX_FIRMWARE_NAME_LEN]; struct completion rddm_complete; struct completion recovery_complete; struct cnss_control_params ctrl_params; Loading drivers/net/wireless/cnss2/pci.c +47 −12 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ #define MHI_NODE_NAME "qcom,mhi" #define MHI_MSI_NAME "MHI" #define MAX_M3_FILE_NAME_LENGTH 13 #define QCA6390_PATH_PREFIX "qca6390/" #define QCA6490_PATH_PREFIX "qca6490/" #define DEFAULT_M3_FILE_NAME "m3.bin" #define DEFAULT_FW_FILE_NAME "amss.bin" #define FW_V2_FILE_NAME "amss20.bin" Loading Loading @@ -3325,12 +3326,13 @@ int cnss_pci_load_m3(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = pci_priv->plat_priv; struct cnss_fw_mem *m3_mem = &plat_priv->m3_mem; char filename[MAX_M3_FILE_NAME_LENGTH]; char filename[MAX_FIRMWARE_NAME_LEN]; const struct firmware *fw_entry; int ret = 0; if (!m3_mem->va && !m3_mem->size) { snprintf(filename, sizeof(filename), DEFAULT_M3_FILE_NAME); cnss_pci_add_fw_prefix_name(pci_priv, filename, DEFAULT_M3_FILE_NAME); ret = request_firmware(&fw_entry, filename, &pci_priv->pci_dev->dev); Loading Loading @@ -4282,6 +4284,38 @@ static void cnss_mhi_pm_runtime_put_noidle(struct mhi_controller *mhi_ctrl, cnss_pci_pm_runtime_put_noidle(pci_priv); } void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv, char *prefix_name, char *name) { struct cnss_plat_data *plat_priv; if (!pci_priv) return; plat_priv = pci_priv->plat_priv; if (!plat_priv->use_fw_path_with_prefix) { scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name); return; } switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, QCA6390_PATH_PREFIX "%s", name); break; case QCA6490_DEVICE_ID: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, QCA6490_PATH_PREFIX "%s", name); break; default: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name); break; } cnss_pr_dbg("FW name added with prefix: %s\n", prefix_name); } static char *cnss_mhi_notify_status_to_str(enum MHI_CB status) { switch (status) { Loading Loading @@ -4434,23 +4468,26 @@ static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) plat_priv->device_version.major_version); return -EINVAL; } scnprintf(plat_priv->firmware_name, sizeof(plat_priv->firmware_name), FW_V2_FILE_NAME); mhi_ctrl->fw_image = plat_priv->firmware_name; cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); break; case QCA6490_DEVICE_ID: switch (plat_priv->device_version.major_version) { case FW_V2_NUMBER: scnprintf(plat_priv->firmware_name, sizeof(plat_priv->firmware_name), cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); break; } break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); break; } Loading Loading @@ -4642,8 +4679,6 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, cnss_set_pci_priv(pci_dev, pci_priv); plat_priv->device_id = pci_dev->device; plat_priv->bus_priv = pci_priv; snprintf(plat_priv->firmware_name, sizeof(plat_priv->firmware_name), DEFAULT_FW_FILE_NAME); mutex_init(&pci_priv->bus_lock); ret = of_reserved_mem_device_init(dev); Loading Loading
drivers/net/wireless/cnss2/bus.c +17 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,23 @@ void cnss_bus_deinit(struct cnss_plat_data *plat_priv) } } void cnss_bus_add_fw_prefix_name(struct cnss_plat_data *plat_priv, char *prefix_name, char *name) { if (!plat_priv) return; switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_add_fw_prefix_name(plat_priv->bus_priv, prefix_name, name); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); return; } } int cnss_bus_load_m3(struct cnss_plat_data *plat_priv) { if (!plat_priv) Loading
drivers/net/wireless/cnss2/bus.h +2 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ void *cnss_bus_dev_to_bus_priv(struct device *dev); struct cnss_plat_data *cnss_bus_dev_to_plat_priv(struct device *dev); int cnss_bus_init(struct cnss_plat_data *plat_priv); void cnss_bus_deinit(struct cnss_plat_data *plat_priv); void cnss_bus_add_fw_prefix_name(struct cnss_plat_data *plat_priv, char *prefix_name, char *name); int cnss_bus_load_m3(struct cnss_plat_data *plat_priv); int cnss_bus_alloc_fw_mem(struct cnss_plat_data *plat_priv); int cnss_bus_alloc_qdss_mem(struct cnss_plat_data *plat_priv); Loading
drivers/net/wireless/cnss2/main.c +8 −0 Original line number Diff line number Diff line Loading @@ -2434,6 +2434,12 @@ static void cnss_get_wlaon_pwr_ctrl_info(struct cnss_plat_data *plat_priv) plat_priv->set_wlaon_pwr_ctrl); } static bool cnss_use_fw_path_with_prefix(struct cnss_plat_data *plat_priv) { return of_property_read_bool(plat_priv->plat_dev->dev.of_node, "qcom,converged-dt"); } static const struct platform_device_id cnss_platform_id_table[] = { { .name = "qca6174", .driver_data = QCA6174_DEVICE_ID, }, { .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, }, Loading Loading @@ -2499,6 +2505,8 @@ static int cnss_probe(struct platform_device *plat_dev) plat_priv->device_id = device_id->driver_data; plat_priv->bus_type = cnss_get_bus_type(plat_priv->device_id); plat_priv->use_nv_mac = cnss_use_nv_mac(plat_priv); plat_priv->use_fw_path_with_prefix = cnss_use_fw_path_with_prefix(plat_priv); cnss_set_plat_priv(plat_dev, plat_priv); platform_set_drvdata(plat_dev, plat_priv); INIT_LIST_HEAD(&plat_priv->vreg_list); Loading
drivers/net/wireless/cnss2/main.h +3 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ #define TIME_CLOCK_FREQ_HZ 19200000 #define CNSS_RAMDUMP_MAGIC 0x574C414E #define CNSS_RAMDUMP_VERSION 0 #define MAX_FIRMWARE_NAME_LEN 20 #define CNSS_EVENT_SYNC BIT(0) #define CNSS_EVENT_UNINTERRUPTIBLE BIT(1) Loading Loading @@ -401,7 +402,8 @@ struct cnss_plat_data { u8 *diag_reg_read_buf; u8 cal_done; u8 powered_on; char firmware_name[13]; u8 use_fw_path_with_prefix; char firmware_name[MAX_FIRMWARE_NAME_LEN]; struct completion rddm_complete; struct completion recovery_complete; struct cnss_control_params ctrl_params; Loading
drivers/net/wireless/cnss2/pci.c +47 −12 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ #define MHI_NODE_NAME "qcom,mhi" #define MHI_MSI_NAME "MHI" #define MAX_M3_FILE_NAME_LENGTH 13 #define QCA6390_PATH_PREFIX "qca6390/" #define QCA6490_PATH_PREFIX "qca6490/" #define DEFAULT_M3_FILE_NAME "m3.bin" #define DEFAULT_FW_FILE_NAME "amss.bin" #define FW_V2_FILE_NAME "amss20.bin" Loading Loading @@ -3325,12 +3326,13 @@ int cnss_pci_load_m3(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = pci_priv->plat_priv; struct cnss_fw_mem *m3_mem = &plat_priv->m3_mem; char filename[MAX_M3_FILE_NAME_LENGTH]; char filename[MAX_FIRMWARE_NAME_LEN]; const struct firmware *fw_entry; int ret = 0; if (!m3_mem->va && !m3_mem->size) { snprintf(filename, sizeof(filename), DEFAULT_M3_FILE_NAME); cnss_pci_add_fw_prefix_name(pci_priv, filename, DEFAULT_M3_FILE_NAME); ret = request_firmware(&fw_entry, filename, &pci_priv->pci_dev->dev); Loading Loading @@ -4282,6 +4284,38 @@ static void cnss_mhi_pm_runtime_put_noidle(struct mhi_controller *mhi_ctrl, cnss_pci_pm_runtime_put_noidle(pci_priv); } void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv, char *prefix_name, char *name) { struct cnss_plat_data *plat_priv; if (!pci_priv) return; plat_priv = pci_priv->plat_priv; if (!plat_priv->use_fw_path_with_prefix) { scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name); return; } switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, QCA6390_PATH_PREFIX "%s", name); break; case QCA6490_DEVICE_ID: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, QCA6490_PATH_PREFIX "%s", name); break; default: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name); break; } cnss_pr_dbg("FW name added with prefix: %s\n", prefix_name); } static char *cnss_mhi_notify_status_to_str(enum MHI_CB status) { switch (status) { Loading Loading @@ -4434,23 +4468,26 @@ static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) plat_priv->device_version.major_version); return -EINVAL; } scnprintf(plat_priv->firmware_name, sizeof(plat_priv->firmware_name), FW_V2_FILE_NAME); mhi_ctrl->fw_image = plat_priv->firmware_name; cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); break; case QCA6490_DEVICE_ID: switch (plat_priv->device_version.major_version) { case FW_V2_NUMBER: scnprintf(plat_priv->firmware_name, sizeof(plat_priv->firmware_name), cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); break; } break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); break; } Loading Loading @@ -4642,8 +4679,6 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, cnss_set_pci_priv(pci_dev, pci_priv); plat_priv->device_id = pci_dev->device; plat_priv->bus_priv = pci_priv; snprintf(plat_priv->firmware_name, sizeof(plat_priv->firmware_name), DEFAULT_FW_FILE_NAME); mutex_init(&pci_priv->bus_lock); ret = of_reserved_mem_device_init(dev); Loading