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>
This commit is contained in:
Stefan Reinauer 2013-11-13 15:28:01 -08:00 committed by Isaac Christensen
parent 03784fa97a
commit 406bad127b
1 changed files with 11 additions and 0 deletions

View File

@ -79,6 +79,14 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
} }
#ifdef CONFIG_LP_CHROMEOS #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) static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
{ {
struct lb_range *vbnv = (struct lb_range *)ptr; 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: case CB_TAG_VBNV:
cb_parse_vbnv(ptr, info); cb_parse_vbnv(ptr, info);
break; break;
case CB_TAG_VBOOT_HANDOFF:
cb_parse_vboot_handoff(ptr, info);
break;
#endif #endif
case CB_TAG_DMA: case CB_TAG_DMA:
cb_parse_dma(ptr); cb_parse_dma(ptr);