libpayload arm64: Allow board to define upper address limit on DMA

Instead of forcing boards to have DMA region below 4GiB, provide
Kconfig option DMA_LIM_EXCL that a board can use to set the upper
limit in MiB units on the address range reserved by DMA. By default,
this value is 0x1000 i.e. 4GiB limit on the DMA upper address.

BUG=None
BRANCH=None
TEST=Compiles successfully for rush. Default value is seen as 0x1000.

Change-Id: Ie35d3844a0989486ae022f8922fdd4c9d7d57fb4
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 6716cf312a103bc0440a558fc43c8c77869816e3
Original-Change-Id: I3ecbb4ec90995ab1568cb0924d5ce9467492697d
Original-Signed-off-by: Furquan Shaikh <furquan@google.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/245250
Original-Tested-by: Furquan Shaikh <furquan@chromium.org>
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: http://review.coreboot.org/8800
Tested-by: build bot (Jenkins)
Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
Furquan Shaikh 2015-01-31 23:24:32 -08:00 committed by Patrick Georgi
parent a874a7c26f
commit e4a642c867
3 changed files with 7 additions and 2 deletions

View File

@ -33,4 +33,8 @@ config ARCH_SPECIFIC_OPTIONS # dummy
def_bool y
select LITTLE_ENDIAN
config DMA_LIM_EXCL
hex "DMA address limit(exclusive) in MiB units"
default 0x1000
endif

View File

@ -609,7 +609,7 @@ static struct mmu_memrange *mmu_add_dma_range(struct mmu_ranges *mmu_ranges)
/* DMA_DEFAULT_SIZE is multiple of GRANULE_SIZE */
assert((DMA_DEFAULT_SIZE % GRANULE_SIZE) == 0);
prop.size = DMA_DEFAULT_SIZE;
prop.lim_excl = MIN_64_BIT_ADDR;
prop.lim_excl = (uint64_t)CONFIG_LP_DMA_LIM_EXCL * MiB;
prop.align = GRANULE_SIZE;
prop.is_valid_range = NULL;
prop.src_type = TYPE_NORMAL_MEM;

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# libpayload version: 0.2.0
# Wed Mar 18 16:11:01 2015
# Sat Mar 21 13:53:09 2015
#
#
@ -65,3 +65,4 @@ CONFIG_LP_USB_GEN_HUB=y
CONFIG_LP_LITTLE_ENDIAN=y
# CONFIG_LP_IO_ADDRESS_SPACE is not set
CONFIG_LP_ARCH_SPECIFIC_OPTIONS=y
CONFIG_LP_DMA_LIM_EXCL=0x1000