Re: [RFC PATCH 5/7] mmc: sdhci: host: add new f_sdh30

2014-06-20 Thread Arnd Bergmann
On Friday 20 June 2014 17:35:26 Vincent Yang wrote:
 +Required properties:
 +- compatible: fujitsu,f_sdh30
 +
 +Optional properties:
 +- gpios: Specify gpios for controlling signal level
 +- clocks: Specify clocks used by SDHCI controller
 +- clock-names: Specify the clock-names to be used

If you want to use clock-names, you have to specify the exact names
of the clock input signals used by your device, and the order in which
they are listed.

For both the clocks and the gpios, you have to specify how many signals
there are, and ideally describe what they are used for. In case of a
gpio controlling the signal level, it may be better to model this
as a gpio-regulator device, depending on how exactly it is used.

When posting a DT binding document, please always add
devicet...@vger.kernel.org to Cc.

Arnd
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[RFC PATCH 5/7] mmc: sdhci: host: add new f_sdh30

2014-06-20 Thread Vincent Yang
This patch adds new host controller driver for
Fujitsu SDHCI controller f_sdh30.

Signed-off-by: Vincent Yang vincent.y...@tw.fujitsu.com
---
 .../devicetree/bindings/mmc/sdhci-fujitsu.txt  |  25 ++
 drivers/mmc/host/Kconfig   |   7 +
 drivers/mmc/host/Makefile  |   1 +
 drivers/mmc/host/sdhci_f_sdh30.c   | 340 +
 drivers/mmc/host/sdhci_f_sdh30.h   |  40 +++
 5 files changed, 413 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 000..b6704cd
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
@@ -0,0 +1,25 @@
+* 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
+
+Optional properties:
+- gpios: Specify gpios for controlling signal level
+- clocks: Specify clocks used by SDHCI controller
+- clock-names: Specify the clock-names to be used
+
+Example:
+
+   sdhci1: sdio@3660 {
+   compatible = fujitsu,f_sdh30;
+   reg = 0 0x3660 0x1000;
+   interrupts = 0 172 0x4,
+0 173 0x4;
+   gpios = gpio0 7 0;
+   clocks = clk_hdmi_2_0, clk_hdmi_3_0;
+   clock-names = sd_sd4clk, sd_bclk;
+   };
+
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 7fee224..a1f3207 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -281,6 +281,13 @@ config MMC_SDHCI_BCM2835
  This selects the BCM2835 SD/MMC controller. If you have a BCM2835
  platform with SD or MMC devices, say Y or M here.
 
+config MMC_SDHCI_F_SDH30
+   tristate SDHCI support for Fujitsu Semiconductor F_SDH30
+   depends on MMC_SDHCI  (ARCH_MB8AC0300 || ARCH_MB86S70)
+   help
+ This selects the Secure Digital Host Controller Interface (SDHCI)
+ Needed by some Fujitsu SoC for MMC / SD / SDIO support.
+ If you have a controller with this interface, say Y or M here.
  If unsure, say N.
 
 config MMC_MOXART
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 7f81ddf..a4c89e5 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV3) += sdhci-pxav3.o
 obj-$(CONFIG_MMC_SDHCI_PXAV2)  += sdhci-pxav2.o
 obj-$(CONFIG_MMC_SDHCI_S3C)+= sdhci-s3c.o
 obj-$(CONFIG_MMC_SDHCI_SIRF)   += sdhci-sirf.o
+obj-$(CONFIG_MMC_SDHCI_F_SDH30)+= sdhci_f_sdh30.o
 obj-$(CONFIG_MMC_SDHCI_SPEAR)  += sdhci-spear.o
 obj-$(CONFIG_MMC_WBSD) += wbsd.o
 obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
diff --git a/drivers/mmc/host/sdhci_f_sdh30.c b/drivers/mmc/host/sdhci_f_sdh30.c
new file mode 100644
index 000..d916c47
--- /dev/null
+++ b/drivers/mmc/host/sdhci_f_sdh30.c
@@ -0,0 +1,340 @@
+/*
+ * linux/drivers/mmc/host/sdhci_f_sdh30.c
+ *
+ * Copyright (C) 2013 - 2014 Fujitsu Semiconductor, Ltd
+ *  Vincent Yang vincent.y...@tw.fujitsu.com
+ * Copyright (C) 2014 Linaro Ltd  Andy Green andy.gr...@linaro.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 2 of the License.
+ */
+
+#include linux/err.h
+#include linux/delay.h
+#include linux/module.h
+#include linux/mmc/sd.h
+#include linux/mmc/host.h
+#include linux/mmc/card.h
+#include linux/gpio.h
+#include linux/of_gpio.h
+#include linux/of_address.h
+#include linux/platform_device.h
+#include linux/pm.h
+#include linux/pm_runtime.h
+#include linux/suspend.h
+
+#include sdhci.h
+#include sdhci-pltfm.h
+#include sdhci_f_sdh30.h
+#include ../core/core.h
+
+#define DRIVER_NAME f_sdh30
+
+
+struct f_sdhost_priv {
+   struct clk *clk_sd4;
+   struct clk *clk_b;
+   int gpio_select_1v8;
+   u32 vendor_hs200;
+   struct device *dev;
+};
+
+void sdhci_f_sdh30_soft_voltage_switch(struct sdhci_host *host)
+{
+   struct f_sdhost_priv *priv = sdhci_priv(host);
+   u32 ctrl = 0;
+
+   usleep_range(2500, 3000);
+   ctrl = sdhci_readl(host, F_SDH30_IO_CONTROL2);
+   ctrl |= F_SDH30_CRES_O_DN;
+   sdhci_writel(host, ctrl, F_SDH30_IO_CONTROL2);
+   ctrl |= F_SDH30_MSEL_O_1_8;
+   sdhci_writel(host, ctrl, F_SDH30_IO_CONTROL2);
+
+   if (gpio_is_valid(priv-gpio_select_1v8)) {
+   dev_info(priv-dev, %s: setting gpio\n, __func__);
+   gpio_direction_output(priv-gpio_select_1v8, 0);
+   }
+
+   ctrl = ~F_SDH30_CRES_O_DN;
+   

Re: [RFC PATCH 5/7] mmc: sdhci: host: add new f_sdh30

2014-06-20 Thread Vincent Yang
Hi Arnd,
Thanks a lot for your review.
I will update it in next version.


Best regards,
Vincent Yang

2014-06-20 18:00 GMT+08:00 Arnd Bergmann a...@arndb.de:
 On Friday 20 June 2014 17:35:26 Vincent Yang wrote:
 +Required properties:
 +- compatible: fujitsu,f_sdh30
 +
 +Optional properties:
 +- gpios: Specify gpios for controlling signal level
 +- clocks: Specify clocks used by SDHCI controller
 +- clock-names: Specify the clock-names to be used

 If you want to use clock-names, you have to specify the exact names
 of the clock input signals used by your device, and the order in which
 they are listed.

 For both the clocks and the gpios, you have to specify how many signals
 there are, and ideally describe what they are used for. In case of a
 gpio controlling the signal level, it may be better to model this
 as a gpio-regulator device, depending on how exactly it is used.

 When posting a DT binding document, please always add
 devicet...@vger.kernel.org to Cc.

 Arnd
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev