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 <[email protected]> --- 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@70006000 { +#elif CONFIG_IS_ENABLED(TEGRA_ENABLE_UARTD) uartd: serial@70006300 { +#else +#error Unsupported UART +#endif status = "okay"; clock-frequency = <216000000>; }; @@ -434,7 +453,12 @@ }; sdmmc3: sdhci@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

