public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
To: Nitin Rawat <quic_nitirawa@quicinc.com>,
	Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Cc: vkoul@kernel.org, kishon@kernel.org,
	manivannan.sadhasivam@linaro.org,
	James.Bottomley@hansenpartnership.com,
	martin.petersen@oracle.com, bvanassche@acm.org,
	bjorande@quicinc.com, neil.armstrong@linaro.org,
	quic_rdwivedi@quicinc.com, linux-arm-msm@vger.kernel.org,
	linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org,
	linux-scsi@vger.kernel.org
Subject: Re: [PATCH V3 4/9] phy: qcom-qmp-ufs: Refactor UFS PHY reset
Date: Wed, 23 Apr 2025 13:09:25 +0200	[thread overview]
Message-ID: <b7027077-e9a3-462b-92a8-684a42d23604@oss.qualcomm.com> (raw)
In-Reply-To: <1a623099-40bb-4884-8d93-132138a4150b@quicinc.com>

On 4/16/25 2:26 PM, Nitin Rawat wrote:
> 
> 
> On 4/16/2025 5:43 PM, Dmitry Baryshkov wrote:
>> On Wed, 16 Apr 2025 at 12:08, Nitin Rawat <quic_nitirawa@quicinc.com> wrote:
>>>
>>>
>>>
>>> On 4/15/2025 2:59 PM, Dmitry Baryshkov wrote:
>>>> On 14/04/2025 23:34, Nitin Rawat wrote:
>>>>>
>>>>>
>>>>> On 4/11/2025 4:38 PM, Dmitry Baryshkov wrote:
>>>>>> On Fri, 11 Apr 2025 at 13:50, Nitin Rawat <quic_nitirawa@quicinc.com>
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 4/11/2025 1:38 AM, Dmitry Baryshkov wrote:
>>>>>>>> On Thu, Apr 10, 2025 at 02:30:57PM +0530, Nitin Rawat wrote:
>>>>>>>>> Refactor the UFS PHY reset handling to parse the reset logic only
>>>>>>>>> once
>>>>>>>>> during probe, instead of every resume.
>>>>>>>>>
>>>>>>>>> Move the UFS PHY reset parsing logic from qmp_phy_power_on to
>>>>>>>>> qmp_ufs_probe to avoid unnecessary parsing during resume.
>>>>>>>>
>>>>>>>> How did you solve the circular dependency issue being noted below?
>>>>>>>
>>>>>>> Hi Dmitry,
>>>>>>> As part of my patch, I moved the parsing logic from qmp_phy_power_on to
>>>>>>> qmp_ufs_probe to avoid unnecessary parsing during resume. I'm uncertain
>>>>>>> about the circular dependency issue and whether if it still exists.
>>>>>>
>>>>>> It surely does. The reset controller is registered in the beginning of
>>>>>> ufs_qcom_init() and the PHY is acquired only a few lines below. It
>>>>>> creates a very small window for PHY driver to probe.
>>>>>> Which means, NAK, this patch doesn't look acceptable.
>>>>>
>>>>> Hi Dmitry,
>>>>>
>>>>> Thanks for pointing this out. I agree that it leaves very little time
>>>>> for the PHY to probe, which may cause issues with targets where
>>>>> no_pcs_sw_reset is set to true.
>>>>>
>>>>> As an experiment, I kept no_pcs_sw_reset set to true for the SM8750,
>>>>> and it caused bootup probe issues in some of the iterations I ran.
>>>>>
>>>>> To address this, I propose updating the patch to move the
>>>>> qmp_ufs_get_phy_reset call to phy_calibrate, just before the
>>>>> reset_control_assert call.
>>>>
>>>> Will it cause an issue if we move it to phy_init() instead of
>>>> phy_calibrate()?
>>>
>>> Hi Dmitry,
>>>
>>> Thanks for suggestion.
>>> Phy_init is invoked before phy_set_mode_ext and ufs_qcom_phy_power_on,
>>> whereas calibrate is called after ufs_qcom_phy_power_on. Keeping the UFS
>>> PHY reset in phy_calibrate introduces relatively more delay, providing
>>> more buffer time for the PHY driver probe, ensuring the UFS PHY reset is
>>> handled correctly the first time.
>>
>> We are requesting the PHY anyway, so the PHY driver should have probed
>> well before phy_init() call. I don't get this comment.
>>
>>>
>>> Moving the calibration to phy_init shouldn't cause any issues. However,
>>> since we currently don't have an initialization operations registered
>>> for init, we would need to add a new PHY initialization ops if we decide
>>> to move it to phy_init.
>>
>> Yes. I don't see it as a problem. Is there any kind of an issue there?
> 
> No issues. In my next patchset, I would add a new init ops registered for qcom phy and move get ufs phy reset handler to it.

I don't really like this circular dependency.

So I took a peek at the docs and IIUC, they say that the reset coming
from the UFS controller effectively does the same thing as QPHY_SW_RESET.

Moreover, the docs mention the controller-side reset should not be used
anymore (as of at least X1E & SM8550). Docs for MSM8996 (one of the
oldest platforms that this driver supports) also don't really mention a
hard dependency on it.

So we can get rid of this mess entirely, without affecting backwards
compatibility even, as this is all contained within the PHYs register
space and driver.

Konrad

  reply	other threads:[~2025-04-23 11:09 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-10  9:00 [PATCH V3 0/9] Refactor phy powerup sequence Nitin Rawat
2025-04-10  9:00 ` [PATCH V3 1/9] scsi: ufs: qcom: add a new phy calibrate API call Nitin Rawat
2025-04-23 10:42   ` Konrad Dybcio
2025-04-23 11:01     ` Nitin Rawat
2025-04-10  9:00 ` [PATCH V3 2/9] phy: qcom-qmp-ufs: Rename qmp_ufs_enable and qmp_ufs_power_on Nitin Rawat
2025-04-10 20:05   ` Dmitry Baryshkov
2025-04-10  9:00 ` [PATCH V3 3/9] phy: qcom-qmp-ufs: Refactor phy_power_on and phy_calibrate callbacks Nitin Rawat
2025-04-10 20:06   ` Dmitry Baryshkov
2025-04-10  9:00 ` [PATCH V3 4/9] phy: qcom-qmp-ufs: Refactor UFS PHY reset Nitin Rawat
2025-04-10 20:08   ` Dmitry Baryshkov
2025-04-11 10:50     ` Nitin Rawat
2025-04-11 11:08       ` Dmitry Baryshkov
2025-04-14 20:34         ` Nitin Rawat
2025-04-15  9:29           ` Dmitry Baryshkov
2025-04-16  9:08             ` Nitin Rawat
2025-04-16 12:13               ` Dmitry Baryshkov
2025-04-16 12:26                 ` Nitin Rawat
2025-04-23 11:09                   ` Konrad Dybcio [this message]
2025-04-23 11:21                     ` Konrad Dybcio
2025-04-23 11:43                       ` Nitin Rawat
2025-04-23 13:47         ` Konrad Dybcio
2025-04-23 13:51           ` Dmitry Baryshkov
2025-04-10  9:00 ` [PATCH V3 5/9] phy: qcom-qmp-ufs: Remove qmp_ufs_com_init() Nitin Rawat
2025-04-10 20:09   ` Dmitry Baryshkov
2025-04-11 10:42     ` Nitin Rawat
2025-04-11 10:56       ` Dmitry Baryshkov
2025-04-14  7:28         ` Nitin Rawat
2025-04-14  7:43           ` Dmitry Baryshkov
2025-04-19 20:08             ` Nitin Rawat
2025-04-23 13:34               ` Dmitry Baryshkov
2025-04-10  9:00 ` [PATCH V3 6/9] phy: qcom-qmp-ufs: Refactor qmp_ufs_exit callback Nitin Rawat
2025-04-23 11:29   ` Konrad Dybcio
2025-04-10  9:01 ` [PATCH V3 7/9] scsi: ufs: qcom : Refactor phy_power_on/off calls Nitin Rawat
2025-04-10  9:01 ` [PATCH V3 8/9] scsi: ufs: qcom : Introduce phy_power_on/off wrapper function Nitin Rawat
2025-04-10  9:01 ` [PATCH V3 9/9] scsi: ufs: qcom: Prevent calling phy_exit before phy_init Nitin Rawat
2025-04-10 20:05 ` [PATCH V3 0/9] Refactor phy powerup sequence Dmitry Baryshkov
2025-04-11 10:35   ` Nitin Rawat

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=b7027077-e9a3-462b-92a8-684a42d23604@oss.qualcomm.com \
    --to=konrad.dybcio@oss.qualcomm.com \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=bjorande@quicinc.com \
    --cc=bvanassche@acm.org \
    --cc=dmitry.baryshkov@oss.qualcomm.com \
    --cc=kishon@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=martin.petersen@oracle.com \
    --cc=neil.armstrong@linaro.org \
    --cc=quic_nitirawa@quicinc.com \
    --cc=quic_rdwivedi@quicinc.com \
    --cc=vkoul@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox