diff --git a/drivers/bus/mhi/controllers/mhi_arch_qcom.c b/drivers/bus/mhi/controllers/mhi_arch_qcom.c index eda2f7c6a9ae..d3faadbc1bc4 100644 --- a/drivers/bus/mhi/controllers/mhi_arch_qcom.c +++ b/drivers/bus/mhi/controllers/mhi_arch_qcom.c @@ -28,7 +28,6 @@ struct arch_info { u32 icc_peak_bw_len; struct msm_pcie_register_event pcie_reg_event; struct pci_saved_state *pcie_state; - async_cookie_t cookie; void *boot_ipc_log; void *tsync_ipc_log; struct mhi_device *boot_dev; @@ -172,7 +171,7 @@ static int mhi_arch_esoc_ops_power_on(void *priv, unsigned int flags) return 0; } - MHI_LOG("Enter\n"); + MHI_LOG("Enter: mdm_crashed:%d\n", flags & ESOC_HOOK_MDM_CRASH); /* reset rpm state */ pm_runtime_set_active(&pci_dev->dev); @@ -193,7 +192,6 @@ static int mhi_arch_esoc_ops_power_on(void *priv, unsigned int flags) return ret; } - mhi_dev->mdm_state = (flags & ESOC_HOOK_MDM_CRASH); return mhi_pci_probe(pci_dev, NULL); } @@ -254,9 +252,6 @@ static void mhi_arch_esoc_ops_power_off(void *priv, unsigned int flags) mhi_deinit_pci_dev(mhi_cntrl); mhi_arch_link_off(mhi_cntrl); - /* wait for boot monitor to exit */ - async_synchronize_cookie(arch_info->cookie + 1); - mhi_arch_pcie_deinit(mhi_cntrl); mhi_cntrl->dev = NULL; @@ -315,50 +310,21 @@ static void mhi_bl_remove(struct mhi_device *mhi_device) HLOG "Received Remove notif.\n"); } -static void mhi_boot_monitor(void *data, async_cookie_t cookie) -{ - struct mhi_controller *mhi_cntrl = data; - struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); - struct arch_info *arch_info = mhi_dev->arch_info; - /* 15 sec timeout for booting device */ - const u32 timeout = msecs_to_jiffies(15000); - - /* wait for device to enter boot stage */ - wait_event_timeout(mhi_cntrl->state_event, mhi_cntrl->ee == MHI_EE_AMSS - || mhi_cntrl->ee == MHI_EE_DISABLE_TRANSITION - || mhi_cntrl->power_down, - timeout); - - ipc_log_string(arch_info->boot_ipc_log, HLOG "Device current ee = %s\n", - TO_MHI_EXEC_STR(mhi_cntrl->ee)); - - /* if we successfully booted to amss, enable runtime pm */ - if (mhi_cntrl->ee == MHI_EE_AMSS) - if (!mhi_dev->drv_supported || arch_info->drv_connected) - pm_runtime_allow(&mhi_dev->pci_dev->dev); -} - -int mhi_arch_power_up(struct mhi_controller *mhi_cntrl) -{ - struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); - struct arch_info *arch_info = mhi_dev->arch_info; - - /* start a boot monitor if not in crashed state */ - if (!mhi_dev->mdm_state) - arch_info->cookie = async_schedule(mhi_boot_monitor, mhi_cntrl); - - return 0; -} - void mhi_arch_mission_mode_enter(struct mhi_controller *mhi_cntrl) { struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); struct arch_info *arch_info = mhi_dev->arch_info; struct mhi_device *boot_dev = arch_info->boot_dev; + ipc_log_string(arch_info->boot_ipc_log, + HLOG "Device entered mission mode\n"); + /* disable boot logger channel */ if (boot_dev) mhi_unprepare_from_transfer(boot_dev); + + if (!mhi_dev->drv_supported || arch_info->drv_connected) + pm_runtime_allow(&mhi_dev->pci_dev->dev); } static int mhi_arch_pcie_scale_bw(struct mhi_controller *mhi_cntrl, diff --git a/drivers/bus/mhi/controllers/mhi_qcom.c b/drivers/bus/mhi/controllers/mhi_qcom.c index 7aba85e9e572..cb70405ac303 100644 --- a/drivers/bus/mhi/controllers/mhi_qcom.c +++ b/drivers/bus/mhi/controllers/mhi_qcom.c @@ -496,10 +496,6 @@ static int mhi_qcom_power_up(struct mhi_controller *mhi_cntrl) mhi_cntrl->ee = 0; mhi_cntrl->power_down = false; - ret = mhi_arch_power_up(mhi_cntrl); - if (ret) - return ret; - ret = mhi_async_power_up(mhi_cntrl); /* Update modem serial Info */ diff --git a/drivers/bus/mhi/controllers/mhi_qcom.h b/drivers/bus/mhi/controllers/mhi_qcom.h index 2e79b5a9b8c8..9c983e8fd5c4 100644 --- a/drivers/bus/mhi/controllers/mhi_qcom.h +++ b/drivers/bus/mhi/controllers/mhi_qcom.h @@ -48,7 +48,6 @@ struct mhi_dev { int resn; void *arch_info; bool powered_on; - bool mdm_state; dma_addr_t iova_start; dma_addr_t iova_stop; enum mhi_suspend_mode suspend_mode; @@ -67,7 +66,6 @@ int mhi_pci_probe(struct pci_dev *pci_dev, int mhi_arch_link_lpm_disable(struct mhi_controller *mhi_cntrl); int mhi_arch_link_lpm_enable(struct mhi_controller *mhi_cntrl); void mhi_arch_mission_mode_enter(struct mhi_controller *mhi_cntrl); -int mhi_arch_power_up(struct mhi_controller *mhi_cntrl); int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl); void mhi_arch_pcie_deinit(struct mhi_controller *mhi_cntrl); int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl); @@ -94,11 +92,6 @@ static inline int mhi_arch_link_resume(struct mhi_controller *mhi_cntrl) return 0; } -static inline int mhi_arch_power_up(struct mhi_controller *mhi_cntrl) -{ - return 0; -} - static inline void mhi_arch_mission_mode_enter(struct mhi_controller *mhi_cntrl) { }