From c17f1783a6043d8a8d15592076983eadb4eae2ab Mon Sep 17 00:00:00 2001 From: Gauri Joshi Date: Fri, 17 Apr 2020 00:30:28 +0530 Subject: [PATCH] msm: mhi_dev: Add an option to not timeout waiting for M0 On certain platforms host might take a long time to send M0 to device. Only modified msm files in this commit. Change-Id: I8c5f07a7926e01afa84a983ef98721749787d2da Signed-off-by: Siva Kumar Akkireddi Signed-off-by: Gauri Joshi --- drivers/platform/msm/mhi_dev/mhi.c | 6 +++++- drivers/platform/msm/mhi_dev/mhi.h | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/platform/msm/mhi_dev/mhi.c b/drivers/platform/msm/mhi_dev/mhi.c index da7bc72af9f5..565c9d19a108 100644 --- a/drivers/platform/msm/mhi_dev/mhi.c +++ b/drivers/platform/msm/mhi_dev/mhi.c @@ -3355,7 +3355,8 @@ static void mhi_dev_enable(struct work_struct *work) "Cleared reset before waiting for M0\n"); } - while (state != MHI_DEV_M0_STATE && max_cnt < MHI_SUSPEND_TIMEOUT) { + while (state != MHI_DEV_M0_STATE && + ((max_cnt < MHI_SUSPEND_TIMEOUT) || mhi->no_m0_timeout)) { /* Wait for Host to set the M0 state */ msleep(MHI_SUSPEND_MIN); rc = mhi_dev_mmio_get_mhi_state(mhi, &state, &mhi_reset); @@ -3624,6 +3625,9 @@ static int get_device_tree_data(struct platform_device *pdev) mhi->enable_m2 = of_property_read_bool((&pdev->dev)->of_node, "qcom,enable-m2"); + mhi->no_m0_timeout = of_property_read_bool((&pdev->dev)->of_node, + "qcom,no-m0-timeout"); + mhi_log(MHI_MSG_VERBOSE, "acquiring wakelock\n"); return 0; diff --git a/drivers/platform/msm/mhi_dev/mhi.h b/drivers/platform/msm/mhi_dev/mhi.h index 47f77aab4a91..47a3fd368082 100644 --- a/drivers/platform/msm/mhi_dev/mhi.h +++ b/drivers/platform/msm/mhi_dev/mhi.h @@ -595,9 +595,13 @@ struct mhi_dev { /*Register for interrupt*/ bool mhi_int; bool mhi_int_en; + /* Enable M2 autonomous mode from MHI */ bool enable_m2; + /* Dont timeout waiting for M0 */ + bool no_m0_timeout; + /* Registered client callback list */ struct list_head client_cb_list; /* Tx, Rx DMA channels */