From: Ulf Hansson <ulf.hansson@linaro.org>
To: Chaotian Jing <chaotian.jing@mediatek.com>
Cc: "Rob Herring" <robh+dt@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"Chris Ball" <chris@printf.net>,
"Mark Rutland" <mark.rutland@arm.com>,
"James Liao" <jamesjj.liao@mediatek.com>,
srv_heupstream <srv_heupstream@mediatek.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"Hongzhou Yang" <hongzhou.yang@mediatek.com>,
"Catalin Marinas" <catalin.marinas@arm.com>,
linux-mmc <linux-mmc@vger.kernel.org>,
"Will Deacon" <will.deacon@arm.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
"Sascha Hauer" <kernel@pengutronix.de>,
"Joe.C" <yingjoe.chen@mediatek.com>,
"Eddie Huang" <eddie.huang@mediatek.com>,
"Bin Zhang (章斌)" <bin.zhang@mediatek.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v4 2/7] mmc: mediatek: Add Mediatek MMC driver
Date: Fri, 22 May 2015 14:51:56 +0200 [thread overview]
Message-ID: <CAPDyKFpWCvJXL-W5P83ucBM2-b5cDFEtSLnN6J6WLyR_9CuvWw@mail.gmail.com> (raw)
In-Reply-To: <1432284000.23435.38.camel@mhfsdcap03>
[...]
>> 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.
[...]
>> 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.
Perhaps you should remove the above polling, and rely on the MMC core
to poll with CMD13 instead?
>> 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
next prev parent reply other threads:[~2015-05-22 12:51 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 [this message]
[not found] ` <CAPDyKFpWCvJXL-W5P83ucBM2-b5cDFEtSLnN6J6WLyR_9CuvWw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-26 6:16 ` Chaotian Jing
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=CAPDyKFpWCvJXL-W5P83ucBM2-b5cDFEtSLnN6J6WLyR_9CuvWw@mail.gmail.com \
--to=ulf.hansson@linaro.org \
--cc=arnd@arndb.de \
--cc=bin.zhang@mediatek.com \
--cc=catalin.marinas@arm.com \
--cc=chaotian.jing@mediatek.com \
--cc=chris@printf.net \
--cc=devicetree@vger.kernel.org \
--cc=eddie.huang@mediatek.com \
--cc=hongzhou.yang@mediatek.com \
--cc=jamesjj.liao@mediatek.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=robh+dt@kernel.org \
--cc=srv_heupstream@mediatek.com \
--cc=will.deacon@arm.com \
--cc=yingjoe.chen@mediatek.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).