summaryrefslogtreecommitdiff
path: root/payloads
diff options
context:
space:
mode:
authorStefan Reinauer <reinauer@chromium.org>2013-11-13 15:28:01 -0800
committerIsaac Christensen <isaac.christensen@se-eng.com>2014-09-22 18:43:33 +0200
commit406bad127bf7ac7da25261a30d239751b24e22af (patch)
treefa60bc6373eb2ab71d950eeb6a4650dc77a0cf56 /payloads
parent03784fa97a764be81ca9bcf79222e7b37e2e7692 (diff)
downloadcoreboot-406bad127bf7ac7da25261a30d239751b24e22af.tar.xz
libpayload: Add vboot handoff parsing on ARM
This is needed by depthcharge on ARM if coreboot is loading its ramstage from the RW section of the ROM. Change-Id: I96c6c04a0cee39854b45f2eda169e93461da0694 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: https://chromium-review.googlesource.com/176757 Reviewed-by: Gabe Black <gabeblack@chromium.org> Commit-Queue: Stefan Reinauer <reinauer@chromium.org> Tested-by: Stefan Reinauer <reinauer@chromium.org> (cherry picked from commit cf26be4cb527b0fc4212d401a8c77ceb1c7992d0) Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com> Reviewed-on: http://review.coreboot.org/6906 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/libpayload/arch/arm/coreboot.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/payloads/libpayload/arch/arm/coreboot.c b/payloads/libpayload/arch/arm/coreboot.c
index 1397fc1be2..b91db3255c 100644
--- a/payloads/libpayload/arch/arm/coreboot.c
+++ b/payloads/libpayload/arch/arm/coreboot.c
@@ -79,6 +79,14 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
}
#ifdef CONFIG_LP_CHROMEOS
+static void cb_parse_vboot_handoff(unsigned char *ptr, struct sysinfo_t *info)
+{
+ struct cb_range *vbho = (struct cb_range *)ptr;
+
+ info->vboot_handoff = (void *)(uintptr_t)vbho->range_start;
+ info->vboot_handoff_size = vbho->range_size;
+}
+
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
{
struct lb_range *vbnv = (struct lb_range *)ptr;
@@ -267,6 +275,9 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
case CB_TAG_VBNV:
cb_parse_vbnv(ptr, info);
break;
+ case CB_TAG_VBOOT_HANDOFF:
+ cb_parse_vboot_handoff(ptr, info);
+ break;
#endif
case CB_TAG_DMA:
cb_parse_dma(ptr);