aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra/Kconfig
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-03-26 14:49:57 -0400
committerStephen Warren <swarren@nvidia.com>2012-04-10 15:41:36 -0400
commit80881dae52d05d3d6c920624157d68006390f01e (patch)
tree513fcf053618f5ef83908e24c1a33d5efb2f75d6 /arch/arm/mach-tegra/Kconfig
parent0034102808e0dbbf3a2394b82b1bb40b5778de9e (diff)
ARM: tegra: uncompress.h: Implement TEGRA_DEBUG_UART_AUTO_ODMDATA
Tegra has 5 UARTS which could be used for low-level debug output. Commit fe26398 "ARM: tegra: uncompress.h: Choose a UART at runtime" implemented one method for the kernel to automatically determine which of these to use at run-time, so that the same DEBUG_LL-enabled kernel image could be used across multiple Tegra boards. The required bootloader-side setup for that option is implemented in NVIDIA's various downstream U-Boot branches, but the U-Boot maintainers have refused to accept it upstream. This change implements an alternative automatic UART selection option using ODMDATA. This is a 32-bit value programmed into Tegra's boot memory which provides a few pieces of basic board-specific information, including a field that indicates the console UART. Setting up this value is part of the standard Tegra boot architecture, and so requires no Tegra-specific hacks in the bootloader's UART driver. Note that in theory, the format of ODMDATA is board-specific. However, in practice all boards use the same location/size/values for the UART field. ODMDATA[19:18] (which drive the type of debug console) is more problematic, since some boards use value 2 for UART and others use 3. This patch just accepts either value; if this doesn't work well for a given board, I'd suggest simply not enabling this debug option when building for that board. Note that the kernel assumes the bootloader has already set up any required pinmux settings for the UART; there is no way the kernel can do this for itself prior to knowing which board it's running on. In practice, people using this feature are highly likely to be using bootloaders that have indeed configured the pinmux. This assumption existed prior to this patch. Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/Kconfig')
-rw-r--r--arch/arm/mach-tegra/Kconfig29
1 files changed, 28 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index d0f2546706ca..204d3d4d7388 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -111,7 +111,7 @@ config MACH_VENTANA
111 Support for the nVidia Ventana development platform 111 Support for the nVidia Ventana development platform
112 112
113choice 113choice
114 prompt "Low-level debug console UART" 114 prompt "Default low-level debug console UART"
115 default TEGRA_DEBUG_UART_NONE 115 default TEGRA_DEBUG_UART_NONE
116 116
117config TEGRA_DEBUG_UART_NONE 117config TEGRA_DEBUG_UART_NONE
@@ -134,6 +134,33 @@ config TEGRA_DEBUG_UARTE
134 134
135endchoice 135endchoice
136 136
137choice
138 prompt "Automatic low-level debug console UART"
139 default TEGRA_DEBUG_UART_AUTO_NONE
140
141config TEGRA_DEBUG_UART_AUTO_NONE
142 bool "None"
143
144config TEGRA_DEBUG_UART_AUTO_ODMDATA
145 bool "Via ODMDATA"
146 help
147 Automatically determines which UART to use for low-level debug based
148 on the ODMDATA value. This value is part of the BCT, and is written
149 to the boot memory device using nvflash, or other flashing tool.
150 When bits 19:18 are 3, then bits 17:15 indicate which UART to use;
151 0/1/2/3/4 are UART A/B/C/D/E.
152
153config TEGRA_DEBUG_UART_AUTO_SCRATCH
154 bool "Via UART scratch register"
155 help
156 Automatically determines which UART to use for low-level debug based
157 on the UART scratch register value. Some bootloaders put ASCII 'D'
158 in this register when they initialize their own console UART output.
159 Using this option allows the kernel to automatically pick the same
160 UART.
161
162endchoice
163
137config TEGRA_SYSTEM_DMA 164config TEGRA_SYSTEM_DMA
138 bool "Enable system DMA driver for NVIDIA Tegra SoCs" 165 bool "Enable system DMA driver for NVIDIA Tegra SoCs"
139 default y 166 default y