]> git.sur5r.net Git - u-boot/blob - arch/x86/lib/acpi_s3.c
x86: acpi: Refactor acpi_resume()
[u-boot] / arch / x86 / lib / acpi_s3.c
1 /*
2  * Copyright (C) 2017, Bin Meng <bmeng.cn@gmail.com>
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6
7 #include <common.h>
8 #include <asm/acpi_s3.h>
9 #include <asm/acpi_table.h>
10 #include <asm/post.h>
11
12 static void asmlinkage (*acpi_do_wakeup)(void *vector) = (void *)WAKEUP_BASE;
13
14 static void acpi_jump_to_wakeup(void *vector)
15 {
16         /* Copy wakeup trampoline in place */
17         memcpy((void *)WAKEUP_BASE, __wakeup, __wakeup_size);
18
19         printf("Jumping to OS waking vector %p\n", vector);
20         acpi_do_wakeup(vector);
21 }
22
23 void acpi_resume(struct acpi_fadt *fadt)
24 {
25         void *wake_vec;
26
27         wake_vec = acpi_find_wakeup_vector(fadt);
28
29         post_code(POST_OS_RESUME);
30         acpi_jump_to_wakeup(wake_vec);
31 }