From: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
To: Douglas Anderson
<dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
xzy.xu-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
adrian.hunter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v2 01/11] phy: rockchip-emmc: Increase lock time allowance
Date: Mon, 20 Jun 2016 18:33:37 +0530 [thread overview]
Message-ID: <5767E9A9.5090308@ti.com> (raw)
In-Reply-To: <1465859076-4868-2-git-send-email-dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
On Tuesday 14 June 2016 04:34 AM, Douglas Anderson wrote:
> Previous PHY code waited a fixed amount of time for the DLL to lock at
> power on time. Unfortunately, the time for the DLL to lock is actually
> a bit more dynamic and can be longer if the card clock is slower.
>
> Instead of waiting a fixed 30 us, let's now dynamically wait until the
> lock bit gets set. We'll wait up to 10 ms which should be OK even if
> the card clock is at the super slow 100 kHz.
>
> On its own, this change makes the PHY power on code a little more
> robust. Before this change the PHY was relying on the eMMC code to make
> sure the PHY was only powered on when the card clock was set to at least
> 50 MHz before, though this reliance wasn't documented anywhere.
>
> This change will be even more useful in future changes where we actually
> need to be able to wait for a DLL lock at slower clock speeds.
>
> Signed-off-by: Douglas Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Acked-by: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
> ---
> Changes in v2:
> - Indicate that 5.1 ms is calculated (Shawn).
>
> drivers/phy/phy-rockchip-emmc.c | 28 ++++++++++++++++++++--------
> 1 file changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/phy/phy-rockchip-emmc.c b/drivers/phy/phy-rockchip-emmc.c
> index a69f53630e67..2d059c046978 100644
> --- a/drivers/phy/phy-rockchip-emmc.c
> +++ b/drivers/phy/phy-rockchip-emmc.c
> @@ -85,6 +85,7 @@ static int rockchip_emmc_phy_power(struct rockchip_emmc_phy *rk_phy,
> {
> unsigned int caldone;
> unsigned int dllrdy;
> + unsigned long timeout;
>
> /*
> * Keep phyctrl_pdb and phyctrl_endll low to allow
> @@ -137,15 +138,26 @@ static int rockchip_emmc_phy_power(struct rockchip_emmc_phy *rk_phy,
> PHYCTRL_ENDLL_MASK,
> PHYCTRL_ENDLL_SHIFT));
> /*
> - * After enable analog DLL circuits, we need an extra 10.2us
> - * for dll to be ready for work. But according to testing, we
> - * find some chips need more than 25us.
> + * After enabling analog DLL circuits docs say that we need 10.2 us if
> + * our source clock is at 50 MHz and that lock time scales linearly
> + * with clock speed. If we are powering on the PHY and the card clock
> + * is super slow (like 100 kHZ) this could take as long as 5.1 ms as
> + * per the math: 10.2 us * (50000000 Hz / 100000 Hz) => 5.1 ms
> + * Hopefully we won't be running at 100 kHz, but we should still make
> + * sure we wait long enough.
> */
> - udelay(30);
> - regmap_read(rk_phy->reg_base,
> - rk_phy->reg_offset + GRF_EMMCPHY_STATUS,
> - &dllrdy);
> - dllrdy = (dllrdy >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK;
> + timeout = jiffies + msecs_to_jiffies(10);
> + do {
> + udelay(1);
> +
> + regmap_read(rk_phy->reg_base,
> + rk_phy->reg_offset + GRF_EMMCPHY_STATUS,
> + &dllrdy);
> + dllrdy = (dllrdy >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK;
> + if (dllrdy == PHYCTRL_DLLRDY_DONE)
> + break;
> + } while (!time_after(jiffies, timeout));
> +
> if (dllrdy != PHYCTRL_DLLRDY_DONE) {
> pr_err("rockchip_emmc_phy_power: dllrdy timeout.\n");
> return -ETIMEDOUT;
>
WARNING: multiple messages have this Message-ID (diff)
From: kishon@ti.com (Kishon Vijay Abraham I)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 01/11] phy: rockchip-emmc: Increase lock time allowance
Date: Mon, 20 Jun 2016 18:33:37 +0530 [thread overview]
Message-ID: <5767E9A9.5090308@ti.com> (raw)
In-Reply-To: <1465859076-4868-2-git-send-email-dianders@chromium.org>
On Tuesday 14 June 2016 04:34 AM, Douglas Anderson wrote:
> Previous PHY code waited a fixed amount of time for the DLL to lock at
> power on time. Unfortunately, the time for the DLL to lock is actually
> a bit more dynamic and can be longer if the card clock is slower.
>
> Instead of waiting a fixed 30 us, let's now dynamically wait until the
> lock bit gets set. We'll wait up to 10 ms which should be OK even if
> the card clock is at the super slow 100 kHz.
>
> On its own, this change makes the PHY power on code a little more
> robust. Before this change the PHY was relying on the eMMC code to make
> sure the PHY was only powered on when the card clock was set to at least
> 50 MHz before, though this reliance wasn't documented anywhere.
>
> This change will be even more useful in future changes where we actually
> need to be able to wait for a DLL lock at slower clock speeds.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
> Changes in v2:
> - Indicate that 5.1 ms is calculated (Shawn).
>
> drivers/phy/phy-rockchip-emmc.c | 28 ++++++++++++++++++++--------
> 1 file changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/phy/phy-rockchip-emmc.c b/drivers/phy/phy-rockchip-emmc.c
> index a69f53630e67..2d059c046978 100644
> --- a/drivers/phy/phy-rockchip-emmc.c
> +++ b/drivers/phy/phy-rockchip-emmc.c
> @@ -85,6 +85,7 @@ static int rockchip_emmc_phy_power(struct rockchip_emmc_phy *rk_phy,
> {
> unsigned int caldone;
> unsigned int dllrdy;
> + unsigned long timeout;
>
> /*
> * Keep phyctrl_pdb and phyctrl_endll low to allow
> @@ -137,15 +138,26 @@ static int rockchip_emmc_phy_power(struct rockchip_emmc_phy *rk_phy,
> PHYCTRL_ENDLL_MASK,
> PHYCTRL_ENDLL_SHIFT));
> /*
> - * After enable analog DLL circuits, we need an extra 10.2us
> - * for dll to be ready for work. But according to testing, we
> - * find some chips need more than 25us.
> + * After enabling analog DLL circuits docs say that we need 10.2 us if
> + * our source clock is at 50 MHz and that lock time scales linearly
> + * with clock speed. If we are powering on the PHY and the card clock
> + * is super slow (like 100 kHZ) this could take as long as 5.1 ms as
> + * per the math: 10.2 us * (50000000 Hz / 100000 Hz) => 5.1 ms
> + * Hopefully we won't be running at 100 kHz, but we should still make
> + * sure we wait long enough.
> */
> - udelay(30);
> - regmap_read(rk_phy->reg_base,
> - rk_phy->reg_offset + GRF_EMMCPHY_STATUS,
> - &dllrdy);
> - dllrdy = (dllrdy >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK;
> + timeout = jiffies + msecs_to_jiffies(10);
> + do {
> + udelay(1);
> +
> + regmap_read(rk_phy->reg_base,
> + rk_phy->reg_offset + GRF_EMMCPHY_STATUS,
> + &dllrdy);
> + dllrdy = (dllrdy >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK;
> + if (dllrdy == PHYCTRL_DLLRDY_DONE)
> + break;
> + } while (!time_after(jiffies, timeout));
> +
> if (dllrdy != PHYCTRL_DLLRDY_DONE) {
> pr_err("rockchip_emmc_phy_power: dllrdy timeout.\n");
> return -ETIMEDOUT;
>
WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Douglas Anderson <dianders@chromium.org>,
<ulf.hansson@linaro.org>, Heiko Stuebner <heiko@sntech.de>,
<robh+dt@kernel.org>
Cc: <shawn.lin@rock-chips.com>, <xzy.xu@rock-chips.com>,
<briannorris@chromium.org>, <adrian.hunter@intel.com>,
<linux-rockchip@lists.infradead.org>, <linux-mmc@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v2 01/11] phy: rockchip-emmc: Increase lock time allowance
Date: Mon, 20 Jun 2016 18:33:37 +0530 [thread overview]
Message-ID: <5767E9A9.5090308@ti.com> (raw)
In-Reply-To: <1465859076-4868-2-git-send-email-dianders@chromium.org>
On Tuesday 14 June 2016 04:34 AM, Douglas Anderson wrote:
> Previous PHY code waited a fixed amount of time for the DLL to lock at
> power on time. Unfortunately, the time for the DLL to lock is actually
> a bit more dynamic and can be longer if the card clock is slower.
>
> Instead of waiting a fixed 30 us, let's now dynamically wait until the
> lock bit gets set. We'll wait up to 10 ms which should be OK even if
> the card clock is at the super slow 100 kHz.
>
> On its own, this change makes the PHY power on code a little more
> robust. Before this change the PHY was relying on the eMMC code to make
> sure the PHY was only powered on when the card clock was set to at least
> 50 MHz before, though this reliance wasn't documented anywhere.
>
> This change will be even more useful in future changes where we actually
> need to be able to wait for a DLL lock at slower clock speeds.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
> Changes in v2:
> - Indicate that 5.1 ms is calculated (Shawn).
>
> drivers/phy/phy-rockchip-emmc.c | 28 ++++++++++++++++++++--------
> 1 file changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/phy/phy-rockchip-emmc.c b/drivers/phy/phy-rockchip-emmc.c
> index a69f53630e67..2d059c046978 100644
> --- a/drivers/phy/phy-rockchip-emmc.c
> +++ b/drivers/phy/phy-rockchip-emmc.c
> @@ -85,6 +85,7 @@ static int rockchip_emmc_phy_power(struct rockchip_emmc_phy *rk_phy,
> {
> unsigned int caldone;
> unsigned int dllrdy;
> + unsigned long timeout;
>
> /*
> * Keep phyctrl_pdb and phyctrl_endll low to allow
> @@ -137,15 +138,26 @@ static int rockchip_emmc_phy_power(struct rockchip_emmc_phy *rk_phy,
> PHYCTRL_ENDLL_MASK,
> PHYCTRL_ENDLL_SHIFT));
> /*
> - * After enable analog DLL circuits, we need an extra 10.2us
> - * for dll to be ready for work. But according to testing, we
> - * find some chips need more than 25us.
> + * After enabling analog DLL circuits docs say that we need 10.2 us if
> + * our source clock is at 50 MHz and that lock time scales linearly
> + * with clock speed. If we are powering on the PHY and the card clock
> + * is super slow (like 100 kHZ) this could take as long as 5.1 ms as
> + * per the math: 10.2 us * (50000000 Hz / 100000 Hz) => 5.1 ms
> + * Hopefully we won't be running at 100 kHz, but we should still make
> + * sure we wait long enough.
> */
> - udelay(30);
> - regmap_read(rk_phy->reg_base,
> - rk_phy->reg_offset + GRF_EMMCPHY_STATUS,
> - &dllrdy);
> - dllrdy = (dllrdy >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK;
> + timeout = jiffies + msecs_to_jiffies(10);
> + do {
> + udelay(1);
> +
> + regmap_read(rk_phy->reg_base,
> + rk_phy->reg_offset + GRF_EMMCPHY_STATUS,
> + &dllrdy);
> + dllrdy = (dllrdy >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK;
> + if (dllrdy == PHYCTRL_DLLRDY_DONE)
> + break;
> + } while (!time_after(jiffies, timeout));
> +
> if (dllrdy != PHYCTRL_DLLRDY_DONE) {
> pr_err("rockchip_emmc_phy_power: dllrdy timeout.\n");
> return -ETIMEDOUT;
>
next prev parent reply other threads:[~2016-06-20 13:03 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-13 23:04 [PATCH v2 0/11] Changes to support 150 MHz eMMC on rk3399 Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` [PATCH v2 02/11] mmc: sdhci-of-arasan: Always power the PHY off/on when clock changes Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-14 0:30 ` Shawn Lin
2016-06-14 0:30 ` Shawn Lin
[not found] ` <1465859076-4868-1-git-send-email-dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-06-13 23:04 ` [PATCH v2 01/11] phy: rockchip-emmc: Increase lock time allowance Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-14 0:28 ` Shawn Lin
2016-06-14 0:28 ` Shawn Lin
[not found] ` <1465859076-4868-2-git-send-email-dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-06-20 13:03 ` Kishon Vijay Abraham I [this message]
2016-06-20 13:03 ` Kishon Vijay Abraham I
2016-06-20 13:03 ` Kishon Vijay Abraham I
2016-06-13 23:04 ` [PATCH v2 03/11] Documentation: mmc: sdhci-of-arasan: Add soc-ctl-syscon for corecfg regs Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-14 0:33 ` Shawn Lin
2016-06-18 14:15 ` Heiko Stübner
2016-06-13 23:04 ` [PATCH v2 05/11] arm64: dts: rockchip: Add soc-ctl-syscon to sdhci for rk3399 Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-18 12:49 ` Heiko Stübner
2016-06-18 12:49 ` Heiko Stübner
2016-06-13 23:04 ` [PATCH v2 06/11] Documentation: mmc: sdhci-of-arasan: Add ability to export card clock Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-18 18:02 ` Heiko Stuebner
2016-06-13 23:04 ` [PATCH v2 08/11] Documentation: phy: Let the rockchip eMMC PHY get an exported " Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-16 18:42 ` Rob Herring
2016-06-16 18:42 ` Rob Herring
2016-06-18 21:48 ` Heiko Stübner
2016-06-18 21:48 ` Heiko Stübner
[not found] ` <1465859076-4868-9-git-send-email-dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-06-20 13:04 ` Kishon Vijay Abraham I
2016-06-20 13:04 ` Kishon Vijay Abraham I
2016-06-20 13:04 ` Kishon Vijay Abraham I
2016-06-13 23:04 ` [PATCH v2 10/11] phy: rockchip-emmc: Set phyctrl_frqsel based on " Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
[not found] ` <1465859076-4868-11-git-send-email-dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-06-18 12:20 ` Heiko Stübner
2016-06-18 12:20 ` Heiko Stübner
2016-06-18 12:20 ` Heiko Stübner
2016-06-20 16:48 ` Doug Anderson
2016-06-20 16:48 ` Doug Anderson
2016-06-20 16:48 ` Doug Anderson
2016-06-20 13:08 ` Kishon Vijay Abraham I
2016-06-20 13:08 ` Kishon Vijay Abraham I
2016-06-20 13:08 ` Kishon Vijay Abraham I
2016-06-13 23:04 ` [PATCH v2 11/11] arm64: dts: rockchip: Provide emmcclk to PHY for rk3399 Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-18 12:07 ` Heiko Stübner
2016-06-18 12:07 ` Heiko Stübner
2016-06-17 12:39 ` [PATCH v2 0/11] Changes to support 150 MHz eMMC on rk3399 Kishon Vijay Abraham I
2016-06-17 12:39 ` Kishon Vijay Abraham I
2016-06-17 12:39 ` Kishon Vijay Abraham I
2016-06-17 15:37 ` Doug Anderson
2016-06-17 15:37 ` Doug Anderson
2016-06-17 15:37 ` Doug Anderson
2016-06-13 23:04 ` [PATCH v2 04/11] mmc: sdhci-of-arasan: Properly set corecfg_baseclkfreq " Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-18 17:59 ` Heiko Stuebner
2016-06-18 17:59 ` Heiko Stuebner
2016-06-13 23:04 ` [PATCH v2 07/11] mmc: sdhci-of-arasan: Add ability to export card clock Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-15 16:40 ` Doug Anderson
2016-06-15 16:40 ` Doug Anderson
2016-06-13 23:04 ` [PATCH v2 09/11] phy: rockchip-emmc: Minor code cleanup in rockchip_emmc_phy_power_on/off() Douglas Anderson
2016-06-13 23:04 ` Douglas Anderson
2016-06-14 0:36 ` Shawn Lin
2016-06-14 0:36 ` Shawn Lin
[not found] ` <1465859076-4868-10-git-send-email-dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-06-20 13:04 ` Kishon Vijay Abraham I
2016-06-20 13:04 ` Kishon Vijay Abraham I
2016-06-20 13:04 ` Kishon Vijay Abraham I
2016-06-16 23:39 ` [PATCH v2 0/11] Changes to support 150 MHz eMMC on rk3399 Heiko Stuebner
2016-06-16 23:39 ` Heiko Stuebner
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=5767E9A9.5090308@ti.com \
--to=kishon-l0cymroini0@public.gmane.org \
--cc=adrian.hunter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org \
--cc=ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=xzy.xu-TNX95d0MmH7DzftRWevZcw@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 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.