blob: bd666346564698e04e69029de73eae863ac45d19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#ifndef __RISCV_SPACEMIT_K1_H__
#define __RISCV_SPACEMIT_K1_H__
#define CSR_MSETUP 0x7c0
#define CSR_MHCR 0x7c1
#define CSR_MRAOP 0x7c2
#define CSR_MHINT 0x7c5
#define CSR_ML2SETUP 0x7f0
/* decache enable */
#define MSETUP_DE BIT(0)
/* icache enable */
#define MSETUP_IE BIT(1)
/* branch prediction enable */
#define MSETUP_BPE BIT(4)
/* prefetch functionality enable */
#define MSETUP_PFE BIT(5)
/* misaligned memory access enable */
#define MSETUP_MME BIT(6)
/* ECC enable */
#define MSETUP_ECCE BIT(16)
/* icache invalidation */
#define MRAOP_ICACHE_INVALID GENMASK(1, 0)
#define PMU_AP_BASE 0xd4282800
#define PMU_AP_CORE0_WAKEUP_OFFSET (PMU_AP_BASE + 0x12c)
#define PMU_AP_CORE4_WAKEUP_OFFSET (PMU_AP_BASE + 0x324)
#define PMU_AP_CLUSTER0_WAKEUP_OFFSET(index) (PMU_AP_CORE0_WAKEUP_OFFSET + index * 4)
#define PMU_AP_CLUSTER1_WAKEUP_OFFSET(index) (PMU_AP_CORE4_WAKEUP_OFFSET + index * 4)
#define PMU_AP_CORE0_IDLE_CFG_OFFSET (PMU_AP_BASE + 0x124)
#define PMU_AP_CORE4_IDLE_CFG_OFFSET (PMU_AP_BASE + 0x304)
#define PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(index) (PMU_AP_CORE0_IDLE_CFG_OFFSET + index * 4)
#define PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(index) (PMU_AP_CORE4_IDLE_CFG_OFFSET + index * 4)
#define PMU_AP_CORE0_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(0)
#define PMU_AP_CORE1_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(1)
#define PMU_AP_CORE2_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(2)
#define PMU_AP_CORE3_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(3)
#define PMU_AP_CORE4_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(0)
#define PMU_AP_CORE5_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(1)
#define PMU_AP_CORE6_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(2)
#define PMU_AP_CORE7_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(3)
#define PMU_AP_CORE0_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(0)
#define PMU_AP_CORE1_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(1)
#define PMU_AP_CORE2_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(2)
#define PMU_AP_CORE3_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(3)
#define PMU_AP_CORE4_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(0)
#define PMU_AP_CORE5_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(1)
#define PMU_AP_CORE6_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(2)
#define PMU_AP_CORE7_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(3)
/* power down */
#define PMU_AP_IDLE_PWRDWN BIT(0)
/* sram power down */
#define PMU_AP_IDLE_SRAM_PWRDWN BIT(1)
/* enable wake up the memory controller */
#define PMU_AP_IDLE_WAKE_MCE BIT(3)
/* disable memory controller software req */
#define PMU_AP_IDLE_MC_SW_REQ BIT(4)
#define PMU_AP_IDLE_PWRDOWN_MASK (PMU_AP_IDLE_PWRDWN | PMU_AP_IDLE_SRAM_PWRDWN | \
PMU_AP_IDLE_WAKE_MCE | PMU_AP_IDLE_MC_SW_REQ)
/* cci */
#define C0_RVBADDR_LO_ADDR 0xd4282db0
#define C0_RVBADDR_HI_ADDR 0xd4282db4
#define C1_RVBADDR_LO_ADDR 0xd4282eb0
#define C1_RVBADDR_HI_ADDR 0xd4282c04
#define CCI_550_PLATFORM_CCI_ADDR 0xd8500000
/* relative to cci base */
#define CCI_550_STATUS 0x000c
/* status register bits */
#define CCI_550_STATUS_CHANGE_PENDING BIT(0)
/* slave interface registers */
#define CCI_550_SLAVE_IFACE0_OFFSET 0x1000
#define CCI_550_SLAVE_IFACE_OFFSET(idx) (CCI_550_SLAVE_IFACE0_OFFSET + ((0x1000) * (idx)))
/* relative to slave interface base */
#define CCI_550_SNOOP_CTRL 0x0000
/* snoop control register bits */
#define CCI_550_SNOOP_CTRL_ENABLE_SNOOPS BIT(0)
#define CCI_550_SNOOP_CTRL_ENABLE_DVMS BIT(1)
/* clusters and CPU mapping */
#define PLATFORM_MAX_CPUS 8
#define PLATFORM_MAX_CPUS_PER_CLUSTER 4
#define CPU_TO_CLUSTER(cpu) ((cpu) / PLATFORM_MAX_CPUS_PER_CLUSTER)
#define PLAT_CCI_CLUSTER0_IFACE_IX 0
#define PLAT_CCI_CLUSTER1_IFACE_IX 1
#endif
|