From: Dong Aisheng <aisheng.dong@nxp.com> To: linux-mmc@vger.kernel.org Cc: aisheng.dong@nxp.com, ulf.hansson@linaro.org, dongas86@gmail.com, chris@printf.net, haibo.chen@nxp.com, adrian.hunter@intel.com, shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH V2 10/15] mmc: sdhci-esdhc-imx: enable hw auto retuning for MAN_TUNING Date: Tue, 12 Jul 2016 15:46:19 +0800 [thread overview] Message-ID: <1468309584-3591-11-git-send-email-aisheng.dong@nxp.com> (raw) In-Reply-To: <1468309584-3591-1-git-send-email-aisheng.dong@nxp.com> Indicating hw auto retuning support for mx6qdl in the fake caps_1 register and enable auto retuning in post_tuning process after tuning completes. Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- drivers/mmc/host/sdhci-esdhc-imx.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index c90aa07b106f..ac2c83af7440 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -302,7 +302,8 @@ static u32 esdhc_readl_le(struct sdhci_host *host, int reg) /* imx6q/dl does not have cap_1 register, fake one */ val = SDHCI_SUPPORT_DDR50 | SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 - | SDHCI_USE_SDR50_TUNING; + | SDHCI_USE_SDR50_TUNING + | (SDHCI_TUNING_MODE_3 << SDHCI_RETUNING_MODE_SHIFT); if (imx_data->socdata->flags & ESDHC_FLAG_HS400) val |= SDHCI_SUPPORT_HS400; @@ -472,10 +473,13 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg) writel(new_val, host->ioaddr + ESDHC_VENDOR_SPEC); if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) { new_val = readl(host->ioaddr + ESDHC_MIX_CTRL); - if (val & SDHCI_CTRL_TUNED_CLK) + if (val & SDHCI_CTRL_TUNED_CLK) { new_val |= ESDHC_MIX_CTRL_SMPCLK_SEL; - else + new_val |= ESDHC_MIX_CTRL_AUTO_TUNE_EN; + } else { new_val &= ~ESDHC_MIX_CTRL_SMPCLK_SEL; + new_val &= ~ESDHC_MIX_CTRL_AUTO_TUNE_EN; + } writel(new_val , host->ioaddr + ESDHC_MIX_CTRL); } else if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING) { u32 v = readl(host->ioaddr + SDHCI_ACMD12_ERR); @@ -761,6 +765,7 @@ static void esdhc_post_tuning(struct sdhci_host *host) reg = readl(host->ioaddr + ESDHC_MIX_CTRL); reg &= ~ESDHC_MIX_CTRL_EXE_TUNE; + reg |= ESDHC_MIX_CTRL_AUTO_TUNE_EN; writel(reg, host->ioaddr + ESDHC_MIX_CTRL); } -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: aisheng.dong@nxp.com (Dong Aisheng) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH V2 10/15] mmc: sdhci-esdhc-imx: enable hw auto retuning for MAN_TUNING Date: Tue, 12 Jul 2016 15:46:19 +0800 [thread overview] Message-ID: <1468309584-3591-11-git-send-email-aisheng.dong@nxp.com> (raw) In-Reply-To: <1468309584-3591-1-git-send-email-aisheng.dong@nxp.com> Indicating hw auto retuning support for mx6qdl in the fake caps_1 register and enable auto retuning in post_tuning process after tuning completes. Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- drivers/mmc/host/sdhci-esdhc-imx.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index c90aa07b106f..ac2c83af7440 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -302,7 +302,8 @@ static u32 esdhc_readl_le(struct sdhci_host *host, int reg) /* imx6q/dl does not have cap_1 register, fake one */ val = SDHCI_SUPPORT_DDR50 | SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 - | SDHCI_USE_SDR50_TUNING; + | SDHCI_USE_SDR50_TUNING + | (SDHCI_TUNING_MODE_3 << SDHCI_RETUNING_MODE_SHIFT); if (imx_data->socdata->flags & ESDHC_FLAG_HS400) val |= SDHCI_SUPPORT_HS400; @@ -472,10 +473,13 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg) writel(new_val, host->ioaddr + ESDHC_VENDOR_SPEC); if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) { new_val = readl(host->ioaddr + ESDHC_MIX_CTRL); - if (val & SDHCI_CTRL_TUNED_CLK) + if (val & SDHCI_CTRL_TUNED_CLK) { new_val |= ESDHC_MIX_CTRL_SMPCLK_SEL; - else + new_val |= ESDHC_MIX_CTRL_AUTO_TUNE_EN; + } else { new_val &= ~ESDHC_MIX_CTRL_SMPCLK_SEL; + new_val &= ~ESDHC_MIX_CTRL_AUTO_TUNE_EN; + } writel(new_val , host->ioaddr + ESDHC_MIX_CTRL); } else if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING) { u32 v = readl(host->ioaddr + SDHCI_ACMD12_ERR); @@ -761,6 +765,7 @@ static void esdhc_post_tuning(struct sdhci_host *host) reg = readl(host->ioaddr + ESDHC_MIX_CTRL); reg &= ~ESDHC_MIX_CTRL_EXE_TUNE; + reg |= ESDHC_MIX_CTRL_AUTO_TUNE_EN; writel(reg, host->ioaddr + ESDHC_MIX_CTRL); } -- 1.9.1
next prev parent reply other threads:[~2016-07-12 7:46 UTC|newest] Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-07-12 7:46 [PATCH V2 00/15] a few sdhci/imx clean up and fix patches Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 01/15] mmc: sdhci: using common mmc_regulator_set_vqmmc() Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-21 7:06 ` Adrian Hunter 2016-07-21 7:06 ` Adrian Hunter 2016-07-12 7:46 ` [PATCH V2 02/15] mmc: sdhci-esdhc-imx: remove SDHCI_QUIRK_BROKEN_TIMEOUT_VAL Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 03/15] mmc: sdhci-esdhc-imx: add esdhc specific suspend resume callback Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 04/15] mmc: sdhci-esdhc-imx: restore watermark level setting after resume Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-21 7:18 ` Adrian Hunter 2016-07-21 7:18 ` Adrian Hunter 2016-07-12 7:46 ` [PATCH V2 05/15] mmc: sdhci-esdhci-imx: disable DLL delay line settings explicitly Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 06/15] mmc: sdhci-esdhc-imx: support setting tuning start point Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 07/15] doc: dt: fsl-imx-esdhc: add set tuning start point binding Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 13:59 ` Andrew Lunn 2016-07-12 13:59 ` Andrew Lunn 2016-07-13 9:10 ` Dong Aisheng 2016-07-13 9:10 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 08/15] mmc: sdhci: add standard hw auto retuning support Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-21 7:46 ` Adrian Hunter 2016-07-21 7:46 ` Adrian Hunter 2016-07-12 7:46 ` [PATCH V2 09/15] mmc: sdhci-esdhc-imx: enable hw auto retuning for STD_TUNING Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng [this message] 2016-07-12 7:46 ` [PATCH V2 10/15] mmc: sdhci-esdhc-imx: enable hw auto retuning for MAN_TUNING Dong Aisheng 2016-08-15 14:59 ` [V2, " Gary Bisson 2016-08-15 14:59 ` Gary Bisson 2016-08-16 10:18 ` Dong Aisheng 2016-08-16 10:18 ` Dong Aisheng 2016-08-16 12:44 ` Gary Bisson 2016-08-16 12:44 ` Gary Bisson 2016-08-17 14:31 ` Dong Aisheng 2016-08-17 14:31 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 11/15] mmc: sdhci-esdhc-imx: fix strobe DLL lock wrong clock issue Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 12/15] mmc: sdhci-esdhc-imx: factor out hw related initialization into function Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-21 8:11 ` Adrian Hunter 2016-07-21 8:11 ` Adrian Hunter 2016-07-12 7:46 ` [PATCH V2 13/15] mmc: sdhci-esdhc-imx: move tuning static configuration into hwinit function Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-12 7:46 ` [PATCH V2 14/15] mmc: sdhci-esdhci-imx: re-initialize hw state after resume Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-21 8:11 ` Adrian Hunter 2016-07-21 8:11 ` Adrian Hunter 2016-07-12 7:46 ` [PATCH V2 15/15] mmc: sdhci-esdhc-imx: clear tuning bits during driver probe Dong Aisheng 2016-07-12 7:46 ` Dong Aisheng 2016-07-21 8:33 ` Adrian Hunter 2016-07-21 8:33 ` Adrian Hunter 2016-07-12 13:54 ` [PATCH V2 00/15] a few sdhci/imx clean up and fix patches Andrew Lunn 2016-07-12 13:54 ` Andrew Lunn 2016-07-13 8:55 ` Dong Aisheng 2016-07-13 8:55 ` Dong Aisheng 2016-07-13 13:40 ` Andrew Lunn 2016-07-13 13:40 ` Andrew Lunn 2016-07-21 9:32 ` Adrian Hunter 2016-07-21 9:32 ` Adrian Hunter 2016-07-21 10:23 ` Dong Aisheng 2016-07-21 10:23 ` Dong Aisheng 2016-07-23 9:37 ` Ulf Hansson 2016-07-23 9:37 ` Ulf Hansson
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=1468309584-3591-11-git-send-email-aisheng.dong@nxp.com \ --to=aisheng.dong@nxp.com \ --cc=adrian.hunter@intel.com \ --cc=chris@printf.net \ --cc=dongas86@gmail.com \ --cc=haibo.chen@nxp.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-mmc@vger.kernel.org \ --cc=shawnguo@kernel.org \ --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: linkBe 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.