devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chaotian Jing <chaotian.jing-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
To: Ulf Hansson <ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: "Mark Rutland" <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	"James Liao"
	<jamesjj.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	"Arnd Bergmann" <arnd-r2nGTMty4D4@public.gmane.org>,
	srv_heupstream
	<srv_heupstream-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"Hongzhou Yang"
	<hongzhou.yang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	"Catalin Marinas" <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
	"Bin Zhang (章斌)"
	<bin.zhang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	linux-mmc <linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"Chris Ball" <chris-OsFVWbfNK3isTnJN9+BGXg@public.gmane.org>,
	"Will Deacon" <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"Rob Herring" <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	"Sascha Hauer" <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	"Matthias Brugger"
	<matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Joe.C" <yingjoe.chen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	"Eddie Huang"
	<eddie.huang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH v4 2/7] mmc: mediatek: Add Mediatek MMC driver
Date: Tue, 26 May 2015 14:16:31 +0800	[thread overview]
Message-ID: <1432620991.647.6.camel@mhfsdcap03> (raw)
In-Reply-To: <CAPDyKFpWCvJXL-W5P83ucBM2-b5cDFEtSLnN6J6WLyR_9CuvWw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Fri, 2015-05-22 at 14:51 +0200, Ulf Hansson wrote:
> [...]
> 
> >> You are invoking msdc_gate_clock() and msdc_ungate_clock() in a
> >> balanced manner, thus hclk_enabled is redundant. Please remove it.
> >
> > on drv->probe(), already invoke the msdc_ungate_clock(), so, when the
> > runtime pm resume invoke the msdc_ungate_clock(), the hclk already
> > enabled.
> 
> 
> That's why you invoke pm_runtime_set_active() during ->probe() when
> deploying PM support in patch3. It's not an issue then.
OK, then I can remove the hclk_enabled and sclk_enabled.
> 
> [...]
> 
> >> I assume it's possible to gate the clock by updating a MSDC register
> >> instead!? That would be prefereable since then you can leave clock
> >> gating/ungating via the clk API, to be dealt from runtime PM. That
> >> would also make "sclk_enabled" in the struct msdc_host redundant.
> >>
> >> Adopting to above, obviously requires MSDC to be able to ungate the
> >> clock by also updating a MSDC register. I assume that's possible as
> >> well!?
> >>
> > We can set the bit1 of MSDC_CFG, when this bit is 0, the bus clock was
> > gated to 0 if no command or data is transmitted.
> > And, from our designer, when we operate the MSDC register, we need make
> > sure both HCLK and source are enabled, if source clock was disabled,
> > write some MSDC registers will have no effect(eg. send CMD, without
> > source clock, not only cannot send CMD, but also cannot get CMD timeout
> > interrupt.)
> 
> Thanks, that answered my question. As I understand it you should be
> able to adopt to my propsual.
> 
> [...]
> 
> >> > +{
> >> > +       unsigned long tmo = jiffies + msecs_to_jiffies(20);
> >> > +
> >> > +       while ((readl(host->base + SDC_STS) & SDC_STS_CMDBUSY)
> >> > +                       && time_before(jiffies, tmo))
> >> > +               continue;
> >> > +
> >> > +       if (readl(host->base + SDC_STS) & SDC_STS_CMDBUSY) {
> >> > +               dev_err(host->dev, "CMD bus busy detected\n");
> >> > +               host->error |= REQ_CMD_BUSY;
> >> > +               msdc_cmd_done(host, MSDC_INT_CMDTMO, mrq, cmd);
> >> > +               return false;
> >> > +       }
> >> > +
> >> > +       if (mmc_resp_type(cmd) == MMC_RSP_R1B || cmd->data) {
> >> > +               /* R1B or with data, should check SDCBUSY */
> >> > +               while (readl(host->base + SDC_STS) & SDC_STS_SDCBUSY)
> >> > +                       cpu_relax();
> >> > +       }
> >>
> >> MSDC seems to be handling card busy detection in HW, right?
> >>
> > Do not have this ability, HW only know if CMD/DAT is low, but do not
> > have any interrupt for it,
> 
> I see, but doesn't the above polling mean that msdc will not propagate
> the response until the card have stopped signal busy? That's what
> MMC_CAP_WAIT_WHILE_BUSY shall be used for.
> 
As you see, we only check the "busy state" BEFORE issue a R1B command or
with data command, but do not check if AFTER the request was done, that
would do not match the "MMC_CAP_WAIT_WHILE_BUSY"(eg. CMD5 to sleep)
In addition, about CMD5, I find that the suspend/resume flow of EMMC is
stranger in new kernel version, when suspend, it may issue CMD5 to enter
sleep mode, then power off MMC, but when resume, it will
re-initialization, So that why need do the redundant CMD5 in suspend ?

> Perhaps you should remove the above polling, and rely on the MMC core
> to poll with CMD13 instead?
before any read/write command, core will issue CMD13 to confirm card
status, here is just only do double confirm to avoid HW issue.
> 
> >> If so, you should enable MMC_CAP_WAIT_WHILE_BUSY and set
> >> "max_busy_timeout" to DAT_TIMEOUT to inform the mmc core about it.
> >>
> 
> [...]
> 
> Kind regards
> Uffe

  parent reply	other threads:[~2015-05-26  6:16 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-19  6:36 [PATCH v4 0/7] Add Mediatek MMC driver Chaotian Jing
     [not found] ` <1432017411-2996-1-git-send-email-chaotian.jing-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2015-05-19  6:36   ` [PATCH v4 1/7] mmc: dt-bindings: add Mediatek MMC bindings Chaotian Jing
     [not found]     ` <1432017411-2996-2-git-send-email-chaotian.jing-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2015-05-19  9:41       ` Ulf Hansson
     [not found]         ` <CAPDyKFq+YAz2pt1820YnqWaVKO6sn5eB+NxuM2dhP236FSKa9g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-26  6:27           ` Chaotian Jing
2015-05-19  6:36   ` [PATCH v4 2/7] mmc: mediatek: Add Mediatek MMC driver Chaotian Jing
     [not found]     ` <1432017411-2996-3-git-send-email-chaotian.jing-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2015-05-19 10:27       ` Ulf Hansson
     [not found]         ` <CAPDyKFo5788uRqAaXUZ-OiS1XF8NPmg4tn2ipZNJdx4dci+KMQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-22  8:40           ` Chaotian Jing
2015-05-22 12:51             ` Ulf Hansson
     [not found]               ` <CAPDyKFpWCvJXL-W5P83ucBM2-b5cDFEtSLnN6J6WLyR_9CuvWw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-26  6:16                 ` Chaotian Jing [this message]
2015-05-26 12:33                   ` Ulf Hansson
     [not found]                     ` <CAPDyKFrNQ6E4cU1_gK56ZNYgb=9EzHoJ=vXyraYoKNnRL=Umyg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-27 11:34                       ` Chaotian Jing
2015-06-04  7:32                         ` Ulf Hansson
2015-05-19 11:15     ` Sascha Hauer
     [not found]       ` <20150519111558.GD6325-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2015-06-04  2:54         ` Chaotian Jing
2015-06-04  9:02           ` Sascha Hauer
2015-05-19 11:19     ` Russell King - ARM Linux
     [not found]       ` <20150519111936.GC2067-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2015-05-20  9:14         ` Chaotian Jing
2015-05-19  6:36   ` [PATCH v4 3/7] mmc: mediatek: Add PM support for " Chaotian Jing
2015-05-19 10:41     ` Ulf Hansson
2015-05-19 11:04     ` Sascha Hauer
2015-05-19 11:55       ` Ulf Hansson
2015-05-19  6:36   ` [PATCH v4 4/7] arm64: dts: mediatek: Add MT8173 MMC dts Chaotian Jing
2015-05-19  6:36   ` [PATCH v4 5/7] arm64: mediatek: Add Mediatek MMC support in defconfig Chaotian Jing
2015-05-19  6:36   ` [PATCH v4 6/7] ARM: mediatek: dts: Add emmc support to mt8135 Chaotian Jing
2015-05-19  6:36   ` [PATCH v4 7/7] ARM: multi_v7_defconfig: Enable Mediatek MMC support multi-v7 Chaotian Jing

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=1432620991.647.6.camel@mhfsdcap03 \
    --to=chaotian.jing-nus5lvnupcjwk0htik3j/w@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=bin.zhang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    --cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
    --cc=chris-OsFVWbfNK3isTnJN9+BGXg@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=eddie.huang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    --cc=hongzhou.yang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    --cc=jamesjj.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    --cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=srv_heupstream-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    --cc=ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=will.deacon-5wv7dgnIgG8@public.gmane.org \
    --cc=yingjoe.chen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.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;
as well as URLs for NNTP newsgroup(s).