Loading drivers/bus/mhi/core/mhi_boot.c +13 −9 Original line number Diff line number Diff line Loading @@ -464,20 +464,22 @@ static int mhi_fw_load_bhi(struct mhi_controller *mhi_cntrl, } void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *image_info) struct image_info **image_info) { int i; struct mhi_buf *mhi_buf = image_info->mhi_buf; struct mhi_buf *mhi_buf = (*image_info)->mhi_buf; if (!image_info) if (mhi_cntrl->img_pre_alloc) return; for (i = 0; i < image_info->entries; i++, mhi_buf++) for (i = 0; i < (*image_info)->entries; i++, mhi_buf++) mhi_free_contig_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf, mhi_buf->dma_addr); kfree(image_info->mhi_buf); kfree(image_info); kfree((*image_info)->mhi_buf); kfree(*image_info); *image_info = NULL; } int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, Loading @@ -491,6 +493,9 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *img_info; struct mhi_buf *mhi_buf; if (mhi_cntrl->img_pre_alloc) return 0; MHI_CNTRL_LOG("Allocating bytes:%zu seg_size:%zu total_seg:%u\n", alloc_size, seg_size, segments); Loading Loading @@ -662,7 +667,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) firmware->size); if (ret) { MHI_CNTRL_ERR("Error alloc size:%zu\n", firmware->size); goto fw_load_error_ready; goto fw_load_error_release; } MHI_CNTRL_LOG("Copying firmware image into vector table\n"); Loading Loading @@ -715,8 +720,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) return; fw_load_error_ready: mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); mhi_cntrl->fbc_image = NULL; mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image); fw_load_error_release: release_firmware(firmware); Loading drivers/bus/mhi/core/mhi_init.c +6 −12 Original line number Diff line number Diff line Loading @@ -1820,10 +1820,8 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) return 0; bhie_error: if (mhi_cntrl->rddm_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); mhi_cntrl->rddm_image = NULL; } if (mhi_cntrl->rddm_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image); error_dev_ctxt: mutex_unlock(&mhi_cntrl->pm_mutex); Loading @@ -1834,15 +1832,11 @@ EXPORT_SYMBOL(mhi_prepare_for_power_up); void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl) { if (mhi_cntrl->fbc_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); mhi_cntrl->fbc_image = NULL; } if (mhi_cntrl->fbc_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image); if (mhi_cntrl->rddm_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); mhi_cntrl->rddm_image = NULL; } if (mhi_cntrl->rddm_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image); mhi_deinit_dev_ctxt(mhi_cntrl); mhi_cntrl->pre_init = false; Loading drivers/bus/mhi/core/mhi_internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -941,7 +941,7 @@ void mhi_create_devices(struct mhi_controller *mhi_cntrl); int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info **image_info, size_t alloc_size); void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *image_info); struct image_info **image_info); int mhi_map_single_no_bb(struct mhi_controller *mhi_cntrl, struct mhi_buf_info *buf_info); Loading drivers/bus/mhi/core/mhi_pm.c +3 −4 Original line number Diff line number Diff line Loading @@ -1125,10 +1125,9 @@ void mhi_power_down(struct mhi_controller *mhi_cntrl, bool graceful) if (!mhi_cntrl->pre_init) { /* free all allocated resources */ if (mhi_cntrl->fbc_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); mhi_cntrl->fbc_image = NULL; } if (mhi_cntrl->fbc_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image); mhi_deinit_dev_ctxt(mhi_cntrl); } Loading drivers/net/wireless/cnss2/pci.c +5 −0 Original line number Diff line number Diff line Loading @@ -1270,6 +1270,11 @@ static int cnss_pci_set_mhi_state(struct cnss_pci_data *pci_priv, break; case CNSS_MHI_POWER_ON: ret = mhi_sync_power_up(pci_priv->mhi_ctrl); /* Only set img_pre_alloc when power up succeeds */ if (!ret && !pci_priv->mhi_ctrl->img_pre_alloc) { cnss_pr_dbg("Notify MHI to use already allocated images\n"); pci_priv->mhi_ctrl->img_pre_alloc = true; } break; case CNSS_MHI_POWER_OFF: mhi_power_down(pci_priv->mhi_ctrl, true); Loading Loading
drivers/bus/mhi/core/mhi_boot.c +13 −9 Original line number Diff line number Diff line Loading @@ -464,20 +464,22 @@ static int mhi_fw_load_bhi(struct mhi_controller *mhi_cntrl, } void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *image_info) struct image_info **image_info) { int i; struct mhi_buf *mhi_buf = image_info->mhi_buf; struct mhi_buf *mhi_buf = (*image_info)->mhi_buf; if (!image_info) if (mhi_cntrl->img_pre_alloc) return; for (i = 0; i < image_info->entries; i++, mhi_buf++) for (i = 0; i < (*image_info)->entries; i++, mhi_buf++) mhi_free_contig_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf, mhi_buf->dma_addr); kfree(image_info->mhi_buf); kfree(image_info); kfree((*image_info)->mhi_buf); kfree(*image_info); *image_info = NULL; } int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, Loading @@ -491,6 +493,9 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *img_info; struct mhi_buf *mhi_buf; if (mhi_cntrl->img_pre_alloc) return 0; MHI_CNTRL_LOG("Allocating bytes:%zu seg_size:%zu total_seg:%u\n", alloc_size, seg_size, segments); Loading Loading @@ -662,7 +667,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) firmware->size); if (ret) { MHI_CNTRL_ERR("Error alloc size:%zu\n", firmware->size); goto fw_load_error_ready; goto fw_load_error_release; } MHI_CNTRL_LOG("Copying firmware image into vector table\n"); Loading Loading @@ -715,8 +720,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) return; fw_load_error_ready: mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); mhi_cntrl->fbc_image = NULL; mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image); fw_load_error_release: release_firmware(firmware); Loading
drivers/bus/mhi/core/mhi_init.c +6 −12 Original line number Diff line number Diff line Loading @@ -1820,10 +1820,8 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) return 0; bhie_error: if (mhi_cntrl->rddm_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); mhi_cntrl->rddm_image = NULL; } if (mhi_cntrl->rddm_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image); error_dev_ctxt: mutex_unlock(&mhi_cntrl->pm_mutex); Loading @@ -1834,15 +1832,11 @@ EXPORT_SYMBOL(mhi_prepare_for_power_up); void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl) { if (mhi_cntrl->fbc_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); mhi_cntrl->fbc_image = NULL; } if (mhi_cntrl->fbc_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image); if (mhi_cntrl->rddm_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); mhi_cntrl->rddm_image = NULL; } if (mhi_cntrl->rddm_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image); mhi_deinit_dev_ctxt(mhi_cntrl); mhi_cntrl->pre_init = false; Loading
drivers/bus/mhi/core/mhi_internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -941,7 +941,7 @@ void mhi_create_devices(struct mhi_controller *mhi_cntrl); int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info **image_info, size_t alloc_size); void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *image_info); struct image_info **image_info); int mhi_map_single_no_bb(struct mhi_controller *mhi_cntrl, struct mhi_buf_info *buf_info); Loading
drivers/bus/mhi/core/mhi_pm.c +3 −4 Original line number Diff line number Diff line Loading @@ -1125,10 +1125,9 @@ void mhi_power_down(struct mhi_controller *mhi_cntrl, bool graceful) if (!mhi_cntrl->pre_init) { /* free all allocated resources */ if (mhi_cntrl->fbc_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); mhi_cntrl->fbc_image = NULL; } if (mhi_cntrl->fbc_image) mhi_free_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image); mhi_deinit_dev_ctxt(mhi_cntrl); } Loading
drivers/net/wireless/cnss2/pci.c +5 −0 Original line number Diff line number Diff line Loading @@ -1270,6 +1270,11 @@ static int cnss_pci_set_mhi_state(struct cnss_pci_data *pci_priv, break; case CNSS_MHI_POWER_ON: ret = mhi_sync_power_up(pci_priv->mhi_ctrl); /* Only set img_pre_alloc when power up succeeds */ if (!ret && !pci_priv->mhi_ctrl->img_pre_alloc) { cnss_pr_dbg("Notify MHI to use already allocated images\n"); pci_priv->mhi_ctrl->img_pre_alloc = true; } break; case CNSS_MHI_POWER_OFF: mhi_power_down(pci_priv->mhi_ctrl, true); Loading