diff --git a/drivers/platform/msm/mhi_dev/mhi.c b/drivers/platform/msm/mhi_dev/mhi.c index 68e52b8191c9..d7d9ecad8d73 100644 --- a/drivers/platform/msm/mhi_dev/mhi.c +++ b/drivers/platform/msm/mhi_dev/mhi.c @@ -3936,6 +3936,9 @@ static void mhi_dev_enable(struct work_struct *work) "Cleared reset before waiting for M0\n"); } + if (ep_pcie_get_linkstatus(mhi->phandle) != EP_PCIE_LINK_ENABLED) + mhi_log(MHI_MSG_ERROR, "warning: PCIe BME unset error"); + while (state != MHI_DEV_M0_STATE && ((max_cnt < MHI_SUSPEND_TIMEOUT) || mhi->no_m0_timeout)) { /* Wait for Host to set the M0 state */ diff --git a/drivers/platform/msm/mhi_dev/mhi_sm.c b/drivers/platform/msm/mhi_dev/mhi_sm.c index 5669fcfbd16a..89190bfeadfc 100644 --- a/drivers/platform/msm/mhi_dev/mhi_sm.c +++ b/drivers/platform/msm/mhi_dev/mhi_sm.c @@ -96,12 +96,6 @@ static inline const char *mhi_sm_mstate_str(enum mhi_dev_state state) return str; } -enum mhi_sm_ep_pcie_state { - MHI_SM_EP_PCIE_LINK_DISABLE, - MHI_SM_EP_PCIE_D0_STATE, - MHI_SM_EP_PCIE_D3_HOT_STATE, - MHI_SM_EP_PCIE_D3_COLD_STATE, -}; static inline const char *mhi_sm_dstate_str(enum mhi_sm_ep_pcie_state state) { @@ -1106,8 +1100,6 @@ unlock_and_exit: int mhi_dev_sm_init(struct mhi_dev *mhi_dev) { int res; - enum ep_pcie_link_status link_state; - MHI_SM_FUNC_ENTRY(); if (!mhi_dev) { @@ -1137,11 +1129,7 @@ int mhi_dev_sm_init(struct mhi_dev *mhi_dev) atomic_set(&mhi_sm_ctx->pending_device_events, 0); atomic_set(&mhi_sm_ctx->pending_pcie_events, 0); - link_state = ep_pcie_get_linkstatus(mhi_sm_ctx->mhi_dev->phandle); - if (link_state == EP_PCIE_LINK_ENABLED) - mhi_sm_ctx->d_state = MHI_SM_EP_PCIE_D0_STATE; - else - mhi_sm_ctx->d_state = MHI_SM_EP_PCIE_LINK_DISABLE; + mhi_sm_ctx->d_state = MHI_SM_EP_PCIE_D0_STATE; MHI_SM_FUNC_EXIT(); return 0; @@ -1238,16 +1226,7 @@ int mhi_dev_sm_set_ready(void) goto unlock_and_exit; } - if (mhi_sm_ctx->d_state != MHI_SM_EP_PCIE_D0_STATE) { - if (ep_pcie_get_linkstatus(mhi_sm_ctx->mhi_dev->phandle) == - EP_PCIE_LINK_ENABLED) { - mhi_sm_ctx->d_state = MHI_SM_EP_PCIE_D0_STATE; - } else { - MHI_SM_ERR("ERROR: ep-pcie link is not enabled\n"); - res = -EPERM; - goto unlock_and_exit; - } - } + mhi_sm_ctx->d_state = MHI_SM_EP_PCIE_D0_STATE; /* verify that MHISTATUS is configured to RESET*/ mhi_dev_mmio_masked_read(mhi_sm_ctx->mhi_dev, diff --git a/drivers/platform/msm/mhi_dev/mhi_sm.h b/drivers/platform/msm/mhi_dev/mhi_sm.h index e061fed208ea..80ed0086472f 100644 --- a/drivers/platform/msm/mhi_dev/mhi_sm.h +++ b/drivers/platform/msm/mhi_dev/mhi_sm.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* Copyright (c) 2015,2017-2018,2020 The Linux Foundation. All rights reserved.*/ +/* Copyright (c) 2015,2017-2018,2020-2021 The Linux Foundation. All rights reserved.*/ #ifndef MHI_SM_H #define MHI_SM_H @@ -31,6 +31,13 @@ enum mhi_dev_event { MHI_DEV_EVENT_MAX }; +enum mhi_sm_ep_pcie_state { + MHI_SM_EP_PCIE_LINK_DISABLE, + MHI_SM_EP_PCIE_D0_STATE, + MHI_SM_EP_PCIE_D3_HOT_STATE, + MHI_SM_EP_PCIE_D3_COLD_STATE, +}; + int mhi_dev_sm_init(struct mhi_dev *dev); int mhi_dev_sm_exit(struct mhi_dev *dev); int mhi_dev_sm_set_ready(void);