In an S3 resume path, U-Boot does everything like a cold boot except in the last_stage_init() it jumps to the OS resume vector. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Stefan Roese <sr@denx.de>master
parent
e76bf38f18
commit
3a34cae011
@ -0,0 +1,26 @@ |
||||
/*
|
||||
* Copyright (C) 2017, Bin Meng <bmeng.cn@gmail.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/acpi_s3.h> |
||||
#include <asm/post.h> |
||||
|
||||
static void asmlinkage (*acpi_do_wakeup)(void *vector) = (void *)WAKEUP_BASE; |
||||
|
||||
static void acpi_jump_to_wakeup(void *vector) |
||||
{ |
||||
/* Copy wakeup trampoline in place */ |
||||
memcpy((void *)WAKEUP_BASE, __wakeup, __wakeup_size); |
||||
|
||||
printf("Jumping to OS waking vector %p\n", vector); |
||||
acpi_do_wakeup(vector); |
||||
} |
||||
|
||||
void acpi_resume(void *wake_vec) |
||||
{ |
||||
post_code(POST_OS_RESUME); |
||||
acpi_jump_to_wakeup(wake_vec); |
||||
} |
Loading…
Reference in new issue