• Stephen Warren's avatar
    ARM: tegra: uncompress.h: Implement TEGRA_DEBUG_UART_AUTO_ODMDATA · 80881dae
    Stephen Warren authored
    Tegra has 5 UARTS which could be used for low-level debug output. Commit
    fe263989 "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: default avatarStephen Warren <swarren@nvidia.com>
    80881dae
Kconfig 4.52 KB