devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Vincent Yang <vincent.yang.fujitsu@gmail.com>
Cc: "chris@printf.net" <chris@printf.net>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"anton@enomsg.org" <anton@enomsg.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"patches@linaro.org" <patches@linaro.org>,
	"andy.green@linaro.org" <andy.green@linaro.org>,
	"jaswinder.singh@linaro.org" <jaswinder.singh@linaro.org>,
	"Vincent.Yang@tw.fujitsu.com" <Vincent.Yang@tw.fujitsu.com>
Subject: Re: [RFC PATCH v2 4/6] mmc: sdhci: host: add new f_sdh30
Date: Thu, 26 Jun 2014 12:03:51 +0100	[thread overview]
Message-ID: <20140626110351.GN15240@leverpostej> (raw)
In-Reply-To: <1403763812-5495-5-git-send-email-Vincent.Yang@tw.fujitsu.com>

On Thu, Jun 26, 2014 at 07:23:30AM +0100, Vincent Yang wrote:
> This patch adds new host controller driver for
> Fujitsu SDHCI controller f_sdh30.
>
> Signed-off-by: Vincent Yang <Vincent.Yang@tw.fujitsu.com>
> ---
>  .../devicetree/bindings/mmc/sdhci-fujitsu.txt      |  35 +++
>  drivers/mmc/host/Kconfig                           |   7 +
>  drivers/mmc/host/Makefile                          |   1 +
>  drivers/mmc/host/sdhci_f_sdh30.c                   | 346 +++++++++++++++++++++
>  drivers/mmc/host/sdhci_f_sdh30.h                   |  40 +++
>  5 files changed, 429 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
>  create mode 100644 drivers/mmc/host/sdhci_f_sdh30.c
>  create mode 100644 drivers/mmc/host/sdhci_f_sdh30.h
>
> diff --git a/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
> new file mode 100644
> index 0000000..40add438
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
> @@ -0,0 +1,35 @@
> +* Fujitsu SDHCI controller
> +
> +This file documents differences between the core properties in mmc.txt
> +and the properties used by the sdhci_f_sdh30 driver.
> +
> +Required properties:
> +- compatible: "fujitsu,f_sdh30"

Please use '-' rather than '_' in compatible strings.

This seems to be the name of the driver. What is the precise name of the
IP block?

> +- voltage-ranges : two cells are required, first cell specifies minimum
> +  slot voltage (mV), second cell specifies maximum slot voltage (mV).
> +  Several ranges could be specified.

Describe this as a list of pairs, it's confusing otherwise.

I'm not sure I follow what having multiple pairs implies.

> +Optional properties:
> +- gpios: This is one optional gpio for controlling a power mux which
> +  switches between two power supplies. 3.3V is selected when gpio is high,
> +  and 1.8V is selected when gpio is low. This voltage is used for signal
> +  level.

Give this a more descriptive name, like power-mux-gpios. That will match
up with the style of cd-gpios and wp-gpios.

> +- clocks: Must contain an entry for each entry in clock-names. It is a
> +  list of phandles and clock-specifier pairs.
> +  See ../clocks/clock-bindings.txt for details.
> +- clock-names: Should contain the following two entries:
> +       "sd_sd4clk" - clock primarily used for tuning process
> +       "sd_bclk"   - base clock for sdhci controller
> +
> +Example:
> +
> +       sdhci1: sdio@36600000 {
> +               compatible = "fujitsu,f_sdh30";
> +               reg = <0 0x36600000 0x1000>;
> +               interrupts = <0 172 0x4>,
> +                            <0 173 0x4>;
> +               voltage-ranges = <1800 1800 3300 3300>;

Place brackets around each pair to make this clearer:

	voltage-ranges = <1800 1800>, <3300 3300>;

[...]

> +       if (!of_property_read_u32(pdev->dev.of_node, "vendor-hs200",
> +                                 &priv->vendor_hs200))
> +               dev_info(dev, "Applying vendor-hs200 setting\n");
> +       else
> +               priv->vendor_hs200 = 0;

This wasn't in the binding document, and a grep for "vendor-hs200" in a
v3.16-rc2 tree found me nothing.

Please document this.

> +
> +       if (!of_property_read_u32(pdev->dev.of_node, "bus-width", &bus_width)) {
> +               if (bus_width == 8) {
> +                       dev_info(dev, "Applying 8 bit bus width\n");
> +                       host->mmc->caps |= MMC_CAP_8_BIT_DATA;
> +               }
> +       }

What if bus-width is not 8, or is not present?

> +
> +       ret = mmc_of_parse_voltage(pdev->dev.of_node, &host->ocr_mask);
> +       if (ret) {
> +               dev_err(dev, "%s: parse voltage error\n", __func__);
> +               goto err_voltage;
> +       }
> +
> +       host->hw_name = DRIVER_NAME;
> +       host->ops = &sdhci_f_sdh30_ops;
> +       host->irq = irq;
> +
> +       host->ioaddr = of_iomap(pdev->dev.of_node, 0);
> +       if (!host->ioaddr) {
> +               dev_err(dev, "%s: failed to remap registers\n", __func__);
> +               ret = -ENXIO;
> +               goto err_remap;
> +       }
> +
> +       priv->clk_sd4 = of_clk_get(pdev->dev.of_node, 0);
> +       if (!IS_ERR(priv->clk_sd4)) {
> +               ret = clk_prepare_enable(priv->clk_sd4);
> +               if (ret < 0) {
> +                       dev_err(dev, "Failed to enable sd4 clock: %d\n", ret);
> +                       goto err_clk1;
> +               }
> +       }
> +       priv->clk_b = of_clk_get(pdev->dev.of_node, 1);
> +       if (!IS_ERR(priv->clk_b)) {
> +               ret = clk_prepare_enable(priv->clk_b);
> +               if (ret < 0) {
> +                       dev_err(dev, "Failed to enable clk_b clock: %d\n", ret);
> +                       goto err_clk2;
> +               }
> +       }

Given you gave these names, get these by name rather than index. It's
less surprising and more flexible.

Thanks,
Mark.

  reply	other threads:[~2014-06-26 11:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-26  6:23 [RFC PATCH v2 0/6] mmc: sdhci: adding support for a new Fujitsu sdhci IP Vincent Yang
2014-06-26  6:23 ` [RFC PATCH v2 1/6] mmc: sdhci: add quirk for voltage switch callback Vincent Yang
2014-06-26  6:23 ` [RFC PATCH v2 2/6] mmc: sdhci: add quirk for tuning work around Vincent Yang
2014-06-26  6:23 ` [RFC PATCH v2 3/6] mmc: sdhci: add quirk for single block transactions Vincent Yang
2014-06-26  6:23 ` [RFC PATCH v2 4/6] mmc: sdhci: host: add new f_sdh30 Vincent Yang
2014-06-26 11:03   ` Mark Rutland [this message]
2014-06-27  3:32     ` Vincent Yang
2014-06-27 10:12       ` Mark Rutland
2014-06-30  2:10         ` Vincent Yang
2014-06-26  6:23 ` [RFC PATCH v2 5/6] mmc: core: hold SD Clock before CMD11 during Signal Voltage Switch Procedure Vincent Yang
2014-06-26  6:23 ` [RFC PATCH v2 6/6] mmc: core: add manual resume capability Vincent Yang
2014-06-26  9:42   ` Ulf Hansson
2014-06-27  2:23     ` Vincent Yang
2014-06-27  9:40       ` Ulf Hansson
2014-06-27 11:00         ` Vincent Yang

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=20140626110351.GN15240@leverpostej \
    --to=mark.rutland@arm.com \
    --cc=Vincent.Yang@tw.fujitsu.com \
    --cc=andy.green@linaro.org \
    --cc=anton@enomsg.org \
    --cc=chris@printf.net \
    --cc=devicetree@vger.kernel.org \
    --cc=jaswinder.singh@linaro.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=patches@linaro.org \
    --cc=vincent.yang.fujitsu@gmail.com \
    /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 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).