From: Haibo Chen <haibo.chen@freescale.com> To: <ulf.hansson@linaro.org>, <aisheng.dong@freescale.com>, <fabio.estevam@freescale.com>, <shawn.guo@linaro.org>, <eric.nelson@boundarydevices.com>, <linux-mmc@vger.kernel.org> Cc: <linux-kernel@vger.kernel.org>, <haibo.chen@freescale.com> Subject: [PATCH v2 4/4] mmc: sdhci-esdhc-imx: set back the burst_length_enable bit to 1 Date: Tue, 23 Jun 2015 19:48:03 +0800 [thread overview] Message-ID: <1435060083-2606-5-git-send-email-haibo.chen@freescale.com> (raw) In-Reply-To: <1435060083-2606-1-git-send-email-haibo.chen@freescale.com> Currently we find that if a usdhc is choosed to boot system, then ROM code will set the burst length enable bit of this usdhc as 0. This will make performance drop a lot if this usdhc's burst length is 16. So this patch set back the burst_length_enable bit as 1, which is the default value, and means burst length is enabled for INCR. Signed-off-by: Haibo Chen <haibo.chen@freescale.com> --- drivers/mmc/host/sdhci-esdhc-imx.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 1f0e0d9..e6a1995 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -32,6 +32,7 @@ #include "sdhci-esdhc.h" #define ESDHC_CTRL_D3CD 0x08 +#define ESDHC_BURST_LEN_EN_INCR (1 << 27) /* VENDOR SPEC register */ #define ESDHC_VENDOR_SPEC 0xc0 #define ESDHC_VENDOR_SPEC_SDIO_QUIRK (1 << 1) @@ -1088,6 +1089,16 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; host->mmc->caps |= MMC_CAP_1_8V_DDR; + /* + * ROM code will change the burst_length_enable setting to + * zero if this usdhc is choosed to boot system. Change it + * back here, otherwise it will impact the performance a + * lot if the burst length is 16. + */ + writel(readl(host->ioaddr + SDHCI_HOST_CONTROL) + | ESDHC_BURST_LEN_EN_INCR, + host->ioaddr + SDHCI_HOST_CONTROL); + if (!(imx_data->socdata->flags & ESDHC_FLAG_HS200)) host->quirks2 |= SDHCI_QUIRK2_BROKEN_HS200; -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Haibo Chen <haibo.chen@freescale.com> To: ulf.hansson@linaro.org, aisheng.dong@freescale.com, fabio.estevam@freescale.com, shawn.guo@linaro.org, eric.nelson@boundarydevices.com, linux-mmc@vger.kernel.org Cc: linux-kernel@vger.kernel.org, haibo.chen@freescale.com Subject: [PATCH v2 4/4] mmc: sdhci-esdhc-imx: set back the burst_length_enable bit to 1 Date: Tue, 23 Jun 2015 19:48:03 +0800 [thread overview] Message-ID: <1435060083-2606-5-git-send-email-haibo.chen@freescale.com> (raw) In-Reply-To: <1435060083-2606-1-git-send-email-haibo.chen@freescale.com> Currently we find that if a usdhc is choosed to boot system, then ROM code will set the burst length enable bit of this usdhc as 0. This will make performance drop a lot if this usdhc's burst length is 16. So this patch set back the burst_length_enable bit as 1, which is the default value, and means burst length is enabled for INCR. Signed-off-by: Haibo Chen <haibo.chen@freescale.com> --- drivers/mmc/host/sdhci-esdhc-imx.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 1f0e0d9..e6a1995 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -32,6 +32,7 @@ #include "sdhci-esdhc.h" #define ESDHC_CTRL_D3CD 0x08 +#define ESDHC_BURST_LEN_EN_INCR (1 << 27) /* VENDOR SPEC register */ #define ESDHC_VENDOR_SPEC 0xc0 #define ESDHC_VENDOR_SPEC_SDIO_QUIRK (1 << 1) @@ -1088,6 +1089,16 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; host->mmc->caps |= MMC_CAP_1_8V_DDR; + /* + * ROM code will change the burst_length_enable setting to + * zero if this usdhc is choosed to boot system. Change it + * back here, otherwise it will impact the performance a + * lot if the burst length is 16. + */ + writel(readl(host->ioaddr + SDHCI_HOST_CONTROL) + | ESDHC_BURST_LEN_EN_INCR, + host->ioaddr + SDHCI_HOST_CONTROL); + if (!(imx_data->socdata->flags & ESDHC_FLAG_HS200)) host->quirks2 |= SDHCI_QUIRK2_BROKEN_HS200; -- 1.9.1
next prev parent reply other threads:[~2015-06-23 12:00 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-06-23 11:47 [PATCH v2 0/4] mmc: imx: a few fixes and add a new feature Haibo Chen 2015-06-23 11:47 ` Haibo Chen 2015-06-23 11:48 ` [PATCH v2 1/4] mmc: sdhci-esdhc-imx: add imx7d support and support HS400 Haibo Chen 2015-06-23 11:48 ` Haibo Chen 2015-06-23 11:48 ` [PATCH v2 2/4] mmc: sdhci-esdhc-imx: add tuning-step seting support Haibo Chen 2015-06-23 11:48 ` Haibo Chen 2015-06-23 11:48 ` [PATCH v2 3/4] mmc: sdhci-esdhc-imx: config watermark level and burst length Haibo Chen 2015-06-23 11:48 ` Haibo Chen 2015-06-23 11:48 ` Haibo Chen [this message] 2015-06-23 11:48 ` [PATCH v2 4/4] mmc: sdhci-esdhc-imx: set back the burst_length_enable bit to 1 Haibo Chen
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=1435060083-2606-5-git-send-email-haibo.chen@freescale.com \ --to=haibo.chen@freescale.com \ --cc=aisheng.dong@freescale.com \ --cc=eric.nelson@boundarydevices.com \ --cc=fabio.estevam@freescale.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=shawn.guo@linaro.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.