devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/2] dt-bindings: sdhci-fujitsu: document cmd-dat-delay property
@ 2017-11-06 11:40 Ard Biesheuvel
  2017-11-06 11:40 ` [PATCH v2 2/2] sdhci-fujitsu: add support for setting the CMD_DAT_DELAY attribute Ard Biesheuvel
       [not found] ` <20171106114050.15169-1-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  0 siblings, 2 replies; 4+ messages in thread
From: Ard Biesheuvel @ 2017-11-06 11:40 UTC (permalink / raw)
  To: ulf.hansson-QSEj5FYQhm4dnm+yROfE0A,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
	adrian.hunter-ral2JQCrhuEAvxtiuMwx3w,
	linux-mmc-u79uwXL29TY76Z2rM5mHXA
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Ard Biesheuvel

Document a new boolean property of the sdhci-fujitsu binding that
indicates whether the CMD_DAT_DELAY bit needs to be set in the
F_SDH30_ESD_CONTROL register.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
index de2c53cff4f1..3ee9263adf73 100644
--- a/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
+++ b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
@@ -15,6 +15,8 @@ Required properties:
 Optional properties:
 - vqmmc-supply: phandle to the regulator device tree node, mentioned
   as the VCCQ/VDD_IO supply in the eMMC/SD specs.
+- fujitsu,cmd-dat-delay-select: boolean property indicating that this host
+  requires the CMD_DAT_DELAY control to be enabled.
 
 Example:
 
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] sdhci-fujitsu: add support for setting the CMD_DAT_DELAY attribute
  2017-11-06 11:40 [PATCH v2 1/2] dt-bindings: sdhci-fujitsu: document cmd-dat-delay property Ard Biesheuvel
@ 2017-11-06 11:40 ` Ard Biesheuvel
  2017-11-06 15:00   ` Ulf Hansson
       [not found] ` <20171106114050.15169-1-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  1 sibling, 1 reply; 4+ messages in thread
From: Ard Biesheuvel @ 2017-11-06 11:40 UTC (permalink / raw)
  To: ulf.hansson, robh+dt, mark.rutland, adrian.hunter, linux-mmc
  Cc: devicetree, Ard Biesheuvel

The Socionext SynQuacer SoC inherits this IP from Fujitsu, but
requires the F_SDH30_CMD_DAT_DELAY bit to be set in the
F_SDH30_ESD_CONTROL control register. So set this bit if the
DT node has the 'fujitsu,cmd-dat-delay-select' property.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 drivers/mmc/host/sdhci_f_sdh30.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci_f_sdh30.c b/drivers/mmc/host/sdhci_f_sdh30.c
index 111b66f5439b..c5bf69ef7e40 100644
--- a/drivers/mmc/host/sdhci_f_sdh30.c
+++ b/drivers/mmc/host/sdhci_f_sdh30.c
@@ -13,6 +13,7 @@
 #include <linux/err.h>
 #include <linux/delay.h>
 #include <linux/module.h>
+#include <linux/property.h>
 #include <linux/clk.h>
 
 #include "sdhci-pltfm.h"
@@ -45,8 +46,9 @@
 struct f_sdhost_priv {
 	struct clk *clk_iface;
 	struct clk *clk;
-	u32 vendor_hs200;
 	struct device *dev;
+	u32 vendor_hs200;
+	bool enable_cmd_dat_delay;
 };
 
 static void sdhci_f_sdh30_soft_voltage_switch(struct sdhci_host *host)
@@ -84,10 +86,19 @@ static unsigned int sdhci_f_sdh30_get_min_clock(struct sdhci_host *host)
 
 static void sdhci_f_sdh30_reset(struct sdhci_host *host, u8 mask)
 {
+	struct f_sdhost_priv *priv = sdhci_priv(host);
+	u32 ctl;
+
 	if (sdhci_readw(host, SDHCI_CLOCK_CONTROL) == 0)
 		sdhci_writew(host, 0xBC01, SDHCI_CLOCK_CONTROL);
 
 	sdhci_reset(host, mask);
+
+	if (priv->enable_cmd_dat_delay) {
+		ctl = sdhci_readl(host, F_SDH30_ESD_CONTROL);
+		ctl |= F_SDH30_CMD_DAT_DELAY;
+		sdhci_writel(host, ctl, F_SDH30_ESD_CONTROL);
+	}
 }
 
 static const struct sdhci_ops sdhci_f_sdh30_ops = {
@@ -126,6 +137,11 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)
 	host->quirks2 = SDHCI_QUIRK2_SUPPORT_SINGLE |
 			SDHCI_QUIRK2_TUNING_WORK_AROUND;
 
+	if (device_property_read_bool(dev, "fujitsu,cmd-dat-delay-select")) {
+		dev_info(dev, "Setting cmd-dat-delay\n");
+		priv->enable_cmd_dat_delay = true;
+	}
+
 	ret = mmc_of_parse(host->mmc);
 	if (ret)
 		goto err;
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: sdhci-fujitsu: document cmd-dat-delay property
       [not found] ` <20171106114050.15169-1-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
@ 2017-11-06 14:33   ` Rob Herring
  0 siblings, 0 replies; 4+ messages in thread
From: Rob Herring @ 2017-11-06 14:33 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Ulf Hansson, Mark Rutland, Adrian Hunter,
	linux-mmc-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA

On Mon, Nov 6, 2017 at 5:40 AM, Ard Biesheuvel
<ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> Document a new boolean property of the sdhci-fujitsu binding that
> indicates whether the CMD_DAT_DELAY bit needs to be set in the
> F_SDH30_ESD_CONTROL register.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
>  Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt | 2 ++
>  1 file changed, 2 insertions(+)

Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 2/2] sdhci-fujitsu: add support for setting the CMD_DAT_DELAY attribute
  2017-11-06 11:40 ` [PATCH v2 2/2] sdhci-fujitsu: add support for setting the CMD_DAT_DELAY attribute Ard Biesheuvel
@ 2017-11-06 15:00   ` Ulf Hansson
  0 siblings, 0 replies; 4+ messages in thread
From: Ulf Hansson @ 2017-11-06 15:00 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Rob Herring, Mark Rutland, Adrian Hunter, linux-mmc, devicetree

On 6 November 2017 at 12:40, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> The Socionext SynQuacer SoC inherits this IP from Fujitsu, but
> requires the F_SDH30_CMD_DAT_DELAY bit to be set in the
> F_SDH30_ESD_CONTROL control register. So set this bit if the
> DT node has the 'fujitsu,cmd-dat-delay-select' property.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
>  drivers/mmc/host/sdhci_f_sdh30.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci_f_sdh30.c b/drivers/mmc/host/sdhci_f_sdh30.c
> index 111b66f5439b..c5bf69ef7e40 100644
> --- a/drivers/mmc/host/sdhci_f_sdh30.c
> +++ b/drivers/mmc/host/sdhci_f_sdh30.c
> @@ -13,6 +13,7 @@
>  #include <linux/err.h>
>  #include <linux/delay.h>
>  #include <linux/module.h>
> +#include <linux/property.h>
>  #include <linux/clk.h>
>
>  #include "sdhci-pltfm.h"
> @@ -45,8 +46,9 @@
>  struct f_sdhost_priv {
>         struct clk *clk_iface;
>         struct clk *clk;
> -       u32 vendor_hs200;
>         struct device *dev;
> +       u32 vendor_hs200;

No need to change the above.

> +       bool enable_cmd_dat_delay;
>  };
>
>  static void sdhci_f_sdh30_soft_voltage_switch(struct sdhci_host *host)
> @@ -84,10 +86,19 @@ static unsigned int sdhci_f_sdh30_get_min_clock(struct sdhci_host *host)
>
>  static void sdhci_f_sdh30_reset(struct sdhci_host *host, u8 mask)
>  {
> +       struct f_sdhost_priv *priv = sdhci_priv(host);
> +       u32 ctl;
> +
>         if (sdhci_readw(host, SDHCI_CLOCK_CONTROL) == 0)
>                 sdhci_writew(host, 0xBC01, SDHCI_CLOCK_CONTROL);
>
>         sdhci_reset(host, mask);
> +
> +       if (priv->enable_cmd_dat_delay) {
> +               ctl = sdhci_readl(host, F_SDH30_ESD_CONTROL);
> +               ctl |= F_SDH30_CMD_DAT_DELAY;
> +               sdhci_writel(host, ctl, F_SDH30_ESD_CONTROL);
> +       }
>  }
>
>  static const struct sdhci_ops sdhci_f_sdh30_ops = {
> @@ -126,6 +137,11 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)
>         host->quirks2 = SDHCI_QUIRK2_SUPPORT_SINGLE |
>                         SDHCI_QUIRK2_TUNING_WORK_AROUND;
>
> +       if (device_property_read_bool(dev, "fujitsu,cmd-dat-delay-select")) {
> +               dev_info(dev, "Setting cmd-dat-delay\n");
> +               priv->enable_cmd_dat_delay = true;
> +       }

I don't think there is need to print something due to the parsing.
Let's instead simplify this with:

priv->enable_cmd_dat_delay = device_property_read_bool(dev,
"fujitsu,cmd-dat-delay-select");

> +
>         ret = mmc_of_parse(host->mmc);
>         if (ret)
>                 goto err;
> --
> 2.11.0
>

Kind regards
Uffe

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-11-06 15:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-06 11:40 [PATCH v2 1/2] dt-bindings: sdhci-fujitsu: document cmd-dat-delay property Ard Biesheuvel
2017-11-06 11:40 ` [PATCH v2 2/2] sdhci-fujitsu: add support for setting the CMD_DAT_DELAY attribute Ard Biesheuvel
2017-11-06 15:00   ` Ulf Hansson
     [not found] ` <20171106114050.15169-1-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-11-06 14:33   ` [PATCH v2 1/2] dt-bindings: sdhci-fujitsu: document cmd-dat-delay property Rob Herring

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).