From: Aapo Vienamo <avienamo@nvidia.com> To: Ulf Hansson <ulf.hansson@linaro.org>, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Thierry Reding <thierry.reding@gmail.com>, Jonathan Hunter <jonathanh@nvidia.com>, Adrian Hunter <adrian.hunter@intel.com>, Mikko Perttunen <mperttunen@nvidia.com> Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, Aapo Vienamo <avienamo@nvidia.com> Subject: [PATCH 3/8] mmc: tegra: Implement HS400 enhanced strobe Date: Tue, 7 Aug 2018 16:59:59 +0300 [thread overview] Message-ID: <1533650404-18125-4-git-send-email-avienamo@nvidia.com> (raw) In-Reply-To: <1533650404-18125-1-git-send-email-avienamo@nvidia.com> Implement HS400 enhanced strobe. Signed-off-by: Aapo Vienamo <avienamo@nvidia.com> --- drivers/mmc/host/sdhci-tegra.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 426f7ea..d81143b 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -43,6 +43,9 @@ #define SDHCI_CLOCK_CTRL_PADPIPE_CLKEN_OVERRIDE BIT(3) #define SDHCI_CLOCK_CTRL_SPI_MODE_CLKEN_OVERRIDE BIT(2) +#define SDHCI_TEGRA_VENDOR_SYS_SW_CTRL 0x104 +#define SDHCI_TEGRA_SYS_SW_CTRL_ENHANCED_STROBE BIT(31) + #define SDHCI_TEGRA_VENDOR_CAP_OVERRIDES 0x10c #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_MASK 0x00003f00 #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_SHIFT 8 @@ -271,6 +274,22 @@ static void tegra_sdhci_set_tap(struct sdhci_host *host, unsigned int tap) } } +static void tegra_sdhci_hs400_enhanced_strobe(struct mmc_host *mmc, + struct mmc_ios *ios) +{ + struct sdhci_host *host = mmc_priv(mmc); + u32 reg; + + reg = sdhci_readl(host, SDHCI_TEGRA_VENDOR_SYS_SW_CTRL); + pr_err("enhanced strobe: %d\n", ios->enhanced_strobe); + if (ios->enhanced_strobe) + reg |= SDHCI_TEGRA_SYS_SW_CTRL_ENHANCED_STROBE; + else + reg &= ~SDHCI_TEGRA_SYS_SW_CTRL_ENHANCED_STROBE; + sdhci_writel(host, reg, SDHCI_TEGRA_VENDOR_SYS_SW_CTRL); + +} + static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); @@ -947,6 +966,9 @@ static int sdhci_tegra_probe(struct platform_device *pdev) sdhci_tegra_start_signal_voltage_switch; } + host->mmc_host_ops.hs400_enhanced_strobe = + tegra_sdhci_hs400_enhanced_strobe; + rc = mmc_of_parse(host->mmc); if (rc) goto err_parse_dt; -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Aapo Vienamo <avienamo@nvidia.com> To: Ulf Hansson <ulf.hansson@linaro.org>, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Thierry Reding <thierry.reding@gmail.com>, Jonathan Hunter <jonathanh@nvidia.com>, Adrian Hunter <adrian.hunter@intel.com>, Mikko Perttunen <mperttunen@nvidia.com> Cc: <linux-mmc@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-tegra@vger.kernel.org>, <linux-kernel@vger.kernel.org>, Aapo Vienamo <avienamo@nvidia.com> Subject: [PATCH 3/8] mmc: tegra: Implement HS400 enhanced strobe Date: Tue, 7 Aug 2018 16:59:59 +0300 [thread overview] Message-ID: <1533650404-18125-4-git-send-email-avienamo@nvidia.com> (raw) In-Reply-To: <1533650404-18125-1-git-send-email-avienamo@nvidia.com> Implement HS400 enhanced strobe. Signed-off-by: Aapo Vienamo <avienamo@nvidia.com> --- drivers/mmc/host/sdhci-tegra.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 426f7ea..d81143b 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -43,6 +43,9 @@ #define SDHCI_CLOCK_CTRL_PADPIPE_CLKEN_OVERRIDE BIT(3) #define SDHCI_CLOCK_CTRL_SPI_MODE_CLKEN_OVERRIDE BIT(2) +#define SDHCI_TEGRA_VENDOR_SYS_SW_CTRL 0x104 +#define SDHCI_TEGRA_SYS_SW_CTRL_ENHANCED_STROBE BIT(31) + #define SDHCI_TEGRA_VENDOR_CAP_OVERRIDES 0x10c #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_MASK 0x00003f00 #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_SHIFT 8 @@ -271,6 +274,22 @@ static void tegra_sdhci_set_tap(struct sdhci_host *host, unsigned int tap) } } +static void tegra_sdhci_hs400_enhanced_strobe(struct mmc_host *mmc, + struct mmc_ios *ios) +{ + struct sdhci_host *host = mmc_priv(mmc); + u32 reg; + + reg = sdhci_readl(host, SDHCI_TEGRA_VENDOR_SYS_SW_CTRL); + pr_err("enhanced strobe: %d\n", ios->enhanced_strobe); + if (ios->enhanced_strobe) + reg |= SDHCI_TEGRA_SYS_SW_CTRL_ENHANCED_STROBE; + else + reg &= ~SDHCI_TEGRA_SYS_SW_CTRL_ENHANCED_STROBE; + sdhci_writel(host, reg, SDHCI_TEGRA_VENDOR_SYS_SW_CTRL); + +} + static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); @@ -947,6 +966,9 @@ static int sdhci_tegra_probe(struct platform_device *pdev) sdhci_tegra_start_signal_voltage_switch; } + host->mmc_host_ops.hs400_enhanced_strobe = + tegra_sdhci_hs400_enhanced_strobe; + rc = mmc_of_parse(host->mmc); if (rc) goto err_parse_dt; -- 2.7.4
next prev parent reply other threads:[~2018-08-07 13:59 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-08-07 13:59 [PATCH 0/8] Tegra SDHCI support HS400 on Tegra210 and Tegra186 Aapo Vienamo 2018-08-07 13:59 ` Aapo Vienamo 2018-08-07 13:59 ` [PATCH 1/8] dt-bindings: mmc: Add DQS trim value to Tegra SDHCI Aapo Vienamo 2018-08-07 13:59 ` Aapo Vienamo 2018-08-09 11:36 ` Thierry Reding 2018-08-09 11:45 ` Aapo Vienamo 2018-08-09 11:45 ` Aapo Vienamo 2018-08-09 13:46 ` Thierry Reding 2018-08-09 14:06 ` Aapo Vienamo 2018-08-09 14:06 ` Aapo Vienamo 2018-08-09 14:09 ` Thierry Reding 2018-08-07 13:59 ` [PATCH 2/8] mmc: tegra: Parse and program DQS trim value Aapo Vienamo 2018-08-07 13:59 ` Aapo Vienamo 2018-08-09 11:40 ` Thierry Reding 2018-08-09 11:42 ` Thierry Reding 2018-08-07 13:59 ` Aapo Vienamo [this message] 2018-08-07 13:59 ` [PATCH 3/8] mmc: tegra: Implement HS400 enhanced strobe Aapo Vienamo 2018-08-09 11:43 ` Thierry Reding 2018-08-09 12:22 ` Aapo Vienamo 2018-08-09 12:22 ` Aapo Vienamo 2018-08-09 13:47 ` Thierry Reding 2018-08-07 14:00 ` [PATCH 4/8] mmc: tegra: Implement HS400 delay line calibration Aapo Vienamo 2018-08-07 14:00 ` Aapo Vienamo 2018-08-09 11:48 ` Thierry Reding 2018-08-09 12:29 ` Aapo Vienamo 2018-08-09 12:29 ` Aapo Vienamo 2018-08-07 14:00 ` [PATCH 5/8] arm64: dts: tegra186: Add SDMMC4 DQS trim value Aapo Vienamo 2018-08-07 14:00 ` Aapo Vienamo 2018-08-09 11:49 ` Thierry Reding 2018-08-09 12:02 ` Aapo Vienamo 2018-08-09 12:02 ` Aapo Vienamo 2018-08-09 12:23 ` Peter Geis 2018-08-09 12:37 ` Aapo Vienamo 2018-08-09 12:37 ` Aapo Vienamo 2018-08-09 12:50 ` Peter Geis 2018-08-09 13:52 ` Thierry Reding 2018-08-07 14:00 ` [PATCH 6/8] arm64: dts: tegra210: " Aapo Vienamo 2018-08-07 14:00 ` Aapo Vienamo 2018-08-07 14:00 ` [PATCH 7/8] arm64: dts: tegra186: Enable HS400 Aapo Vienamo 2018-08-07 14:00 ` Aapo Vienamo 2018-08-07 14:00 ` [PATCH 8/8] arm64: dts: tegra210: " Aapo Vienamo 2018-08-07 14:00 ` Aapo Vienamo
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=1533650404-18125-4-git-send-email-avienamo@nvidia.com \ --to=avienamo@nvidia.com \ --cc=adrian.hunter@intel.com \ --cc=devicetree@vger.kernel.org \ --cc=jonathanh@nvidia.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=linux-tegra@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mperttunen@nvidia.com \ --cc=robh+dt@kernel.org \ --cc=thierry.reding@gmail.com \ --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.