2013-09-27 01:22:09 +02:00
|
|
|
config SOC_NVIDIA_TEGRA124
|
2014-02-27 23:56:39 +01:00
|
|
|
bool
|
|
|
|
default n
|
2013-10-01 14:24:47 +02:00
|
|
|
select ARCH_BOOTBLOCK_ARMV4
|
2014-08-14 01:29:44 +02:00
|
|
|
select ARCH_ROMSTAGE_ARMV7
|
|
|
|
select ARCH_RAMSTAGE_ARMV7
|
tegra124: add custom uart
tegra124: Add a test function which spams exclamation points on the UART.
This function spews characters on the console and, until we have a working
console, is an easy way to see whether the system boots to a particular point.
For some reason waiting for transmitter to be empty hangs, but transmitting
characters still works.
Old-Change-Id: I1622c8a58849f4b8bdcaa67500b81042d7346df4
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://chromium-review.googlesource.com/171030
Reviewed-by: Ronald Minnich <rminnich@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit e0059181958cfe8afec2f3a7ea732e81f5d55e5d)
tegra124: Re-enable waiting for the transmitter to empty in the test function.
The compiler was emitting code compatible with armv7-a, but the bootblock was
running on a core which uses armv4t. By coincidence, it was emitting an
instruction which is unavailable on armv4t when checking the value of the
UART's LSR register. Now that the bootblock is compiled with more appropriate
flags, this code can be re-introduced.
Old-Change-Id: I7ecada4138b0889b963d1a8b19a4bab8e0bb1add
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://chromium-review.googlesource.com/170997
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit 2a0adceb5029c8ee633d17c82dbb11e48d30349d)
tegra124: Seperate out the non-UART specific hardcoded init in the bootblock.
The hardcoded init in the test function in the bootblock is actually useful
generally because it doesn't belong in the UART driver itself but is necessary
for the UART to work. Until we have real implementations for the pinmux, etc.,
we can use that code to get the UART and console going.
Old-Change-Id: I2efe0b571d8b022eb2a2e5569620558540b28373
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://chromium-review.googlesource.com/171334
Reviewed-by: Ronald Minnich <rminnich@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit ae7d4d890be1936cc86dc15adeb33f3b46a51ae5)
tegra124: Implement and enable serial console support for tegra124.
The driver is very similar to the 8250 driver, except it isn't in two parts,
and it also spaces its registers 4 bytes apart instead of having them directly
adjacent to each other.
Also, eliminate the UART test function in the bootblock. It's no longer needed
since the actual console output serves the same purpose.
Right now the clock divisor is fixed for now, and we'll want to actually
figure out what value to use at some point.
Old-Change-Id: Idd659222901eb76b0ed8cbb986deb5124096f2f6
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://chromium-review.googlesource.com/171337
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit 86f5e2875b18901b349283cfbcd4f8cc88b7a019)
Squashed 4 commits related to uart support for tegra124. Modified the
new uart.c to look like the uart.c for exynos5420.
Change-Id: I490cba014a43d58c30c48ca9ddcae2b00095b7a6
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>
Reviewed-on: http://review.coreboot.org/6764
Tested-by: build bot (Jenkins)
Reviewed-by: David Hendricks <dhendrix@chromium.org>
2013-09-29 16:06:08 +02:00
|
|
|
select HAVE_UART_SPECIAL
|
|
|
|
select BOOTBLOCK_CONSOLE
|
2013-10-10 08:45:07 +02:00
|
|
|
select DYNAMIC_CBMEM
|
2013-09-29 15:32:27 +02:00
|
|
|
select ARM_BOOTBLOCK_CUSTOM
|
2014-02-27 23:56:39 +01:00
|
|
|
select ARM_LPAE
|
|
|
|
|
2013-09-27 01:22:09 +02:00
|
|
|
|
|
|
|
if SOC_NVIDIA_TEGRA124
|
|
|
|
|
|
|
|
config BOOTBLOCK_CPU_INIT
|
|
|
|
string
|
|
|
|
default "soc/nvidia/tegra124/bootblock.c"
|
|
|
|
help
|
|
|
|
CPU/SoC-specific bootblock code. This is useful if the
|
|
|
|
bootblock must load microcode or copy data from ROM before
|
|
|
|
searching for the bootblock.
|
|
|
|
|
|
|
|
# ROM image layout.
|
|
|
|
#
|
|
|
|
# 0x00000 Combined bootblock and BCT blob
|
|
|
|
# 0x18000 Master CBFS header.
|
|
|
|
# 0x18080 Free for CBFS data.
|
2013-10-26 02:49:26 +02:00
|
|
|
#
|
|
|
|
# iRAM (256k) layout.
|
2014-01-23 21:37:50 +01:00
|
|
|
# (Note: The BootROM uses the address range [0x4000_0000:0x4000_E000) itself,
|
|
|
|
# so the bootblock loading address must be placed after that. After the
|
|
|
|
# handoff that area may be reclaimed for other uses, e.g. CBFS cache.)
|
|
|
|
#
|
2014-04-03 23:12:45 +02:00
|
|
|
# 0x4000_0000 TTB (16K+32B). 32B is for L1 table of LPAE.
|
2014-02-27 23:56:39 +01:00
|
|
|
# 0x4000_4020 CBFS mapping cache (96K-32B)
|
2014-01-23 21:37:50 +01:00
|
|
|
# 0x4001_C000 Stack (16KB... don't reduce without comparing LZMA scratchpad!).
|
|
|
|
# 0x4002_0000 Bootblock (max 48KB).
|
|
|
|
# 0x4002_C000 ROM stage (max 80KB).
|
2013-10-26 02:49:26 +02:00
|
|
|
# 0x4003_FFFF End of iRAM.
|
2013-09-27 01:22:09 +02:00
|
|
|
|
|
|
|
config BOOTBLOCK_ROM_OFFSET
|
|
|
|
hex
|
|
|
|
default 0x0
|
|
|
|
|
|
|
|
config CBFS_HEADER_ROM_OFFSET
|
|
|
|
hex "offset of master CBFS header in ROM"
|
|
|
|
default 0x18000
|
|
|
|
|
|
|
|
config CBFS_ROM_OFFSET
|
|
|
|
hex "offset of CBFS data in ROM"
|
|
|
|
default 0x18080
|
|
|
|
|
|
|
|
config SYS_SDRAM_BASE
|
|
|
|
hex
|
|
|
|
default 0x80000000
|
|
|
|
|
|
|
|
config BOOTBLOCK_BASE
|
|
|
|
hex
|
2014-01-23 21:37:50 +01:00
|
|
|
default 0x40020000
|
2013-09-27 01:22:09 +02:00
|
|
|
|
2013-10-17 08:50:58 +02:00
|
|
|
config ROMSTAGE_BASE
|
|
|
|
hex
|
2014-01-23 21:37:50 +01:00
|
|
|
default 0x4002c000
|
2013-10-17 08:50:58 +02:00
|
|
|
|
|
|
|
config RAMSTAGE_BASE
|
|
|
|
hex
|
|
|
|
default 0x80200000
|
|
|
|
|
2013-09-29 05:39:21 +02:00
|
|
|
config STACK_TOP
|
|
|
|
hex
|
2014-01-23 21:37:50 +01:00
|
|
|
default 0x40020000
|
2013-09-29 05:39:21 +02:00
|
|
|
|
|
|
|
config STACK_BOTTOM
|
|
|
|
hex
|
2014-01-23 21:37:50 +01:00
|
|
|
default 0x4001c000
|
2013-09-29 05:39:21 +02:00
|
|
|
|
2014-01-23 21:37:50 +01:00
|
|
|
# This is the ramstage thread stack, *not* the same as above! Currently unused.
|
2013-09-29 05:39:21 +02:00
|
|
|
config STACK_SIZE
|
|
|
|
hex
|
|
|
|
default 0x800
|
|
|
|
|
2013-10-21 15:43:03 +02:00
|
|
|
# TTB needs to be aligned to 16KB. Stick it in iRAM.
|
|
|
|
config TTB_BUFFER
|
|
|
|
hex "memory address of the TTB buffer"
|
|
|
|
default 0x40000000
|
|
|
|
|
|
|
|
config CBFS_CACHE_ADDRESS
|
|
|
|
hex "memory address to put CBFS cache data"
|
2014-02-27 23:56:39 +01:00
|
|
|
default 0x40004020
|
2013-10-21 15:43:03 +02:00
|
|
|
|
|
|
|
config CBFS_CACHE_SIZE
|
|
|
|
hex "size of CBFS cache data"
|
2014-02-27 23:56:39 +01:00
|
|
|
default 0x00017fe0
|
2013-10-21 15:43:03 +02:00
|
|
|
|
2014-03-04 01:26:11 +01:00
|
|
|
config TEGRA124_MODEL_TD570D
|
|
|
|
bool "TD570D"
|
|
|
|
|
|
|
|
config TEGRA124_MODEL_TD580D
|
|
|
|
bool "TD580D"
|
|
|
|
|
|
|
|
config TEGRA124_MODEL_CD570M
|
|
|
|
bool "CD570M"
|
|
|
|
|
|
|
|
config TEGRA124_MODEL_CD580M
|
|
|
|
bool "CD580M"
|
|
|
|
|
|
|
|
# Default to 2GHz, the lowest maximum frequency.
|
|
|
|
config PLLX_KHZ
|
|
|
|
int
|
|
|
|
default 2000000 if TEGRA124_MODEL_TD570D
|
|
|
|
default 2300000 if TEGRA124_MODEL_TD580D
|
|
|
|
default 2100000 if TEGRA124_MODEL_CD570M
|
|
|
|
default 2300000 if TEGRA124_MODEL_CD580M
|
|
|
|
default 2000000
|
|
|
|
|
2013-09-27 01:22:09 +02:00
|
|
|
endif
|