coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
flow_ctrl.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/mmio.h>
4 #include <soc/addressmap.h>
5 #include <soc/flow_ctrl.h>
6 
7 #define FLOW_CTRL_HALT_CPU0_EVENTS 0x0
8 #define FLOW_CTRL_WAITEVENT (2 << 29)
9 #define FLOW_CTRL_WAIT_FOR_INTERRUPT (4 << 29)
10 #define FLOW_CTRL_HALT_SCLK (1 << 27)
11 #define FLOW_CTRL_HALT_LIC_IRQ (1 << 11)
12 #define FLOW_CTRL_HALT_LIC_FIQ (1 << 10)
13 #define FLOW_CTRL_HALT_GIC_IRQ (1 << 9)
14 #define FLOW_CTRL_HALT_GIC_FIQ (1 << 8)
15 #define FLOW_CTRL_CPU0_CSR 0x8
16 #define FLOW_CTRL_CSR_INTR_FLAG (1 << 15)
17 #define FLOW_CTRL_CSR_EVENT_FLAG (1 << 14)
18 #define FLOW_CTRL_CSR_WFI_CPU0 (1 << 8)
19 #define FLOW_CTRL_CSR_WFI_BITMAP (0xF << 8)
20 #define FLOW_CTRL_CSR_WFE_BITMAP (0xF << 4)
21 #define FLOW_CTRL_CSR_ENABLE (1 << 0)
22 #define FLOW_CTRL_HALT_CPU1_EVENTS 0x14
23 #define FLOW_CTRL_CPU1_CSR 0x18
24 #define FLOW_CTRL_CC4_CORE0_CTRL 0x6c
25 
26 static void *tegra_flowctrl_base = (void *)TEGRA_FLOW_BASE;
27 
33 };
34 
35 static const uint8_t flowctrl_offset_cpu_csr[] = {
40 };
41 
47 };
48 
50 {
53 }
54 
56 {
59 }
60 
62 {
65 }
66 
67 void flowctrl_cpu_off(int cpu)
68 {
71 
75 }
76 
77 void flowctrl_cpu_on(int cpu)
78 {
82 }
83 
84 void flowctrl_cpu_suspend(int cpu)
85 {
86  uint32_t val;
87 
92 
96 }
static void write32(void *addr, uint32_t val)
Definition: mmio.h:40
static uint32_t read32(const void *addr)
Definition: mmio.h:22
#define FLOW_CTRL_CPU1_CSR
Definition: flow_ctrl.c:23
static void * tegra_flowctrl_base
Definition: flow_ctrl.c:26
#define FLOW_CTRL_WAITEVENT
Definition: flow_ctrl.c:8
#define FLOW_CTRL_CSR_INTR_FLAG
Definition: flow_ctrl.c:16
#define FLOW_CTRL_HALT_LIC_IRQ
Definition: flow_ctrl.c:11
void flowctrl_cpu_off(int cpu)
Definition: flow_ctrl.c:67
#define FLOW_CTRL_HALT_CPU0_EVENTS
Definition: flow_ctrl.c:7
void flowctrl_write_cc4_ctrl(int cpu, uint32_t val)
Definition: flow_ctrl.c:61
static const uint8_t flowctrl_offset_cc4_ctrl[]
Definition: flow_ctrl.c:42
#define FLOW_CTRL_HALT_GIC_IRQ
Definition: flow_ctrl.c:13
static const uint8_t flowctrl_offset_cpu_csr[]
Definition: flow_ctrl.c:35
#define FLOW_CTRL_HALT_SCLK
Definition: flow_ctrl.c:10
#define FLOW_CTRL_CSR_ENABLE
Definition: flow_ctrl.c:21
#define FLOW_CTRL_HALT_LIC_FIQ
Definition: flow_ctrl.c:12
#define FLOW_CTRL_HALT_GIC_FIQ
Definition: flow_ctrl.c:14
void flowctrl_write_cpu_halt(int cpu, uint32_t val)
Definition: flow_ctrl.c:55
#define FLOW_CTRL_CSR_EVENT_FLAG
Definition: flow_ctrl.c:17
#define FLOW_CTRL_CC4_CORE0_CTRL
Definition: flow_ctrl.c:24
static const uint8_t flowctrl_offset_halt_cpu[]
Definition: flow_ctrl.c:28
#define FLOW_CTRL_HALT_CPU1_EVENTS
Definition: flow_ctrl.c:22
void flowctrl_cpu_on(int cpu)
Definition: flow_ctrl.c:77
#define FLOW_CTRL_CSR_WFI_CPU0
Definition: flow_ctrl.c:18
#define FLOW_CTRL_CPU0_CSR
Definition: flow_ctrl.c:15
void flowctrl_cpu_suspend(int cpu)
Definition: flow_ctrl.c:84
void flowctrl_write_cpu_csr(int cpu, uint32_t val)
Definition: flow_ctrl.c:49
@ TEGRA_FLOW_BASE
Definition: addressmap.h:22
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8
u8 val
Definition: sys.c:300