| 1 |
|
| 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 __ASSEMBLER__
|
| 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
|
| 70 | #endif
|
| 71 | #endif
|