summaryrefslogtreecommitdiff
path: root/sys/arch/arm/cortex/pl310_reg.h
blob: ec6b095ddedb924b1a58b468c1de5bb8dee05ea1 (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/* $NetBSD: pl310_reg.h,v 1.4 2014/03/22 17:12:20 reinoud Exp $ */
/*-
 * Copyright (c) 2012 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Matt Thomas of 3am Software Foundry.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _ARM_CORTEX_PL310_REG_H_
#define _ARM_CORTEX_PL310_REG_H_

/*
 * ARM PL310 L2 Cache Controller
 * Used by Cortex cores
 */

#define	L2C_CACHE_ID		0x000
#define	 CACHE_ID_IMPL		__BITS(31,24)
#define	 CACHE_ID_ID		__BITS(15,10)
#define	 CACHE_ID_PART		__BITS(9,6)
#define	 CACHE_ID_PART_PL310	3
#define	 CACHE_ID_REV		__BITS(5,0)
#define	 CACHE_ID_REV_R3P3	9
#define	 CACHE_ID_REV_R3P2	8

#define	L2C_CACHE_TYPE		0x004
#define	 CACHE_TYPE_DATA_BANKING __BIT(31)
#define	 CACHE_TYPE_CTYPE	__BITS(28,25)
#define	 CACHE_TYPE_HARVARD	__BIT(24)
#define	 CACHE_TYPE_DSIZE	__BITS(23,12)
#define	 CACHE_TYPE_ISIZE	__BITS(11,0)
#define	 CACHE_TYPE_xWAYSIZE	__BITS(10,8)
#define	 CACHE_TYPE_xASSOC	__BIT(6)
#define	 CACHE_TYPE_xLINESIZE	__BITS(5,0)

#define	L2C_CTL			0x100
#define	 CTL_ENABLE		__BIT(1)
#define	L2C_AUXCTL		0x104
#define  AUXCTL_RSVD31		__BIT(31)
#define	 AUXCTL_EARLY_BRESP_EN	__BIT(30)
#define	 AUXCTL_I_PREFETCH	__BIT(29)
#define	 AUXCTL_D_PREFETCH	__BIT(28)
#define	 AUXCTL_NS_INT_ACC_CTL	__BIT(27)
#define	 AUXCTL_NS_INT_LOCK_EN	__BIT(26)
#define	 AUXCTL_CACHE_REPL_RR	__BIT(25)
#define	 AUXCTL_FORCE_WA	__BITS(24,23)
#define	 AUXCTL_FORCE_WA_AWCACHE 0
#define	 AUXCTL_FORCE_WA_NEVER	1
#define	 AUXCTL_FORCE_WA_ALWAYS	2
#define	 AUXCTL_FORCE_WA_0	3
#define	 AUXCTL_SHARED_ATT_OVR	__BIT(22)
#define	 AUXCTL_PARITY_EN	__BIT(21)
#define	 AUXCTL_EVT_MON_BUS_EN	__BIT(20)
#define	 AUXCTL_WAY_SIZE	__BITS(19,17)
#define  AUXCTL_WAY_SIZE_RSVD0	0
#define  AUXCTL_WAY_SIZE_16KB	1
#define  AUXCTL_WAY_SIZE_32KB	2
#define  AUXCTL_WAY_SIZE_64KB	3
#define  AUXCTL_WAY_SIZE_128KB	4
#define  AUXCTL_WAY_SIZE_256KB	5
#define  AUXCTL_WAY_SIZE_512KB	6
#define  AUXCTL_WAY_SIZE_RSVD7	7
#define	 AUXCTL_ASSOCIATIVITY	__BIT(16)
#define	 AUXCTL_SH_ATTR_INV_ENA	__BIT(13)
#define	 AUXCTL_EXCL_CACHE_CFG	__BIT(12)
#define	 AUXCTL_ST_BUF_DEV_LIM_EN	__BIT(11)
#define	 AUXCTL_HIPRO_SO_DEV_EN	__BIT(10)
#define	 AUXCTL_FULL_LINE_WR0	__BIT(0)
#define	L2C_TAGRAM_CTL		0x108
#define	L2C_DATARAM_CTL		0x10c

#define	L2C_EV_CTR_CTL		0x200
#define	L2C_EV_CTR1_CTL		0x204
#define	L2C_EV_CTR0_CTL		0x208
#define	L2C_EV_CTR1		0x20c
#define	L2C_EV_CTR0		0x210
#define	L2C_INT_MASK		0x214
#define	L2C_INT_MASK_STS	0x218
#define	L2C_INT_RAW_STS		0x21c
#define	L2C_INT_CLR		0x220

#define	L2C_CACHE_SYNC		0x730
#define	L2C_INV_PA		0x770
#define	L2C_INV_WAY		0x77c
#define	L2C_CLEAN_PA		0x7b0
#define	L2C_CLEAN_INDEX		0x7b8
#define	L2C_CLEAN_WAY		0x7bc
#define	L2C_CLEAN_INV_PA	0x7f0
#define	L2C_CLEAN_INV_INDEX	0x7f8
#define	L2C_CLEAN_INV_WAY	0x7fc

#define	L2C_D_LOCKDOWN0		0x900
#define	L2C_I_LOCKDOWN0		0x904
#define	L2C_D_LOCKDOWN1		0x908
#define	L2C_I_LOCKDOWN1		0x90c
#define	L2C_D_LOCKDOWN2		0x910
#define	L2C_I_LOCKDOWN2		0x914
#define	L2C_D_LOCKDOWN3		0x918
#define	L2C_I_LOCKDOWN3		0x91c
#define	L2C_D_LOCKDOWN4		0x920
#define	L2C_I_LOCKDOWN4		0x924
#define	L2C_D_LOCKDOWN5		0x928
#define	L2C_I_LOCKDOWN5		0x92c
#define	L2C_D_LOCKDOWN6		0x930
#define	L2C_I_LOCKDOWN6		0x934
#define	L2C_D_LOCKDOWN7		0x938
#define	L2C_I_LOCKDOWN7		0x93c
#define	L2C_LOCK_LINE_EN	0x950
#define	L2C_UNLOCK_WAY		0x954

#define	L2C_ADDR_FILTER_START	0xc00
#define	L2C_ADDR_FILTER_END	0xc04

#define	L2C_DEBUG_CTL		0xf40
#define	L2C_PREFETCH_CTL	0xf60
#define  PREFETCHCTL_DBLLINEF_EN	__BIT(30)
#define  PREFETCHCTL_INSTRPREF_EN	__BIT(29)
#define  PREFETCHCTL_DATAPREF_EN	__BIT(28)
#define  PREFETCHCTL_DBLLINEF_WRAP_DA	__BIT(27)
#define  PREFETCHCTL_PREF_DROP_EN	__BIT(24)
#define  PREFETCHCTL_INCRDBL_LINEF_EN	__BIT(23)
#define  PREFETCHCTL_NOSAMEID_EXCL_SEQ_EN __BIT(21)
#define  PREFETCHCTL_PREFETCH_OFFSET_0	0
#define  PREFETCHCTL_PREFETCH_OFFSET_7	7
#define  PREFETCHCTL_PREFETCH_OFFSET_15	15
#define  PREFETCHCTL_PREFETCH_OFFSET_23	23
#define  PREFETCHCTL_PREFETCH_OFFSET_31	31

#define	L2C_POWER_CTL		0xf80
#define  POWERCTL_DYNCLKGATE	__BIT(1)
#define  POWERCTL_STANDBY	__BIT(0)

#endif /* _ARM_CORTEX_PL310_REG_H_ */