All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sarthak Garg <quic_sartgarg@quicinc.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Andy Gross <agross@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	<linux-mmc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-msm@vger.kernel.org>, <quic_cang@quicinc.com>,
	<quic_nguyenb@quicinc.com>, <quic_rampraka@quicinc.com>,
	<quic_pragalla@quicinc.com>, <quic_sayalil@quicinc.com>,
	<quic_nitirawa@quicinc.com>, <quic_sachgupt@quicinc.com>,
	<quic_bhaskarv@quicinc.com>, <quic_narepall@quicinc.com>,
	<kernel@quicinc.com>,
	Veerabhadrarao Badiganti <quic_vbadigan@quicinc.com>
Subject: Re: [PATCH V3 1/3] mmc: core: Add partial initialization support
Date: Mon, 29 Jan 2024 12:20:11 +0530	[thread overview]
Message-ID: <b59331a1-567f-403c-9173-b0919bdd0f8e@quicinc.com> (raw)
In-Reply-To: <CAPDyKFrVNfqUxU2iGEDXrshOEKm1KROCHTPpSyDAgZPMPojfsg@mail.gmail.com>



On 10/27/2023 3:23 PM, Ulf Hansson wrote:
> [...]
> 
>>>> +{
>>>> +       int err = 0;
>>>> +       struct mmc_card *card = host->card;
>>>> +
>>>> +       mmc_set_bus_width(host, host->cached_ios.bus_width);
>>>> +       mmc_set_timing(host, host->cached_ios.timing);
>>>> +       if (host->cached_ios.enhanced_strobe) {
>>>> +               host->ios.enhanced_strobe = true;
>>>> +               if (host->ops->hs400_enhanced_strobe)
>>>> +                       host->ops->hs400_enhanced_strobe(host, &host->ios);
>>>> +       }
>>>> +       mmc_set_clock(host, host->cached_ios.clock);
>>>> +       mmc_set_bus_mode(host, host->cached_ios.bus_mode);
>>>> +
>>>
>>> Rather than re-using the above APIs and the ->set_ios() callback in
>>> the host, I believe it would be better to add a new host ops to manage
>>> all of the above at once instead. Something along the lines of the
>>> below, would then replace all of the above.
>>>
>>> host->ops->restore_ios(host, &host->cached_ios)
>>> memcpy(&host->ios, &host->cached_ios, sizeof(host->ios));
>>>
>>> Would that make sense to you too?
>>>
>>
>>
>> I didn't get this completely. Do you mean that we should implement a new
>> restore_ios callback (e.g. sdhci_restore_ios) similar to sdhci_set_ios
>> and removing all the redundant code from sdhci_set_ios which should
>> achieve the behaviour same as calling all the above mmc_set_* API's ?
> 
> Correct. Would it not simply the things in the driver too?
> 
>>
>>
>>>> +       if (!mmc_card_hs400es(card) &&
>>>> +                       (mmc_card_hs200(card) || mmc_card_hs400(card))) {
>>>> +               err = mmc_execute_tuning(card);
>>>> +               if (err) {
>>>> +                       pr_err("%s: %s: Tuning failed (%d)\n",
>>>> +                               mmc_hostname(host), __func__, err);
>>>
>>> There is already a print being done in mmc_execute_tuning() at
>>> failure. So, let's drop the above print.
>>>
>>
>> Sure will take care in V4.
>>
>>>> +                       goto out;
>>>> +               }
>>>> +       }
>>>> +
>>>> +       err = mmc_test_awake_ext_csd(host);
>>>
>>> Again, I don't get why this is needed, so let's discuss this more.
>>>
>>
>> This is just a safety check added because ext_csd has some W/E_P or
>> W/C_P registers which gets reset if any HW reset happens to the card.
>> So this will check for those cases if any other vendor is doing reset as
>> part of suspend and compare a subset of those W/E_P and W/C_P registers
>> and if they are changed then we will bail out of this partial init
>> feature and go for full initialization.
>> We are also fine with removing this function but just added for the
>> above mentioned case.
> 
> In that case, I would rather remove it as I think it's superfluous.
> 
> More precisely, I would expect that we fail to wake up the card with a
> CMD5 (get an error response for the CMD) if there has been a HW reset
> somewhere done before.
> 
> Another reason to *not* read the ext_csd would be to further improve
> the resume time, as reading it takes time too. I would be curious to
> know how much though. :-)
> 
> [...]
> 
> Kind regards
> Uffe

Hi ulf,

Sorry for the delay but we are seeing some stability issues when testing 
this feature with HS400 cards which I am debugging and may take some 
time and will come back.
Note: This feature is working perfectly fine with HS400ES cards.

  reply	other threads:[~2024-01-29  6:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-19  5:46 [PATCH V3 0/3] mmc: Add partial initialization support Sarthak Garg
2023-10-19  5:46 ` [PATCH V3 1/3] mmc: core: " Sarthak Garg
2023-10-19 15:00   ` Ulf Hansson
2023-10-27  8:41     ` Sarthak Garg
2023-10-27  9:53       ` Ulf Hansson
2024-01-29  6:50         ` Sarthak Garg [this message]
2023-10-19  5:46 ` [PATCH V3 2/3] mmc: sdhci-msm: Enable MMC_CAP_AGGRESSIVE_PM for Qualcomm controllers Sarthak Garg
2023-10-19  5:46 ` [PATCH V3 3/3] mmc: sdhci-msm: Enable MMC_CAP2_SLEEP_AWAKE " Sarthak Garg
  -- strict thread matches above, loose matches on Subject: below --
2023-10-17  6:13 [PATCH V3 0/3] mmc: Add partial initialization support Sarthak Garg
2023-10-17  6:13 ` [PATCH V3 1/3] mmc: core: " Sarthak Garg

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=b59331a1-567f-403c-9173-b0919bdd0f8e@quicinc.com \
    --to=quic_sartgarg@quicinc.com \
    --cc=adrian.hunter@intel.com \
    --cc=agross@kernel.org \
    --cc=andersson@kernel.org \
    --cc=kernel@quicinc.com \
    --cc=konrad.dybcio@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=quic_bhaskarv@quicinc.com \
    --cc=quic_cang@quicinc.com \
    --cc=quic_narepall@quicinc.com \
    --cc=quic_nguyenb@quicinc.com \
    --cc=quic_nitirawa@quicinc.com \
    --cc=quic_pragalla@quicinc.com \
    --cc=quic_rampraka@quicinc.com \
    --cc=quic_sachgupt@quicinc.com \
    --cc=quic_sayalil@quicinc.com \
    --cc=quic_vbadigan@quicinc.com \
    --cc=ulf.hansson@linaro.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.