xref: /rk3399_rockchip-uboot/arch/arm/cpu/armv7/suspend.c (revision 5492555290751859631312c831537632d8e653d3)
1*54925552SJoseph Chen /*
2*54925552SJoseph Chen  * (C) Copyright 2017 Rockchip Electronics Co., Ltd
3*54925552SJoseph Chen  *
4*54925552SJoseph Chen  * SPDX-License-Identifier:     GPL-2.0+
5*54925552SJoseph Chen  */
6*54925552SJoseph Chen 
7*54925552SJoseph Chen #include <asm/suspend.h>
8*54925552SJoseph Chen #include <common.h>
9*54925552SJoseph Chen 
10*54925552SJoseph Chen DECLARE_GLOBAL_DATA_PTR;
11*54925552SJoseph Chen 
cpu_suspend_save(struct pm_ctx * ctx,unsigned long sp)12*54925552SJoseph Chen void cpu_suspend_save(struct pm_ctx *ctx, unsigned long sp)
13*54925552SJoseph Chen {
14*54925552SJoseph Chen 	gd->pm_ctx_phys = (phys_addr_t)ctx;
15*54925552SJoseph Chen 
16*54925552SJoseph Chen 	/* The content will be passed to cpu_do_resume as register sp */
17*54925552SJoseph Chen 	ctx->sp = sp;
18*54925552SJoseph Chen 	ctx->cpu_resume_addr = (phys_addr_t)cpu_do_resume;
19*54925552SJoseph Chen 
20*54925552SJoseph Chen 	cpu_do_suspend(ctx->suspend_regs);
21*54925552SJoseph Chen 
22*54925552SJoseph Chen 	flush_dcache_all();
23*54925552SJoseph Chen }
24