[PATCH v2 3/3] tegra: allow to expose UART on microSD slot
Artur Kowalski
arturkow2000 at gmail.com
Tue Apr 1 15:34:46 CEST 2025
W dniu 31.03.2025 o 07:51, Svyatoslav Ryhel pisze:
> нд, 30 бер. 2025 р. о 22:27 Artur Kowalski <arturkow2000 at gmail.com> пише:
>> 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
>>
> This is not applicable since this is a hack by nature, BUT if you
> contain this in the transformer t20 board and Kconfig (no dts
> changes), this may be applied.
Ok, then I'll drop DTS changes. I will add few words about this option
in Transformer documentation
and a note in Kconfig help to not surprise users with not booting U-Boot
as enabling this option without
changing DTS causes U-Boot to hang.
More information about the U-Boot
mailing list