From cfe77beea4bb2ec501a14ab822e4773f64dfb21b Mon Sep 17 00:00:00 2001
From: Gabe Black <gabeblack@google.com>
Date: Wed, 19 Jun 2013 04:54:38 -0700
Subject: libpayload: Make the region to scan for the cb tables configurable.

The address range to scan for the coreboot tables varies from machine to
machine based on the range memory occupies on the SOC being booted and on the
amount of memory installed on the machine. To make libpayload work on
different ARM systems with different needs, this change makes the region to
scan configurable. In the future, we might want to come up with a more
automatic mechanism like on x86, although there's less consistency on ARM as
far as what ranges are even memory in the first place.

Change-Id: Ib50efe25a6152171b0fbd0e324dbc5e89c527d6e
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://gerrit.chromium.org/gerrit/59242
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
Reviewed-on: http://review.coreboot.org/4254
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
---
 payloads/libpayload/arch/armv7/Config.in  | 8 ++++++++
 payloads/libpayload/arch/armv7/coreboot.c | 3 ++-
 2 files changed, 10 insertions(+), 1 deletion(-)

(limited to 'payloads/libpayload/arch/armv7')

diff --git a/payloads/libpayload/arch/armv7/Config.in b/payloads/libpayload/arch/armv7/Config.in
index 6c1bf44985..79cd6768a0 100644
--- a/payloads/libpayload/arch/armv7/Config.in
+++ b/payloads/libpayload/arch/armv7/Config.in
@@ -33,4 +33,12 @@ config ARCH_SPECIFIC_OPTIONS # dummy
 	def_bool y
 	select LITTLE_ENDIAN
 
+config COREBOOT_INFO_RANGE_BASE
+	hex "Base of the range to search for the coreboot tables"
+
+config COREBOOT_INFO_RANGE_SIZE
+	hex "Size of the range to search for the coreboot tables"
+	default 0x4000000
+
+
 endif
diff --git a/payloads/libpayload/arch/armv7/coreboot.c b/payloads/libpayload/arch/armv7/coreboot.c
index b6178f7ec1..bc9b47e8ae 100644
--- a/payloads/libpayload/arch/armv7/coreboot.c
+++ b/payloads/libpayload/arch/armv7/coreboot.c
@@ -284,7 +284,8 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
 
 int get_coreboot_info(struct sysinfo_t *info)
 {
-	int ret = cb_parse_header(phys_to_virt(0xbc000000), 0x4000000, info);
+	int ret = cb_parse_header(phys_to_virt(CONFIG_COREBOOT_INFO_RANGE_BASE),
+				  CONFIG_COREBOOT_INFO_RANGE_SIZE, info);
 
 	return (ret == 1) ? 0 : -1;
 }
-- 
cgit v1.2.3