blob: 166886ec5ffccc635e08096e091e0ac28eceaa07 [file] [log] [blame]
Jorge Ramirez-Ortiz5ff5eee2018-09-23 09:41:10 +02001/*
2 * Copyright (c) 2015-2017, Renesas Electronics Corporation. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef RCAR_PWRC_H__
8#define RCAR_PWRC_H__
9
10#define PPOFFR_OFF 0x0
11#define PPONR_OFF 0x4
12#define PCOFFR_OFF 0x8
13#define PWKUPR_OFF 0xc
14#define PSYSR_OFF 0x10
15
16#define PWKUPR_WEN (1ull << 31)
17
18#define PSYSR_AFF_L2 (1 << 31)
19#define PSYSR_AFF_L1 (1 << 30)
20#define PSYSR_AFF_L0 (1 << 29)
21#define PSYSR_WEN (1 << 28)
22#define PSYSR_PC (1 << 27)
23#define PSYSR_PP (1 << 26)
24
25#define PSYSR_WK_SHIFT (24)
26#define PSYSR_WK_MASK (0x3)
27#define PSYSR_WK(x) (((x) >> PSYSR_WK_SHIFT) & PSYSR_WK_MASK)
28
29#define WKUP_COLD 0x0
30#define WKUP_RESET 0x1
31#define WKUP_PPONR 0x2
32#define WKUP_GICREQ 0x3
33
34#define RCAR_INVALID (0xffffffffU)
35#define PSYSR_INVALID 0xffffffff
36
37#define RCAR_CLUSTER_A53A57 (0U)
38#define RCAR_CLUSTER_CA53 (1U)
39#define RCAR_CLUSTER_CA57 (2U)
40
41#ifndef __ASSEMBLY__
42void rcar_pwrc_disable_interrupt_wakeup(uint64_t mpidr);
43void rcar_pwrc_enable_interrupt_wakeup(uint64_t mpidr);
44void rcar_pwrc_clusteroff(uint64_t mpidr);
45void rcar_pwrc_cpuoff(uint64_t mpidr);
46void rcar_pwrc_cpuon(uint64_t mpidr);
47void rcar_pwrc_setup(void);
48
49uint32_t rcar_pwrc_get_cpu_wkr(uint64_t mpidr);
50uint32_t rcar_pwrc_status(uint64_t mpidr);
51uint32_t rcar_pwrc_get_cluster(void);
52uint32_t rcar_pwrc_get_mpidr_cluster(uint64_t mpidr);
53uint32_t rcar_pwrc_get_cpu_num(uint32_t cluster_type);
54void plat_secondary_reset(void);
55
56void rcar_pwrc_code_copy_to_system_ram(void);
57
58#if !PMIC_ROHM_BD9571
59void rcar_pwrc_system_reset(void);
60#endif
61
62#if RCAR_SYSTEM_SUSPEND
63void rcar_pwrc_go_suspend_to_ram(void);
64void rcar_pwrc_set_suspend_to_ram(void);
65void rcar_pwrc_init_suspend_to_ram(void);
66void rcar_pwrc_suspend_to_ram(void);
67#endif
68
69extern void rcar_pwrc_save_generic_timer(uint64_t *rcar_stack_generic_timer);
70extern uint32_t rcar_pwrc_switch_stack(uintptr_t jump, uintptr_t stack,
71 void *arg);
72
73extern uint64_t rcar_stack_generic_timer[5];
74
75#endif
76
77#endif