summaryrefslogtreecommitdiff
path: root/drivers/media/platform/imagination/e5010-mmu-regs.h
blob: bfba06956cf2ff43caecc01c6bdeeb759a4f9161 (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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Imagination E5010 JPEG Encoder driver.
 *
 * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
 *
 * Author: David Huang <d-huang@ti.com>
 * Author: Devarsh Thakkar <devarsht@ti.com>
 */

#ifndef _E5010_MMU_REGS_H
#define _E5010_MMU_REGS_H

#define MMU_MMU_DIR_BASE_ADDR_OFFSET					(0x0020)
#define MMU_MMU_DIR_BASE_ADDR_STRIDE					(4)
#define MMU_MMU_DIR_BASE_ADDR_NO_ENTRIES				(4)

#define MMU_MMU_DIR_BASE_ADDR_MMU_DIR_BASE_ADDR_MASK			(0xFFFFFFFF)
#define MMU_MMU_DIR_BASE_ADDR_MMU_DIR_BASE_ADDR_SHIFT			(0)

#define MMU_MMU_TILE_CFG_OFFSET						(0x0040)
#define MMU_MMU_TILE_CFG_STRIDE						(4)
#define MMU_MMU_TILE_CFG_NO_ENTRIES					(4)

#define MMU_MMU_TILE_CFG_TILE_128INTERLEAVE_MASK			(0x00000010)
#define MMU_MMU_TILE_CFG_TILE_128INTERLEAVE_SHIFT			(4)

#define MMU_MMU_TILE_CFG_TILE_ENABLE_MASK				(0x00000008)
#define MMU_MMU_TILE_CFG_TILE_ENABLE_SHIFT				(3)

#define MMU_MMU_TILE_CFG_TILE_STRIDE_MASK				(0x00000007)
#define MMU_MMU_TILE_CFG_TILE_STRIDE_SHIFT				(0)

#define MMU_MMU_TILE_MIN_ADDR_OFFSET					(0x0050)
#define MMU_MMU_TILE_MIN_ADDR_STRIDE					(4)
#define MMU_MMU_TILE_MIN_ADDR_NO_ENTRIES				(4)

#define MMU_MMU_TILE_MIN_ADDR_TILE_MIN_ADDR_MASK			(0xFFFFFFFF)
#define MMU_MMU_TILE_MIN_ADDR_TILE_MIN_ADDR_SHIFT			(0)

#define MMU_MMU_TILE_MAX_ADDR_OFFSET					(0x0060)
#define MMU_MMU_TILE_MAX_ADDR_STRIDE					(4)
#define MMU_MMU_TILE_MAX_ADDR_NO_ENTRIES				(4)

#define MMU_MMU_TILE_MAX_ADDR_TILE_MAX_ADDR_MASK			(0xFFFFFFFF)
#define MMU_MMU_TILE_MAX_ADDR_TILE_MAX_ADDR_SHIFT			(0)

#define MMU_MMU_CONTROL0_OFFSET						(0x0000)

#define MMU_MMU_CONTROL0_MMU_TILING_SCHEME_MASK				(0x00000001)
#define MMU_MMU_CONTROL0_MMU_TILING_SCHEME_SHIFT			(0)

#define MMU_MMU_CONTROL0_MMU_CACHE_POLICY_MASK				(0x00000100)
#define MMU_MMU_CONTROL0_MMU_CACHE_POLICY_SHIFT				(8)

#define MMU_MMU_CONTROL0_FORCE_CACHE_POLICY_BYPASS_MASK			(0x00000200)
#define MMU_MMU_CONTROL0_FORCE_CACHE_POLICY_BYPASS_SHIFT		(9)

#define MMU_MMU_CONTROL0_STALL_ON_PROTOCOL_FAULT_MASK			(0x00001000)
#define MMU_MMU_CONTROL0_STALL_ON_PROTOCOL_FAULT_SHIFT			(12)

#define MMU_MMU_CONTROL1_OFFSET						(0x0008)

#define MMU_MMU_CONTROL1_MMU_FLUSH_MASK					(0x00000008)
#define MMU_MMU_CONTROL1_MMU_FLUSH_SHIFT				(3)
#define MMU_MMU_CONTROL1_MMU_FLUSH_NO_REPS				(4)
#define MMU_MMU_CONTROL1_MMU_FLUSH_SIZE					(1)

#define MMU_MMU_CONTROL1_MMU_INVALDC_MASK				(0x00000800)
#define MMU_MMU_CONTROL1_MMU_INVALDC_SHIFT				(11)
#define MMU_MMU_CONTROL1_MMU_INVALDC_NO_REPS				(4)
#define MMU_MMU_CONTROL1_MMU_INVALDC_SIZE				(1)

#define MMU_MMU_CONTROL1_MMU_FAULT_CLEAR_MASK				(0x00010000)
#define MMU_MMU_CONTROL1_MMU_FAULT_CLEAR_SHIFT				(16)

#define MMU_MMU_CONTROL1_PROTOCOL_FAULT_CLEAR_MASK			(0x00100000)
#define MMU_MMU_CONTROL1_PROTOCOL_FAULT_CLEAR_SHIFT			(20)

#define MMU_MMU_CONTROL1_MMU_PAUSE_SET_MASK				(0x01000000)
#define MMU_MMU_CONTROL1_MMU_PAUSE_SET_SHIFT				(24)

#define MMU_MMU_CONTROL1_MMU_PAUSE_CLEAR_MASK				(0x02000000)
#define MMU_MMU_CONTROL1_MMU_PAUSE_CLEAR_SHIFT				(25)

#define MMU_MMU_CONTROL1_MMU_SOFT_RESET_MASK				(0x10000000)
#define MMU_MMU_CONTROL1_MMU_SOFT_RESET_SHIFT				(28)

#define MMU_MMU_BANK_INDEX_OFFSET					(0x0010)

#define MMU_MMU_BANK_INDEX_MMU_BANK_INDEX_MASK				(0xC0000000)
#define MMU_MMU_BANK_INDEX_MMU_BANK_INDEX_SHIFT				(30)
#define MMU_MMU_BANK_INDEX_MMU_BANK_INDEX_NO_REPS			(16)
#define MMU_MMU_BANK_INDEX_MMU_BANK_INDEX_SIZE				(2)

#define MMU_REQUEST_PRIORITY_ENABLE_OFFSET				(0x0018)

#define MMU_REQUEST_PRIORITY_ENABLE_CMD_PRIORITY_ENABLE_MASK		(0x00008000)
#define MMU_REQUEST_PRIORITY_ENABLE_CMD_PRIORITY_ENABLE_SHIFT		(15)
#define MMU_REQUEST_PRIORITY_ENABLE_CMD_PRIORITY_ENABLE_NO_REPS		(16)
#define MMU_REQUEST_PRIORITY_ENABLE_CMD_PRIORITY_ENABLE_SIZE		(1)

#define MMU_REQUEST_PRIORITY_ENABLE_CMD_MMU_PRIORITY_ENABLE_MASK	(0x00010000)
#define MMU_REQUEST_PRIORITY_ENABLE_CMD_MMU_PRIORITY_ENABLE_SHIFT	(16)

#define MMU_REQUEST_LIMITED_THROUGHPUT_OFFSET				(0x001C)

#define MMU_REQUEST_LIMITED_THROUGHPUT_LIMITED_WORDS_MASK		(0x000003FF)
#define MMU_REQUEST_LIMITED_THROUGHPUT_LIMITED_WORDS_SHIFT		(0)

#define MMU_REQUEST_LIMITED_THROUGHPUT_REQUEST_GAP_MASK			(0x0FFF0000)
#define MMU_REQUEST_LIMITED_THROUGHPUT_REQUEST_GAP_SHIFT		(16)

#define MMU_MMU_ADDRESS_CONTROL_OFFSET					(0x0070)
#define MMU_MMU_ADDRESS_CONTROL_TRUSTED					(IMG_TRUE)

#define MMU_MMU_ADDRESS_CONTROL_MMU_BYPASS_MASK				(0x00000001)
#define MMU_MMU_ADDRESS_CONTROL_MMU_BYPASS_SHIFT			(0)

#define MMU_MMU_ADDRESS_CONTROL_MMU_ENABLE_EXT_ADDRESSING_MASK		(0x00000010)
#define MMU_MMU_ADDRESS_CONTROL_MMU_ENABLE_EXT_ADDRESSING_SHIFT		(4)

#define MMU_MMU_ADDRESS_CONTROL_UPPER_ADDRESS_FIXED_MASK		(0x00FF0000)
#define MMU_MMU_ADDRESS_CONTROL_UPPER_ADDRESS_FIXED_SHIFT		(16)

#define MMU_MMU_CONFIG0_OFFSET						(0x0080)

#define MMU_MMU_CONFIG0_NUM_REQUESTORS_MASK				(0x0000000F)
#define MMU_MMU_CONFIG0_NUM_REQUESTORS_SHIFT				(0)

#define MMU_MMU_CONFIG0_EXTENDED_ADDR_RANGE_MASK			(0x000000F0)
#define MMU_MMU_CONFIG0_EXTENDED_ADDR_RANGE_SHIFT			(4)

#define MMU_MMU_CONFIG0_GROUP_OVERRIDE_SIZE_MASK			(0x00000700)
#define MMU_MMU_CONFIG0_GROUP_OVERRIDE_SIZE_SHIFT			(8)

#define MMU_MMU_CONFIG0_ADDR_COHERENCY_SUPPORTED_MASK			(0x00001000)
#define MMU_MMU_CONFIG0_ADDR_COHERENCY_SUPPORTED_SHIFT			(12)

#define MMU_MMU_CONFIG0_MMU_SUPPORTED_MASK				(0x00002000)
#define MMU_MMU_CONFIG0_MMU_SUPPORTED_SHIFT				(13)

#define MMU_MMU_CONFIG0_TILE_ADDR_GRANULARITY_MASK			(0x001F0000)
#define MMU_MMU_CONFIG0_TILE_ADDR_GRANULARITY_SHIFT			(16)

#define MMU_MMU_CONFIG0_NO_READ_REORDER_MASK				(0x00200000)
#define MMU_MMU_CONFIG0_NO_READ_REORDER_SHIFT				(21)

#define MMU_MMU_CONFIG0_TAGS_SUPPORTED_MASK				(0xFFC00000)
#define MMU_MMU_CONFIG0_TAGS_SUPPORTED_SHIFT				(22)

#define MMU_MMU_CONFIG1_OFFSET						(0x0084)

#define MMU_MMU_CONFIG1_PAGE_SIZE_MASK					(0x0000000F)
#define MMU_MMU_CONFIG1_PAGE_SIZE_SHIFT					(0)

#define MMU_MMU_CONFIG1_PAGE_CACHE_ENTRIES_MASK				(0x0000FF00)
#define MMU_MMU_CONFIG1_PAGE_CACHE_ENTRIES_SHIFT			(8)

#define MMU_MMU_CONFIG1_DIR_CACHE_ENTRIES_MASK				(0x001F0000)
#define MMU_MMU_CONFIG1_DIR_CACHE_ENTRIES_SHIFT				(16)

#define MMU_MMU_CONFIG1_BANDWIDTH_COUNT_SUPPORTED_MASK			(0x01000000)
#define MMU_MMU_CONFIG1_BANDWIDTH_COUNT_SUPPORTED_SHIFT			(24)

#define MMU_MMU_CONFIG1_STALL_COUNT_SUPPORTED_MASK			(0x02000000)
#define MMU_MMU_CONFIG1_STALL_COUNT_SUPPORTED_SHIFT			(25)

#define MMU_MMU_CONFIG1_LATENCY_COUNT_SUPPORTED_MASK			(0x04000000)
#define MMU_MMU_CONFIG1_LATENCY_COUNT_SUPPORTED_SHIFT			(26)

#define MMU_MMU_STATUS0_OFFSET						(0x0088)

#define MMU_MMU_STATUS0_MMU_PF_N_RW_MASK				(0x00000001)
#define MMU_MMU_STATUS0_MMU_PF_N_RW_SHIFT				(0)

#define MMU_MMU_STATUS0_MMU_FAULT_ADDR_MASK				(0xFFFFF000)
#define MMU_MMU_STATUS0_MMU_FAULT_ADDR_SHIFT				(12)

#define MMU_MMU_STATUS1_OFFSET						(0x008C)

#define MMU_MMU_STATUS1_MMU_FAULT_REQ_STAT_MASK				(0x0000FFFF)
#define MMU_MMU_STATUS1_MMU_FAULT_REQ_STAT_SHIFT			(0)

#define MMU_MMU_STATUS1_MMU_FAULT_REQ_ID_MASK				(0x000F0000)
#define MMU_MMU_STATUS1_MMU_FAULT_REQ_ID_SHIFT				(16)

#define MMU_MMU_STATUS1_MMU_FAULT_INDEX_MASK				(0x03000000)
#define MMU_MMU_STATUS1_MMU_FAULT_INDEX_SHIFT				(24)

#define MMU_MMU_STATUS1_MMU_FAULT_RNW_MASK				(0x10000000)
#define MMU_MMU_STATUS1_MMU_FAULT_RNW_SHIFT				(28)

#define MMU_MMU_MEM_REQ_OFFSET						(0x0090)

#define MMU_MMU_MEM_REQ_TAG_OUTSTANDING_MASK				(0x000003FF)
#define MMU_MMU_MEM_REQ_TAG_OUTSTANDING_SHIFT				(0)

#define MMU_MMU_MEM_REQ_EXT_WRRESP_FAULT_MASK				(0x00001000)
#define MMU_MMU_MEM_REQ_EXT_WRRESP_FAULT_SHIFT				(12)

#define MMU_MMU_MEM_REQ_EXT_RDRESP_FAULT_MASK				(0x00002000)
#define MMU_MMU_MEM_REQ_EXT_RDRESP_FAULT_SHIFT				(13)

#define MMU_MMU_MEM_REQ_EXT_READ_BURST_FAULT_MASK			(0x00004000)
#define MMU_MMU_MEM_REQ_EXT_READ_BURST_FAULT_SHIFT			(14)

#define MMU_MMU_MEM_REQ_INT_PROTOCOL_FAULT_MASK				(0x80000000)
#define MMU_MMU_MEM_REQ_INT_PROTOCOL_FAULT_SHIFT			(31)
#define MMU_MMU_MEM_REQ_INT_PROTOCOL_FAULT_NO_REPS			(16)
#define MMU_MMU_MEM_REQ_INT_PROTOCOL_FAULT_SIZE				(1)

#define MMU_MMU_FAULT_SELECT_OFFSET					(0x00A0)

#define MMU_MMU_FAULT_SELECT_MMU_FAULT_SELECT_MASK			(0x0000000F)
#define MMU_MMU_FAULT_SELECT_MMU_FAULT_SELECT_SHIFT			(0)

#define MMU_PROTOCOL_FAULT_OFFSET					(0x00A8)

#define MMU_PROTOCOL_FAULT_FAULT_PAGE_BREAK_MASK			(0x00000001)
#define MMU_PROTOCOL_FAULT_FAULT_PAGE_BREAK_SHIFT			(0)

#define MMU_PROTOCOL_FAULT_FAULT_WRITE_MASK				(0x00000010)
#define MMU_PROTOCOL_FAULT_FAULT_WRITE_SHIFT				(4)

#define MMU_PROTOCOL_FAULT_FAULT_READ_MASK				(0x00000020)
#define MMU_PROTOCOL_FAULT_FAULT_READ_SHIFT				(5)

#define MMU_TOTAL_READ_REQ_OFFSET					(0x0100)

#define MMU_TOTAL_READ_REQ_TOTAL_READ_REQ_MASK				(0xFFFFFFFF)
#define MMU_TOTAL_READ_REQ_TOTAL_READ_REQ_SHIFT				(0)

#define MMU_TOTAL_WRITE_REQ_OFFSET					(0x0104)

#define MMU_TOTAL_WRITE_REQ_TOTAL_WRITE_REQ_MASK			(0xFFFFFFFF)
#define MMU_TOTAL_WRITE_REQ_TOTAL_WRITE_REQ_SHIFT			(0)

#define MMU_READS_LESS_64_REQ_OFFSET					(0x0108)

#define MMU_READS_LESS_64_REQ_READS_LESS_64_REQ_MASK			(0xFFFFFFFF)
#define MMU_READS_LESS_64_REQ_READS_LESS_64_REQ_SHIFT			(0)

#define MMU_WRITES_LESS_64_REQ_OFFSET					(0x010C)

#define MMU_WRITES_LESS_64_REQ_WRITES_LESS_64_REQ_MASK			(0xFFFFFFFF)
#define MMU_WRITES_LESS_64_REQ_WRITES_LESS_64_REQ_SHIFT			(0)

#define MMU_EXT_CMD_STALL_OFFSET					(0x0120)

#define MMU_EXT_CMD_STALL_EXT_CMD_STALL_MASK				(0xFFFFFFFF)
#define MMU_EXT_CMD_STALL_EXT_CMD_STALL_SHIFT				(0)

#define MMU_WRITE_REQ_STALL_OFFSET					(0x0124)

#define MMU_WRITE_REQ_STALL_WRITE_REQ_STALL_MASK			(0xFFFFFFFF)
#define MMU_WRITE_REQ_STALL_WRITE_REQ_STALL_SHIFT			(0)

#define MMU_MMU_MISS_STALL_OFFSET					(0x0128)

#define MMU_MMU_MISS_STALL_MMU_MISS_STALL_MASK				(0xFFFFFFFF)
#define MMU_MMU_MISS_STALL_MMU_MISS_STALL_SHIFT				(0)

#define MMU_ADDRESS_STALL_OFFSET					(0x012C)

#define MMU_ADDRESS_STALL_ADDRESS_STALL_MASK				(0xFFFFFFFF)
#define MMU_ADDRESS_STALL_ADDRESS_STALL_SHIFT				(0)

#define MMU_TAG_STALL_OFFSET						(0x0130)

#define MMU_TAG_STALL_TAG_STALL_MASK					(0xFFFFFFFF)
#define MMU_TAG_STALL_TAG_STALL_SHIFT					(0)

#define MMU_PEAK_READ_OUTSTANDING_OFFSET				(0x0140)

#define MMU_PEAK_READ_OUTSTANDING_PEAK_TAG_OUTSTANDING_MASK		(0x000003FF)
#define MMU_PEAK_READ_OUTSTANDING_PEAK_TAG_OUTSTANDING_SHIFT		(0)

#define MMU_PEAK_READ_OUTSTANDING_PEAK_READ_LATENCY_MASK		(0xFFFF0000)
#define MMU_PEAK_READ_OUTSTANDING_PEAK_READ_LATENCY_SHIFT		(16)

#define MMU_AVERAGE_READ_LATENCY_OFFSET					(0x0144)

#define MMU_AVERAGE_READ_LATENCY_AVERAGE_READ_LATENCY_MASK		(0xFFFFFFFF)
#define MMU_AVERAGE_READ_LATENCY_AVERAGE_READ_LATENCY_SHIFT		(0)

#define MMU_STATISTICS_CONTROL_OFFSET					(0x0160)

#define MMU_STATISTICS_CONTROL_BANDWIDTH_STATS_INIT_MASK		(0x00000001)
#define MMU_STATISTICS_CONTROL_BANDWIDTH_STATS_INIT_SHIFT		(0)

#define MMU_STATISTICS_CONTROL_STALL_STATS_INIT_MASK			(0x00000002)
#define MMU_STATISTICS_CONTROL_STALL_STATS_INIT_SHIFT			(1)

#define MMU_STATISTICS_CONTROL_LATENCY_STATS_INIT_MASK			(0x00000004)
#define MMU_STATISTICS_CONTROL_LATENCY_STATS_INIT_SHIFT			(2)

#define MMU_MMU_VERSION_OFFSET						(0x01D0)

#define MMU_MMU_VERSION_MMU_MAJOR_REV_MASK				(0x00FF0000)
#define MMU_MMU_VERSION_MMU_MAJOR_REV_SHIFT				(16)

#define MMU_MMU_VERSION_MMU_MINOR_REV_MASK				(0x0000FF00)
#define MMU_MMU_VERSION_MMU_MINOR_REV_SHIFT				(8)

#define MMU_MMU_VERSION_MMU_MAINT_REV_MASK				(0x000000FF)
#define MMU_MMU_VERSION_MMU_MAINT_REV_SHIFT				(0)

#define MMU_BYTE_SIZE							(0x01D4)

#endif