linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ziyuan Xu <xzy.xu@rock-chips.com>
To: Doug Anderson <dianders@chromium.org>
Cc: "Mark Rutland" <mark.rutland@arm.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Brian Norris" <briannorris@chromium.org>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Xing Zheng" <zhengxing@rock-chips.com>,
	"Masahiro Yamada" <yamada.masahiro@socionext.com>,
	"Frank Wang" <frank.wang@rock-chips.com>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Shawn Lin" <shawn.lin@rock-chips.com>,
	"Elaine Zhang" <zhangqing@rock-chips.com>,
	"Will Deacon" <will.deacon@arm.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"open list:ARM/Rockchip SoC..."
	<linux-rockchip@lists.infradead.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"David Wu" <david.wu@rock-chips.com>,
	"Shunqian Zheng" <zhengsq@rock-chips.com>,
	"Jianqun Xu" <jay.xu@rock-chips.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"Caesar Wang" <wxt@rock-chips.com>
Subject: Re: [PATCH 2/2] arm64: dts: rockchip: add eMMC's power domain support for rk3399
Date: Fri, 2 Sep 2016 10:35:54 +0800	[thread overview]
Message-ID: <16314a2c-1ed9-0307-3497-9c1d8d41a149@rock-chips.com> (raw)
In-Reply-To: <CAD=FV=Wrw=THuokXyOXSyihF4fDB4z2L0vCgkiR9XJ6aEzsNzg@mail.gmail.com>



On 2016年09月02日 05:29, Doug Anderson wrote:
> Hi,
>
> On Wed, Aug 31, 2016 at 11:56 PM, Ziyuan Xu <xzy.xu@rock-chips.com> wrote:
>> Hi
>>
>>
>> On 2016年09月01日 12:20, Doug Anderson wrote:
>>> Hi,
>>>
>>> On Wed, Aug 31, 2016 at 7:29 PM, Ziyuan Xu <xzy.xu@rock-chips.com> wrote:
>>>>> This is fine to pick up _only_ if you don't care about suspend/resume.
>>>>> If you care about suspend/resume then someone needs to first write a
>>>>> patch that will re-init all "corecfg" values after power is turned on.
>>>>
>>>> Do you mean corecfg_clockmultiplier and corecfg_baseclkfreq, if yes, we
>>>> don't need to strore/re-init it after resume.
>>>> corecfg_clockmultiplier is only used to fetch host->clk_mul, and
>>>> host->clk_mul has been a fixed value at run-time, unless driver unbind.
>>>> The same as corecfg_clockmultiplier, corecfg_baseclkfreq is used to check
>>>> the xin_clk at probe time, we don't reference it at run-time.
>>>> BTW, I have tested suspend/resume on rk3399 prior to this sumbit, eMMC
>>>> works
>>>> fine.
>>> I guess I don't actually know how the corecfg_clockmultiplier and
>>> corecfg_baseclkfreq fields are actually used, but I presume that they
>>> actually do something useful and aren't used to just communicate back
>>> to software?
>>
>> Take corecfg_clockmultiplier as example.
>> 1. sdhci driver fetch host->clk_mul from corecfg_clockmultiplier
>> 2. mmc->f_min and mmc->f_max are calculated via host->clk_mul, they're used
>> for further initialization.
>> 3. if the corecfg_clockmultiplier is incorrect, sdhci will use improper
>> frequency to play.
>>
>> I think we don't need to store it due to it's a fixed value at run-time,
>> even if it is reset after a power cycle, the above will not be changed via
>> software, except for dirver unbind .
>>
>>> I know that:
>>>
>>> 1. If I don't pick this patch and I suspend/resume,
>>> corecfg_clockmultiplier and corecfg_baseclkfreq are still fine after
>>> suspend / resume.
>>>
>>> 2. If I do pick this patch and I suspend/resume,
>>> corecfg_clockmultiplier and corecfg_baseclkfreq are wrong after
>>> suspend/resume (tested by reading /dev/mem directly from userspace
>>> after suspend/resume).
>>>
>>>
>>> Are you saying that it is unimportant that corecfg_clockmultiplier and
>>> corecfg_baseclkfreq are wrong?
>>
>> Yup, corecfg_* stuff will be reset after a power cycle.
>> I mean that we need only to guarantee they're correct at probe time.
> So are you saying that the entire purpose of "corecfg_clockmultiplier"
> is that causes the "ClockMultiplier" field of the "EMMCCORE_CAP"
> register to get a certain value?
> ...and that the entire purpose of "corecfg_baseclkfreq" is that it
> causes the "BaseClockFreqSDClock" field of the "EMMCCORE_CAP" register
> to get a certain value?
Yes, on rk3399:
corecfg_clockmultiplier <===> EMMCCORE_CAP1[23:16] ClockMultiplier
corecfg_baseclkfreq <===> EMMCCORE_CAP[15:8] BaseClockFreqSDClock

If you re-write to either corecfg_* stuff,  the corresponding CAP 
register field will be changed too.
sdhci driver will fetch CAP register for initialization, we only need to 
guarantee they're correct at probe time.

Did that all make sense?
>
> That would have been nice to know before.  I had assumed that those
> "corecfg" settings did something else more useful.
>
> If it is indeed true that these corecfg values are as silly as it
> seems, then I guess it's not terribly important to re-set them after
> suspend/resume.  Eventually it would be nice/clean to actually do so
> (in case the SDHCI driver eventually changes), but I guess we wouldn't
> need to block. this patch from landing.
>
> Can you please confirm my understanding above?
>
>
> -Doug
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2016-09-02  2:44 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-27 13:41 [PATCH 0/2] Add power domain support for eMMC node on rk3399 Ziyuan Xu
2016-08-27 13:41 ` [PATCH 1/2] Documentation: mmc: sdhci-of-arasan: add description of power domain Ziyuan Xu
2016-08-27 14:50   ` Shawn Lin
2016-08-29  0:36     ` Ziyuan Xu
2016-08-27 13:41 ` [PATCH 2/2] arm64: dts: rockchip: add eMMC's power domain support for rk3399 Ziyuan Xu
2016-08-27 15:05   ` Shawn Lin
2016-08-29  1:58     ` Elaine Zhang
2016-08-29  2:50     ` Elaine Zhang
2016-08-29  3:25       ` Shawn Lin
2016-08-31 17:42         ` Doug Anderson
2016-09-01  2:29           ` Ziyuan Xu
2016-09-01  3:23             ` Shawn Lin
2016-09-01 13:45               ` Ulf Hansson
2016-09-01 21:50                 ` Doug Anderson
2016-09-02 10:24                   ` Ulf Hansson
2016-09-02 14:23                     ` Ziyuan Xu
2016-09-06 12:34                       ` Ulf Hansson
2016-09-01  4:20             ` Doug Anderson
2016-09-01  6:56               ` Ziyuan Xu
2016-09-01 21:29                 ` Doug Anderson
2016-09-02  2:35                   ` Ziyuan Xu [this message]
2016-09-02  5:22                     ` Doug Anderson

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=16314a2c-1ed9-0307-3497-9c1d8d41a149@rock-chips.com \
    --to=xzy.xu@rock-chips.com \
    --cc=briannorris@chromium.org \
    --cc=catalin.marinas@arm.com \
    --cc=david.wu@rock-chips.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=frank.wang@rock-chips.com \
    --cc=heiko@sntech.de \
    --cc=jay.xu@rock-chips.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=shawn.lin@rock-chips.com \
    --cc=ulf.hansson@linaro.org \
    --cc=will.deacon@arm.com \
    --cc=wxt@rock-chips.com \
    --cc=yamada.masahiro@socionext.com \
    --cc=zhangqing@rock-chips.com \
    --cc=zhengsq@rock-chips.com \
    --cc=zhengxing@rock-chips.com \
    /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;
as well as URLs for NNTP newsgroup(s).