Loading drivers/net/wireless/cnss2/main.h +1 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,7 @@ struct cnss_plat_data { u8 powered_on; u8 use_fw_path_with_prefix; char firmware_name[MAX_FIRMWARE_NAME_LEN]; char fw_fallback_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 +70 −52 Original line number Diff line number Diff line Loading @@ -4590,6 +4590,69 @@ void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv, cnss_pr_dbg("FW name added with prefix: %s\n", prefix_name); } static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = pci_priv->plat_priv; struct mhi_controller *mhi_ctrl = pci_priv->mhi_ctrl; plat_priv->device_version.family_number = mhi_ctrl->family_number; plat_priv->device_version.device_number = mhi_ctrl->device_number; plat_priv->device_version.major_version = mhi_ctrl->major_version; plat_priv->device_version.minor_version = mhi_ctrl->minor_version; cnss_pr_dbg("Get device version info, family number: 0x%x, device number: 0x%x, major version: 0x%x, minor version: 0x%x\n", plat_priv->device_version.family_number, plat_priv->device_version.device_number, plat_priv->device_version.major_version, plat_priv->device_version.minor_version); switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: if (plat_priv->device_version.major_version < FW_V2_NUMBER) { cnss_pr_dbg("Device ID:version (0x%lx:%d) is not supported\n", pci_priv->device_id, plat_priv->device_version.major_version); return -EINVAL; } cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, FW_V2_FILE_NAME); break; case QCA6490_DEVICE_ID: switch (plat_priv->device_version.major_version) { case FW_V2_NUMBER: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, FW_V2_FILE_NAME); break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, DEFAULT_FW_FILE_NAME); break; } break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, DEFAULT_FW_FILE_NAME); break; } cnss_pr_dbg("FW name is %s, FW fallback name is %s\n", mhi_ctrl->fw_image, mhi_ctrl->fw_image_fallback); return 0; } static char *cnss_mhi_notify_status_to_str(enum MHI_CB status) { switch (status) { Loading @@ -4603,6 +4666,8 @@ static char *cnss_mhi_notify_status_to_str(enum MHI_CB status) return "FATAL_ERROR"; case MHI_CB_EE_MISSION_MODE: return "MISSION_MODE"; case MHI_CB_FW_FALLBACK_IMG: return "FW_FALLBACK"; default: return "UNKNOWN"; } Loading Loading @@ -4683,6 +4748,10 @@ static void cnss_mhi_notify_status(struct mhi_controller *mhi_ctrl, void *priv, cnss_pci_update_status(pci_priv, CNSS_FW_DOWN); cnss_reason = CNSS_REASON_RDDM; break; case MHI_CB_FW_FALLBACK_IMG: plat_priv->use_fw_path_with_prefix = false; cnss_pci_update_fw_name(pci_priv); return; default: cnss_pr_err("Unsupported MHI status cb reason: %d\n", reason); return; Loading Loading @@ -4720,58 +4789,6 @@ static int cnss_pci_get_mhi_msi(struct cnss_pci_data *pci_priv) return 0; } static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = pci_priv->plat_priv; struct mhi_controller *mhi_ctrl = pci_priv->mhi_ctrl; plat_priv->device_version.family_number = mhi_ctrl->family_number; plat_priv->device_version.device_number = mhi_ctrl->device_number; plat_priv->device_version.major_version = mhi_ctrl->major_version; plat_priv->device_version.minor_version = mhi_ctrl->minor_version; cnss_pr_dbg("Get device version info, family number: 0x%x, device number: 0x%x, major version: 0x%x, minor version: 0x%x\n", plat_priv->device_version.family_number, plat_priv->device_version.device_number, plat_priv->device_version.major_version, plat_priv->device_version.minor_version); switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: if (plat_priv->device_version.major_version < FW_V2_NUMBER) { cnss_pr_dbg("Device ID:version (0x%lx:%d) is not supported\n", pci_priv->device_id, plat_priv->device_version.major_version); return -EINVAL; } 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: 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; } cnss_pr_dbg("Firmware name is %s\n", mhi_ctrl->fw_image); return 0; } static int cnss_mhi_bw_scale(struct mhi_controller *mhi_ctrl, struct mhi_link_info *link_info) { Loading Loading @@ -4819,6 +4836,7 @@ static int cnss_pci_register_mhi(struct cnss_pci_data *pci_priv) mhi_ctrl->slot = PCI_SLOT(pci_dev->devfn); mhi_ctrl->fw_image = plat_priv->firmware_name; mhi_ctrl->fw_image_fallback = plat_priv->fw_fallback_name; mhi_ctrl->regs = pci_priv->bar; mhi_ctrl->len = pci_resource_len(pci_priv->pci_dev, PCI_BAR_NUM); Loading Loading
drivers/net/wireless/cnss2/main.h +1 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,7 @@ struct cnss_plat_data { u8 powered_on; u8 use_fw_path_with_prefix; char firmware_name[MAX_FIRMWARE_NAME_LEN]; char fw_fallback_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 +70 −52 Original line number Diff line number Diff line Loading @@ -4590,6 +4590,69 @@ void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv, cnss_pr_dbg("FW name added with prefix: %s\n", prefix_name); } static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = pci_priv->plat_priv; struct mhi_controller *mhi_ctrl = pci_priv->mhi_ctrl; plat_priv->device_version.family_number = mhi_ctrl->family_number; plat_priv->device_version.device_number = mhi_ctrl->device_number; plat_priv->device_version.major_version = mhi_ctrl->major_version; plat_priv->device_version.minor_version = mhi_ctrl->minor_version; cnss_pr_dbg("Get device version info, family number: 0x%x, device number: 0x%x, major version: 0x%x, minor version: 0x%x\n", plat_priv->device_version.family_number, plat_priv->device_version.device_number, plat_priv->device_version.major_version, plat_priv->device_version.minor_version); switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: if (plat_priv->device_version.major_version < FW_V2_NUMBER) { cnss_pr_dbg("Device ID:version (0x%lx:%d) is not supported\n", pci_priv->device_id, plat_priv->device_version.major_version); return -EINVAL; } cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, FW_V2_FILE_NAME); break; case QCA6490_DEVICE_ID: switch (plat_priv->device_version.major_version) { case FW_V2_NUMBER: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, FW_V2_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, FW_V2_FILE_NAME); break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, DEFAULT_FW_FILE_NAME); break; } break; default: cnss_pci_add_fw_prefix_name(pci_priv, plat_priv->firmware_name, DEFAULT_FW_FILE_NAME); snprintf(plat_priv->fw_fallback_name, MAX_FIRMWARE_NAME_LEN, DEFAULT_FW_FILE_NAME); break; } cnss_pr_dbg("FW name is %s, FW fallback name is %s\n", mhi_ctrl->fw_image, mhi_ctrl->fw_image_fallback); return 0; } static char *cnss_mhi_notify_status_to_str(enum MHI_CB status) { switch (status) { Loading @@ -4603,6 +4666,8 @@ static char *cnss_mhi_notify_status_to_str(enum MHI_CB status) return "FATAL_ERROR"; case MHI_CB_EE_MISSION_MODE: return "MISSION_MODE"; case MHI_CB_FW_FALLBACK_IMG: return "FW_FALLBACK"; default: return "UNKNOWN"; } Loading Loading @@ -4683,6 +4748,10 @@ static void cnss_mhi_notify_status(struct mhi_controller *mhi_ctrl, void *priv, cnss_pci_update_status(pci_priv, CNSS_FW_DOWN); cnss_reason = CNSS_REASON_RDDM; break; case MHI_CB_FW_FALLBACK_IMG: plat_priv->use_fw_path_with_prefix = false; cnss_pci_update_fw_name(pci_priv); return; default: cnss_pr_err("Unsupported MHI status cb reason: %d\n", reason); return; Loading Loading @@ -4720,58 +4789,6 @@ static int cnss_pci_get_mhi_msi(struct cnss_pci_data *pci_priv) return 0; } static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = pci_priv->plat_priv; struct mhi_controller *mhi_ctrl = pci_priv->mhi_ctrl; plat_priv->device_version.family_number = mhi_ctrl->family_number; plat_priv->device_version.device_number = mhi_ctrl->device_number; plat_priv->device_version.major_version = mhi_ctrl->major_version; plat_priv->device_version.minor_version = mhi_ctrl->minor_version; cnss_pr_dbg("Get device version info, family number: 0x%x, device number: 0x%x, major version: 0x%x, minor version: 0x%x\n", plat_priv->device_version.family_number, plat_priv->device_version.device_number, plat_priv->device_version.major_version, plat_priv->device_version.minor_version); switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: if (plat_priv->device_version.major_version < FW_V2_NUMBER) { cnss_pr_dbg("Device ID:version (0x%lx:%d) is not supported\n", pci_priv->device_id, plat_priv->device_version.major_version); return -EINVAL; } 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: 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; } cnss_pr_dbg("Firmware name is %s\n", mhi_ctrl->fw_image); return 0; } static int cnss_mhi_bw_scale(struct mhi_controller *mhi_ctrl, struct mhi_link_info *link_info) { Loading Loading @@ -4819,6 +4836,7 @@ static int cnss_pci_register_mhi(struct cnss_pci_data *pci_priv) mhi_ctrl->slot = PCI_SLOT(pci_dev->devfn); mhi_ctrl->fw_image = plat_priv->firmware_name; mhi_ctrl->fw_image_fallback = plat_priv->fw_fallback_name; mhi_ctrl->regs = pci_priv->bar; mhi_ctrl->len = pci_resource_len(pci_priv->pci_dev, PCI_BAR_NUM); Loading