Skip to contentSkip to conversation

Add SDHCI support for APM X-Gene SoC using ARASAN SDHCI controller.

PATCH RESEND Superseded Suman Tripathi 4 participants 6 messages May 11, 2015 – May 12, 2015 1 message not in the archive

Subsystems (4)

v6 of 7 Superseded Latest is v7 →

lore
Share & tools
lore
#0 lore raw

v6 cover Add SDHCI support for APM X-Gene SoC using ARASAN SDHCI controller.

This patch adds the SDHCI support for APM X-Gene SoC using ARASAN SDHCI controller.

v1 change:
* Use the CONFIG_ARM64_DMA_HAS_IOMMU for dma-mapping.

v2 change:
* Drop the IOMMU support and switching to PIO mode for arasan. controller integrated inside APM X-Gene SoC.

v3 change:
* Change the sdhci-of-arasan.c to support arasan4.9a.
* Add quirks for arasan4.9a.

v4 change:
* Cleanup the Documentation and dts.

v5 change:
* Rebase the dts files.
* Drop patch 2 and 3 as it is applied.

v6 change:
* Clean the unrequired properties from dts.
* Rename sdhc to sdhci.
* support to disable timming using capability register read.

---

Suman Tripathi (2):
arm64: dts: Add the arasan sdhci nodes in apm-storm.dtsi.
mmc: sdhci: Add support to disable SDR104/SDR50/DDR50 based on
capability register 0.

 arch/arm64/boot/dts/apm/apm-mustang.dts |  4 +++
 arch/arm64/boot/dts/apm/apm-storm.dtsi  | 43 +++++++++++++++++++++++++++++++++
 drivers/mmc/host/sdhci.c                |  3 ++-
 3 files changed, 49 insertions(+), 1 deletion(-)

--
1.8.2.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 1431333531-30491-1-git-send-email-stripathi-qTEPVZfXA3Y@public.gmane.org

#2 lore raw

PATCH RESEND v6 1/2 arm64: dts: Add the arasan sdhci nodes in apm-storm.dtsi

This patch adds the arasan sdhci nodes to reuse the of-arasan driver for APM X-Gene SoC.

---
 arch/arm64/boot/dts/apm/apm-mustang.dts |  4 +++
 arch/arm64/boot/dts/apm/apm-storm.dtsi  | 43 +++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+)
arch/arm64/boot/dts/apm/apm-mustang.dts +4 -0
index 83578e7..7ccd517 100644
@@ -52,3 +52,7 @@
 &xgenet {
 	status = "ok";
 };
+
+&sdhci0 {
+	status = "ok";
+};
arch/arm64/boot/dts/apm/apm-storm.dtsi +43 -0

55 lines not on this page · raw message

--
1.8.2.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw

PATCH RESEND v6 1/2 arm64: dts: Add the arasan sdhci nodes in apm-storm.dtsi

Hi ,

Quoted 83 lines · Suman Tripathi

This patch adds the arasan sdhci nodes to reuse the of-arasan driver for APM X-Gene SoC.

---
 arch/arm64/boot/dts/apm/apm-mustang.dts |  4 +++
 arch/arm64/boot/dts/apm/apm-storm.dtsi  | 43 +++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+)
arch/arm64/boot/dts/apm/apm-mustang.dts +4 -0
index 83578e7..7ccd517 100644
@@ -52,3 +52,7 @@
 &xgenet {
        status = "ok";
 };
+
+&sdhci0 {
+       status = "ok";
+};
arch/arm64/boot/dts/apm/apm-storm.dtsi +43 -1
index c8d3e0e..b5d2698 100644
@@ -145,6 +145,40 @@
                                clock-output-names = "socplldiv2";
                        };
 
+                       ahbclk: ahbclk at 1f2ac000 {
+                               compatible = "apm,xgene-device-clock";
+                               #clock-cells = <1>;
+                               clocks = <&socplldiv2 0>;
+                               reg = <0x0 0x1f2ac000 0x0 0x1000
+                                       0x0 0x17000000 0x0 0x2000>;
+                               reg-names = "csr-reg", "div-reg";
+                               csr-offset = <0x0>;
+                               csr-mask = <0x1>;
+                               enable-offset = <0x8>;
+                               enable-mask = <0x1>;
+                               divider-offset = <0x164>;
+                               divider-width = <0x5>;
+                               divider-shift = <0x0>;
+                               clock-output-names = "ahbclk";
+                       };
+
+                       sdioclk: sdioclk at 1f2ac000 {
+                               compatible = "apm,xgene-device-clock";
+                               #clock-cells = <1>;
+                               clocks = <&socplldiv2 0>;
+                               reg = <0x0 0x1f2ac000 0x0 0x1000
+                                       0x0 0x17000000 0x0 0x2000>;
+                               reg-names = "csr-reg", "div-reg";
+                               csr-offset = <0x0>;
+                               csr-mask = <0x2>;
+                               enable-offset = <0x8>;
+                               enable-mask = <0x2>;
+                               divider-offset = <0x178>;
+                               divider-width = <0x8>;
+                               divider-shift = <0x0>;
+                               clock-output-names = "sdioclk";
+                       };
+
                        qmlclk: qmlclk {
                                compatible = "apm,xgene-device-clock";
                                #clock-cells = <1>;
@@ -533,6 +567,15 @@
                        interrupts = <0x0 0x4f 0x4>;
                };
 
+               sdhci0: sdhci at 1c000000 {
+                       compatible = "arasan,sdhci-4.9a";
+                       reg = <0x0 0x1c000000 0x0 0x100>;
+                       interrupts = <0x0 0x49 0x4>;
+                       dma-coherent;
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&sdioclk 0>, <&ahbclk 0>;
+               };
+
                phy1: phy at 1f21a000 {
                        compatible = "apm,xgene-phy";
                        reg = <0x0 0x1f21a000 0x0 0x100>;
--
Quoted 2 lines

1.8.2.1

Can anyone from dt community review this patch ? I have changed the dts node names from sdhc to sdhci as per Arnd, Michael comments .

Signature · 3 lines
Thanks,
with regards,
Suman Tripathi
#4 lore raw

PATCH RESEND v6 1/2 arm64: dts: Add the arasan sdhci nodes in apm-storm.dtsi

Quoted 14 lines · On Tuesday 12 May 2015 11:03:46 Suman Tripathi wrote:
Quoted 14 lines
arch/arm64/boot/dts/apm/apm-storm.dtsi +9 -0
@@ -533,6 +567,15 @@
                        interrupts = <0x0 0x4f 0x4>;
                };
 
+               sdhci0: sdhci at 1c000000 {
+                       compatible = "arasan,sdhci-4.9a";
+                       reg = <0x0 0x1c000000 0x0 0x100>;
+                       interrupts = <0x0 0x49 0x4>;
+                       dma-coherent;
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&sdioclk 0>, <&ahbclk 0>;
+               };
+
                phy1: phy at 1f21a000 {
Quoted 8 lines
Quoted 5 lines
arch/arm64/boot/dts/apm/apm-storm.dtsi +0 -1
                        compatible = "apm,xgene-phy";
                        reg = <0x0 0x1f21a000 0x0 0x100>;
--

1.8.2.1

Can anyone from dt community review this patch ? I have changed the dts node names from sdhc to sdhci as per Arnd, Michael comments .

I was actually asking for it to be named 'mmc', not 'sdhci', because the name is supposed to indicate the purpose of the device, not the implementation. I realize that we are inconsistent here, just as with 'uart' vs 'serial', and that ePAPR does not define what to do.

We should probably add something to Documentation/devicetree/bindings/mmc/mmc.txt about this topic and change all the dts files accordingly (unless there is a risk for regressions). At the moment, the mmc.txt file also includes an example with 'sdhci', not 'mmc'.

Arnd

#5 lore raw

PATCH RESEND v6 1/2 arm64: dts: Add the arasan sdhci nodes in apm-storm.dtsi

Quoted 24 lines · Arnd Bergmann
Quoted 14 lines · On Tuesday 12 May 2015 11:03:46 Suman Tripathi wrote:
Quoted 14 lines
arch/arm64/boot/dts/apm/apm-storm.dtsi +9 -0
@@ -533,6 +567,15 @@
                        interrupts = <0x0 0x4f 0x4>;
                };
 
+               sdhci0: sdhci at 1c000000 {
+                       compatible = "arasan,sdhci-4.9a";
+                       reg = <0x0 0x1c000000 0x0 0x100>;
+                       interrupts = <0x0 0x49 0x4>;
+                       dma-coherent;
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&sdioclk 0>, <&ahbclk 0>;
+               };
+
                phy1: phy at 1f21a000 {
Quoted 8 lines
Quoted 5 lines
arch/arm64/boot/dts/apm/apm-storm.dtsi +0 -1
                        compatible = "apm,xgene-phy";
                        reg = <0x0 0x1f21a000 0x0 0x100>;
--

1.8.2.1

Can anyone from dt community review this patch ? I have changed the dts node names from sdhc to sdhci as per Arnd, Michael comments .

Quoted 4 lines

I was actually asking for it to be named 'mmc', not 'sdhci', because the name is supposed to indicate the purpose of the device, not the implementation. I realize that we are inconsistent here, just as with 'uart' vs 'serial', and that ePAPR does not define what to do.

Then we need a common name to address the following purposes: SD, MMC, eMMC, SDIO.

Quoted 6 lines

We should probably add something to Documentation/devicetree/bindings/mmc/mmc.txt about this topic and change all the dts files accordingly (unless there is a risk for regressions). At the moment, the mmc.txt file also includes an example with 'sdhci', not 'mmc'.

I am happy to change, as long as we can come up with something better.

Kind regards
Uffe

#6 lore raw

PATCH RESEND v6 2/2 mmc: sdhci: Add support to disable SDR104/SDR50/DDR50 based on capability register 0.

In reply to a message not in the archive

The sdhci framework disables SDR104/SDR50/DDR50 based on only quirk. This patch adds the support to disable SDR104/SDR50/DDR50 based on reading the capability register 0.

---
 drivers/mmc/host/sdhci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci.c +2 -1
index c80287a..e024c64 100644
@@ -3199,7 +3199,8 @@ int sdhci_add_host(struct sdhci_host *host)
 		}
 	}
 
-	if (host->quirks2 & SDHCI_QUIRK2_NO_1_8_V)
+	if (host->quirks2 & SDHCI_QUIRK2_NO_1_8_V ||
+	    !(caps[0] & SDHCI_CAN_VDD_180))
 		caps[1] &= ~(SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 |
 		       SDHCI_SUPPORT_DDR50);
 

--
1.8.2.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html