mirror of https://gitee.com/openkylin/linux.git
fe2639892c
With this change we automatically detect which UART to use for for printing during decompression. The detection involves coordination with the bootloader: it's expected that the bootloader will leave a 'D' (for [D]ebug) in the UART scratchpad register for whichever UART we should use for debugging. If we don't find any such UART, we fall back to the UART that was specified during config time: CONFIG_TEGRA_DEBUG_UART_XXX. As a side effect of this change, uncompress debug messages will work if you've specified CONFIG_TEGRA_DEBUG_UART_NONE, provided the bootloader obeys the protocol. This change is in line with what is documented in Documentation/arm/Booting. Other approaches considered: * Hardcode based on machine ID (as many other ARM boards do). OK, but nice to not have yet another place to add per-board code. Better to have bootloader parse device tree and pass us this info. * Check for TXE bit (like SA1110). Nice (and doesn't require a bootloader change), but a little less explicit. Also: if bootloader (for some reason) uses another UART, it needs to remember to turn it off before jumping to the kernel or we may print to it. NOTE: adapting this patch to check TXE too would be easy if desired. Signed-off-by: Doug Anderson <dianders@chromium.org> [swarren: Added clock/reset condition checks] Signed-off-by: Stephen Warren <swarren@nvidia.com> Tested-by: Doug Anderson <dianders@chromium.org> Acked-by: Doug Anderson <dianders@chromium.org> Signed-off-by: Olof Johansson <olof@lixom.net> |
||
---|---|---|
.. | ||
include/mach | ||
Kconfig | ||
Makefile | ||
Makefile.boot | ||
apbio.c | ||
apbio.h | ||
board-dt-tegra20.c | ||
board-dt-tegra30.c | ||
board-harmony-pcie.c | ||
board-harmony-pinmux.c | ||
board-harmony-power.c | ||
board-harmony.c | ||
board-harmony.h | ||
board-paz00-pinmux.c | ||
board-paz00.c | ||
board-paz00.h | ||
board-pinmux.c | ||
board-pinmux.h | ||
board-seaboard-pinmux.c | ||
board-seaboard.c | ||
board-seaboard.h | ||
board-trimslice-pinmux.c | ||
board-trimslice.c | ||
board-trimslice.h | ||
board.h | ||
clock.c | ||
clock.h | ||
common.c | ||
cpu-tegra.c | ||
devices.c | ||
devices.h | ||
dma.c | ||
fuse.c | ||
fuse.h | ||
gpio-names.h | ||
headsmp.S | ||
hotplug.c | ||
io.c | ||
irq.c | ||
localtimer.c | ||
pcie.c | ||
pinmux-tegra20-tables.c | ||
pinmux-tegra30-tables.c | ||
pinmux.c | ||
platsmp.c | ||
powergate.c | ||
tegra2_clocks.c | ||
tegra2_emc.c | ||
tegra2_emc.h | ||
timer.c | ||
usb_phy.c |