From: Bhaumik Bhatt <bbhatt@codeaurora.org>
To: Loic Poulain <loic.poulain@linaro.org>
Cc: mani@kernel.org, hemantk@codeaurora.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH] bus: mhi: core: Fix power down latency
Date: Wed, 28 Apr 2021 13:09:44 -0700 [thread overview]
Message-ID: <57eb5579ca58e1e27a2022432d2ffc4c@codeaurora.org> (raw)
In-Reply-To: <1619598574-11928-1-git-send-email-loic.poulain@linaro.org>
On 2021-04-28 01:29 AM, Loic Poulain wrote:
> On gracefull power-down/disable transition, a MHI reset is performed,
On _graceful_ power-down/disable transition, _when an_ MHI reset is
performed,
> the MHI device then looses its context, including interrupt config.
the MHI device _loses_ its context, including interrupt configuration.
> However the current implementation is waiting for event(irq) driven
However, the current implementation is waiting for event(irq) driven
> state change to confirm reset has been completed, which never happens,
> and causes reset timeout, leading to unexpected high latency of the
> mhi_power_down procedure.
>
> Fix that by moving to the recently introduced poll_reg_field method,
> waiting for the reset bit to be cleared, in the same way as the
> power_on procedure.
>
> Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
> ---
> drivers/bus/mhi/core/pm.c | 17 +++++------------
> 1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c
> index e2e59a3..9c61d3f 100644
> --- a/drivers/bus/mhi/core/pm.c
> +++ b/drivers/bus/mhi/core/pm.c
> @@ -3,7 +3,6 @@
> * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
> *
> */
> -
> #include <linux/delay.h>
> #include <linux/device.h>
> #include <linux/dma-direction.h>
> @@ -471,17 +470,11 @@ static void mhi_pm_disable_transition(struct
> mhi_controller *mhi_cntrl)
> dev_dbg(dev, "Triggering MHI Reset in device\n");
> mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET);
>
> - /* Wait for the reset bit to be cleared by the device */
> - ret = wait_event_timeout(mhi_cntrl->state_event,
> - mhi_read_reg_field(mhi_cntrl,
> - mhi_cntrl->regs,
> - MHICTRL,
> - MHICTRL_RESET_MASK,
> - MHICTRL_RESET_SHIFT,
> - &in_reset) ||
> - !in_reset, timeout);
> - if (!ret || in_reset)
> - dev_err(dev, "Device failed to exit MHI Reset state\n");
> + ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
> + MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 0,
> + 25000);
> + if (ret)
> + dev_err(dev, "Device failed to clear MHI Reset\n");
>
> /*
> * Device will clear BHI_INTVEC as a part of RESET processing,
Thanks,
Bhaumik
---
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
prev parent reply other threads:[~2021-04-28 20:09 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-28 8:29 [PATCH] bus: mhi: core: Fix power down latency Loic Poulain
2021-04-28 20:09 ` Bhaumik Bhatt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57eb5579ca58e1e27a2022432d2ffc4c@codeaurora.org \
--to=bbhatt@codeaurora.org \
--cc=hemantk@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=loic.poulain@linaro.org \
--cc=mani@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.