linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes
@ 2020-10-14 17:56 Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 1/5] arm64: tegra: Enable signal voltage switching on Tegra194 SDMMC1 and SDMMC3 Tamás Szűcs
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Tamás Szűcs @ 2020-10-14 17:56 UTC (permalink / raw)
  To: Rob Herring, Thierry Reding, Jonathan Hunter, JC Kuo,
	Vidya Sagar, Sameer Pujar, devicetree, linux-tegra, linux-kernel
  Cc: Tamás Szűcs

Upstream Xavier SDMMC needs some love. I've been able to test with a Jetson AGX Xavier.
Changes here work for me with 1.8 V and 3.3 V SD and SDIO devices.

Changes in v3:
- I started seeing ocasional eMMC init timeouts on cold starts when HS400 is enabled, so drop this until fix is found
- add missing vmmc-supply regulator for SDMMC1
- specify bus width and disable WP for SDMMC1
- specify primary clock source for SDMMC1 and SDMMC3

Changes in v2:
- fix board name in commit messages
- rebase on for-next

Kind regards,
Tamas


Tamás Szűcs (5):
  arm64: tegra: Enable signal voltage switching on Tegra194 SDMMC1 and
    SDMMC3
  arm64: tegra: Specify sdhci clock parent for Tegra194 SDMMC1 and
    SDMMC3
  arm64: tegra: Fix CD on Jetson AGX Xavier SDMMC1
  arm64: tegra: Add vmmc-supply regulator for Jetson AGX Xavier SDMMC1
  arm64: tegra: Configure SDIO cards on Jetson AGX Xavier SDMMC1

 .../arm64/boot/dts/nvidia/tegra194-p2888.dtsi | 18 ++++++-
 arch/arm64/boot/dts/nvidia/tegra194.dtsi      | 51 +++++++++++++++++++
 2 files changed, 68 insertions(+), 1 deletion(-)

-- 
2.20.1


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

* [PATCH v3 1/5] arm64: tegra: Enable signal voltage switching on Tegra194 SDMMC1 and SDMMC3
  2020-10-14 17:56 [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes Tamás Szűcs
@ 2020-10-14 17:56 ` Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 2/5] arm64: tegra: Specify sdhci clock parent for " Tamás Szűcs
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Tamás Szűcs @ 2020-10-14 17:56 UTC (permalink / raw)
  To: Rob Herring, Thierry Reding, Jonathan Hunter, JC Kuo,
	Vidya Sagar, Sameer Pujar, devicetree, linux-tegra, linux-kernel
  Cc: Tamás Szűcs

Add pad voltage configuration nodes for SDMMC pads with configurable voltages
and enable supported SD card, SDIO and eMMC modes.

Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch>
---
 arch/arm64/boot/dts/nvidia/tegra194.dtsi | 45 ++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
index e9c90f0f44ff..058fdb1ffa1a 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
@@ -4,6 +4,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/mailbox/tegra186-hsp.h>
 #include <dt-bindings/pinctrl/pinctrl-tegra.h>
+#include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
 #include <dt-bindings/power/tegra194-powergate.h>
 #include <dt-bindings/reset/tegra194-reset.h>
 #include <dt-bindings/thermal/tegra194-bpmp-thermal.h>
@@ -705,6 +706,9 @@
 			interconnects = <&mc TEGRA194_MEMORY_CLIENT_SDMMCRA &emc>,
 					<&mc TEGRA194_MEMORY_CLIENT_SDMMCWA &emc>;
 			interconnect-names = "dma-mem", "write";
+			pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
+			pinctrl-0 = <&sdmmc1_3v3>;
+			pinctrl-1 = <&sdmmc1_1v8>;
 			nvidia,pad-autocal-pull-up-offset-3v3-timeout =
 									<0x07>;
 			nvidia,pad-autocal-pull-down-offset-3v3-timeout =
@@ -716,6 +720,15 @@
 			nvidia,pad-autocal-pull-down-offset-sdr104 = <0x00>;
 			nvidia,default-tap = <0x9>;
 			nvidia,default-trim = <0x5>;
+			cap-sd-highspeed;
+			cap-mmc-highspeed;
+			sd-uhs-sdr12;
+			sd-uhs-sdr25;
+			sd-uhs-sdr50;
+			sd-uhs-sdr104;
+			cap-sdio-irq;
+			mmc-ddr-1_8v;
+			mmc-hs200-1_8v;
 			status = "disabled";
 		};
 
@@ -731,6 +744,9 @@
 			interconnects = <&mc TEGRA194_MEMORY_CLIENT_SDMMCR &emc>,
 					<&mc TEGRA194_MEMORY_CLIENT_SDMMCW &emc>;
 			interconnect-names = "dma-mem", "write";
+			pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
+			pinctrl-0 = <&sdmmc3_3v3>;
+			pinctrl-1 = <&sdmmc3_1v8>;
 			nvidia,pad-autocal-pull-up-offset-1v8 = <0x00>;
 			nvidia,pad-autocal-pull-down-offset-1v8 = <0x7a>;
 			nvidia,pad-autocal-pull-up-offset-3v3-timeout = <0x07>;
@@ -743,6 +759,15 @@
 			nvidia,pad-autocal-pull-down-offset-sdr104 = <0x00>;
 			nvidia,default-tap = <0x9>;
 			nvidia,default-trim = <0x5>;
+			cap-sd-highspeed;
+			cap-mmc-highspeed;
+			sd-uhs-sdr12;
+			sd-uhs-sdr25;
+			sd-uhs-sdr50;
+			sd-uhs-sdr104;
+			cap-sdio-irq;
+			mmc-ddr-1_8v;
+			mmc-hs200-1_8v;
 			status = "disabled";
 		};
 
@@ -1269,6 +1294,26 @@
 
 			#interrupt-cells = <2>;
 			interrupt-controller;
+
+			sdmmc1_3v3: sdmmc1-3v3 {
+				pins = "sdmmc1-hv";
+				power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
+			};
+
+			sdmmc1_1v8: sdmmc1-1v8 {
+				pins = "sdmmc1-hv";
+				power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
+			};
+
+			sdmmc3_3v3: sdmmc3-3v3 {
+				pins = "sdmmc3-hv";
+				power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
+			};
+
+			sdmmc3_1v8: sdmmc3-1v8 {
+				pins = "sdmmc3-hv";
+				power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
+			};
 		};
 
 		host1x@13e00000 {
-- 
2.20.1


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

* [PATCH v3 2/5] arm64: tegra: Specify sdhci clock parent for Tegra194 SDMMC1 and SDMMC3
  2020-10-14 17:56 [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 1/5] arm64: tegra: Enable signal voltage switching on Tegra194 SDMMC1 and SDMMC3 Tamás Szűcs
@ 2020-10-14 17:56 ` Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 3/5] arm64: tegra: Fix CD on Jetson AGX Xavier SDMMC1 Tamás Szűcs
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Tamás Szűcs @ 2020-10-14 17:56 UTC (permalink / raw)
  To: Rob Herring, Thierry Reding, Jonathan Hunter, JC Kuo,
	Vidya Sagar, Sameer Pujar, devicetree, linux-tegra, linux-kernel
  Cc: Tamás Szűcs

Use PLLC4_MUXED as clock source for SDMMC1 and SDMMC3 core clocks. This enables
more suitable interface clocks for higher data rate modes.

Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch>
---
 arch/arm64/boot/dts/nvidia/tegra194.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
index 058fdb1ffa1a..7e3ceeb5bc43 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
@@ -701,6 +701,9 @@
 			clocks = <&bpmp TEGRA194_CLK_SDMMC1>,
 				 <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>;
 			clock-names = "sdhci", "tmclk";
+			assigned-clocks = <&bpmp TEGRA194_CLK_SDMMC1>,
+					  <&bpmp TEGRA194_CLK_PLLC4_MUXED>;
+			assigned-clock-parents = <&bpmp TEGRA194_CLK_PLLC4_MUXED>;
 			resets = <&bpmp TEGRA194_RESET_SDMMC1>;
 			reset-names = "sdhci";
 			interconnects = <&mc TEGRA194_MEMORY_CLIENT_SDMMCRA &emc>,
@@ -739,6 +742,9 @@
 			clocks = <&bpmp TEGRA194_CLK_SDMMC3>,
 				 <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>;
 			clock-names = "sdhci", "tmclk";
+			assigned-clocks = <&bpmp TEGRA194_CLK_SDMMC3>,
+					  <&bpmp TEGRA194_CLK_PLLC4_MUXED>;
+			assigned-clock-parents = <&bpmp TEGRA194_CLK_PLLC4_MUXED>;
 			resets = <&bpmp TEGRA194_RESET_SDMMC3>;
 			reset-names = "sdhci";
 			interconnects = <&mc TEGRA194_MEMORY_CLIENT_SDMMCR &emc>,
-- 
2.20.1


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

* [PATCH v3 3/5] arm64: tegra: Fix CD on Jetson AGX Xavier SDMMC1
  2020-10-14 17:56 [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 1/5] arm64: tegra: Enable signal voltage switching on Tegra194 SDMMC1 and SDMMC3 Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 2/5] arm64: tegra: Specify sdhci clock parent for " Tamás Szűcs
@ 2020-10-14 17:56 ` Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 4/5] arm64: tegra: Add vmmc-supply regulator for " Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 5/5] arm64: tegra: Configure SDIO cards on " Tamás Szűcs
  4 siblings, 0 replies; 6+ messages in thread
From: Tamás Szűcs @ 2020-10-14 17:56 UTC (permalink / raw)
  To: Rob Herring, Thierry Reding, Jonathan Hunter, JC Kuo,
	Vidya Sagar, Sameer Pujar, devicetree, linux-tegra, linux-kernel
  Cc: Tamás Szűcs

Change GPIO used for card detection on SDMMC1. Also, specify bus width and
disable write protect while at it.

Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch>
---
 arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
index d71b7a1140fe..31b5f00a7547 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
@@ -75,7 +75,9 @@
 
 		/* SDMMC1 (SD/MMC) */
 		mmc@3400000 {
-			cd-gpios = <&gpio TEGRA194_MAIN_GPIO(A, 0) GPIO_ACTIVE_LOW>;
+			bus-width = <4>;
+			cd-gpios = <&gpio TEGRA194_MAIN_GPIO(G, 7) GPIO_ACTIVE_LOW>;
+			disable-wp;
 		};
 
 		/* SDMMC4 (eMMC) */
-- 
2.20.1


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

* [PATCH v3 4/5] arm64: tegra: Add vmmc-supply regulator for Jetson AGX Xavier SDMMC1
  2020-10-14 17:56 [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes Tamás Szűcs
                   ` (2 preceding siblings ...)
  2020-10-14 17:56 ` [PATCH v3 3/5] arm64: tegra: Fix CD on Jetson AGX Xavier SDMMC1 Tamás Szűcs
@ 2020-10-14 17:56 ` Tamás Szűcs
  2020-10-14 17:56 ` [PATCH v3 5/5] arm64: tegra: Configure SDIO cards on " Tamás Szűcs
  4 siblings, 0 replies; 6+ messages in thread
From: Tamás Szűcs @ 2020-10-14 17:56 UTC (permalink / raw)
  To: Rob Herring, Thierry Reding, Jonathan Hunter, JC Kuo,
	Vidya Sagar, Sameer Pujar, devicetree, linux-tegra, linux-kernel
  Cc: Tamás Szűcs

Create regulator for VDD_3V3_SD and add it to SDMMC1. When vmmc-supply is
undefined the initialization sequence specified in aliases is disregarded.

Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch>
---
 arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
index 31b5f00a7547..604a2c8a7478 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
@@ -78,6 +78,8 @@
 			bus-width = <4>;
 			cd-gpios = <&gpio TEGRA194_MAIN_GPIO(G, 7) GPIO_ACTIVE_LOW>;
 			disable-wp;
+
+			vmmc-supply = <&vdd_3v3_sd>;
 		};
 
 		/* SDMMC4 (eMMC) */
@@ -356,4 +358,14 @@
 		gpio = <&gpio TEGRA194_MAIN_GPIO(Z, 1) GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 	};
+
+	vdd_3v3_sd: regulator@5 {
+		compatible = "regulator-fixed";
+		regulator-name = "VDD_3V3_SD";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio TEGRA194_MAIN_GPIO(A, 0) GPIO_ACTIVE_HIGH>;
+		regulator-boot-on;
+		enable-active-high;
+	};
 };
-- 
2.20.1


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

* [PATCH v3 5/5] arm64: tegra: Configure SDIO cards on Jetson AGX Xavier SDMMC1
  2020-10-14 17:56 [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes Tamás Szűcs
                   ` (3 preceding siblings ...)
  2020-10-14 17:56 ` [PATCH v3 4/5] arm64: tegra: Add vmmc-supply regulator for " Tamás Szűcs
@ 2020-10-14 17:56 ` Tamás Szűcs
  4 siblings, 0 replies; 6+ messages in thread
From: Tamás Szűcs @ 2020-10-14 17:56 UTC (permalink / raw)
  To: Rob Herring, Thierry Reding, Jonathan Hunter, JC Kuo,
	Vidya Sagar, Sameer Pujar, devicetree, linux-tegra, linux-kernel
  Cc: Tamás Szűcs

Preserve SDIO card power during suspend/resume cycles and enable waking up the
host system on SDIO IRQ assertion.

Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch>
---
 arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
index 604a2c8a7478..e3098b1555bc 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
@@ -78,6 +78,8 @@
 			bus-width = <4>;
 			cd-gpios = <&gpio TEGRA194_MAIN_GPIO(G, 7) GPIO_ACTIVE_LOW>;
 			disable-wp;
+			keep-power-in-suspend;
+			wakeup-source;
 
 			vmmc-supply = <&vdd_3v3_sd>;
 		};
-- 
2.20.1


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

end of thread, other threads:[~2020-10-14 18:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-14 17:56 [PATCH v3 0/5] arm64: tegra: Xavier SDMMC changes Tamás Szűcs
2020-10-14 17:56 ` [PATCH v3 1/5] arm64: tegra: Enable signal voltage switching on Tegra194 SDMMC1 and SDMMC3 Tamás Szűcs
2020-10-14 17:56 ` [PATCH v3 2/5] arm64: tegra: Specify sdhci clock parent for " Tamás Szűcs
2020-10-14 17:56 ` [PATCH v3 3/5] arm64: tegra: Fix CD on Jetson AGX Xavier SDMMC1 Tamás Szűcs
2020-10-14 17:56 ` [PATCH v3 4/5] arm64: tegra: Add vmmc-supply regulator for " Tamás Szűcs
2020-10-14 17:56 ` [PATCH v3 5/5] arm64: tegra: Configure SDIO cards on " Tamás Szűcs

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