[PATCH v2 3/3] tegra: allow to expose UART on microSD slot
Artur Kowalski
arturkow2000 at gmail.com
Sun Mar 30 21:26:41 CEST 2025
Tegra20 has mux allowing to repurpose microSD as UART on boards which
use sdmmc3 controller for microSD. Add TEGRA_UARTA_MICROSD to enable
this feature. It is currently supported on Transformer T20, support for
other boards may require Device Tree changes.
Update Transformer T20 DTS to select correct pinmux and stdout-path
based on TEGRA_UARTA_MICROSD.
Signed-off-by: Artur Kowalski <arturkow2000 at gmail.com>
---
Changes in v2:
- added TEGRA_UARTA_MICROSD Kconfig option
- removed .dtsi for enabling UART over microSD
- modified transformer DT to use UARTA and correct pinmux when
TEGRA_UARTA_MICROSD is enabled; it is enough to flip a single
switch to enable/disable UART over microSD
arch/arm/dts/tegra20-asus-transformer.dtsi | 24 ++++++++++++++++++++++
arch/arm/mach-tegra/tegra20/Kconfig | 15 ++++++++++++++
2 files changed, 39 insertions(+)
diff --git a/arch/arm/dts/tegra20-asus-transformer.dtsi b/arch/arm/dts/tegra20-asus-transformer.dtsi
index 49efabbfd92..9ea323c81f3 100644
--- a/arch/arm/dts/tegra20-asus-transformer.dtsi
+++ b/arch/arm/dts/tegra20-asus-transformer.dtsi
@@ -5,7 +5,13 @@
/ {
chosen {
+#if CONFIG_IS_ENABLED(TEGRA_ENABLE_UARTA)
+ stdout-path = &uarta;
+#elif CONFIG_IS_ENABLED(TEGRA_ENABLE_UARTD)
stdout-path = &uartd;
+#else
+#error Unsupported UART
+#endif
};
aliases {
@@ -195,10 +201,17 @@
nvidia,function = "i2c1";
};
+#if CONFIG_IS_ENABLED(TEGRA_UARTA_SDB_SDD)
+ dbguart {
+ nvidia,pins = "sdb", "sdd";
+ nvidia,function = "uarta";
+ };
+#else
sdb {
nvidia,pins = "sdb", "sdc", "sdd", "slxc", "slxk";
nvidia,function = "sdio3";
};
+#endif
sdio1 {
nvidia,pins = "sdio1";
@@ -376,7 +389,13 @@
};
};
+#if CONFIG_IS_ENABLED(TEGRA_ENABLE_UARTA)
+ uarta: serial at 70006000 {
+#elif CONFIG_IS_ENABLED(TEGRA_ENABLE_UARTD)
uartd: serial at 70006300 {
+#else
+#error Unsupported UART
+#endif
status = "okay";
clock-frequency = <216000000>;
};
@@ -434,7 +453,12 @@
};
sdmmc3: sdhci at c8000400 {
+#if CONFIG_IS_ENABLED(TEGRA_UARTA_MICROSD)
+ /* Can't use both at the same time */
+ status = "disabled";
+#else
status = "okay";
+#endif
bus-width = <4>;
cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
diff --git a/arch/arm/mach-tegra/tegra20/Kconfig b/arch/arm/mach-tegra/tegra20/Kconfig
index 3349f1e2786..c2c51660216 100644
--- a/arch/arm/mach-tegra/tegra20/Kconfig
+++ b/arch/arm/mach-tegra/tegra20/Kconfig
@@ -77,6 +77,21 @@ endchoice
config SYS_SOC
default "tegra20"
+config TEGRA_UARTA_MICROSD
+ bool "UARTA on MicroSD breakout board"
+ default n
+ depends on TEGRA_ENABLE_UARTA && TARGET_TRANSFORMER_T20
+ select TEGRA_UARTA_SDB_SDD
+ help
+ Repurpose the SD card slot for getting access to the UARTA serial
+ console. Primarily useful only for low level u-boot debugging on
+ tablets, where normal UARTD is difficult to access and requires
+ device disassembly and/or soldering. Enabling this option causes
+ UARTA TX to become exposed on SDD and RX on SDB pins which correspond
+ to microSD CLK and CMD pins respectively. Currently this is supported
+ only on Transformer T20, support for other platforms may require DT
+ and configs (from include/configs/*) updates.
+
source "board/nvidia/harmony/Kconfig"
source "board/avionic-design/medcom-wide/Kconfig"
source "board/compal/paz00/Kconfig"
--
2.48.1
More information about the U-Boot
mailing list