1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Functions and macros to control the flowcontroller |
4 | * |
5 | * Copyright (c) 2010-2012, NVIDIA Corporation. All rights reserved. |
6 | */ |
7 | |
8 | #ifndef __SOC_TEGRA_FLOWCTRL_H__ |
9 | #define __SOC_TEGRA_FLOWCTRL_H__ |
10 | |
11 | #define FLOW_CTRL_HALT_CPU0_EVENTS 0x0 |
12 | #define FLOW_CTRL_WAITEVENT (2 << 29) |
13 | #define FLOW_CTRL_WAIT_FOR_INTERRUPT (4 << 29) |
14 | #define FLOW_CTRL_JTAG_RESUME (1 << 28) |
15 | #define FLOW_CTRL_SCLK_RESUME (1 << 27) |
16 | #define FLOW_CTRL_HALT_CPU_IRQ (1 << 10) |
17 | #define FLOW_CTRL_HALT_CPU_FIQ (1 << 8) |
18 | #define FLOW_CTRL_HALT_LIC_IRQ (1 << 11) |
19 | #define FLOW_CTRL_HALT_LIC_FIQ (1 << 10) |
20 | #define FLOW_CTRL_HALT_GIC_IRQ (1 << 9) |
21 | #define FLOW_CTRL_HALT_GIC_FIQ (1 << 8) |
22 | #define FLOW_CTRL_CPU0_CSR 0x8 |
23 | #define FLOW_CTRL_CSR_INTR_FLAG (1 << 15) |
24 | #define FLOW_CTRL_CSR_EVENT_FLAG (1 << 14) |
25 | #define FLOW_CTRL_CSR_ENABLE_EXT_CRAIL (1 << 13) |
26 | #define FLOW_CTRL_CSR_ENABLE_EXT_NCPU (1 << 12) |
27 | #define FLOW_CTRL_CSR_ENABLE_EXT_MASK ( \ |
28 | FLOW_CTRL_CSR_ENABLE_EXT_NCPU | \ |
29 | FLOW_CTRL_CSR_ENABLE_EXT_CRAIL) |
30 | #define FLOW_CTRL_CSR_ENABLE (1 << 0) |
31 | #define FLOW_CTRL_HALT_CPU1_EVENTS 0x14 |
32 | #define FLOW_CTRL_CPU1_CSR 0x18 |
33 | |
34 | #define TEGRA20_FLOW_CTRL_CSR_WFE_CPU0 (1 << 4) |
35 | #define TEGRA20_FLOW_CTRL_CSR_WFE_BITMAP (3 << 4) |
36 | #define TEGRA20_FLOW_CTRL_CSR_WFI_BITMAP 0 |
37 | |
38 | #define TEGRA30_FLOW_CTRL_CSR_WFI_CPU0 (1 << 8) |
39 | #define TEGRA30_FLOW_CTRL_CSR_WFE_BITMAP (0xF << 4) |
40 | #define TEGRA30_FLOW_CTRL_CSR_WFI_BITMAP (0xF << 8) |
41 | |
42 | #ifndef __ASSEMBLY__ |
43 | #ifdef CONFIG_SOC_TEGRA_FLOWCTRL |
44 | u32 flowctrl_read_cpu_csr(unsigned int cpuid); |
45 | void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value); |
46 | void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value); |
47 | |
48 | void flowctrl_cpu_suspend_enter(unsigned int cpuid); |
49 | void flowctrl_cpu_suspend_exit(unsigned int cpuid); |
50 | #else |
51 | static inline u32 flowctrl_read_cpu_csr(unsigned int cpuid) |
52 | { |
53 | return 0; |
54 | } |
55 | |
56 | static inline void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value) |
57 | { |
58 | } |
59 | |
60 | static inline void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value) {} |
61 | |
62 | static inline void flowctrl_cpu_suspend_enter(unsigned int cpuid) |
63 | { |
64 | } |
65 | |
66 | static inline void flowctrl_cpu_suspend_exit(unsigned int cpuid) |
67 | { |
68 | } |
69 | #endif /* CONFIG_SOC_TEGRA_FLOWCTRL */ |
70 | #endif /* __ASSEMBLY */ |
71 | #endif /* __SOC_TEGRA_FLOWCTRL_H__ */ |
72 | |