2 *-----------------------------------------------------------------------------
5 *-----------------------------------------------------------------------------
6 * Copyright (c) 2002-2010, Intel Corporation.
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
9 * of this software and associated documentation files (the "Software"), to deal
10 * in the Software without restriction, including without limitation the rights
11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 * copies of the Software, and to permit persons to whom the Software is
13 * furnished to do so, subject to the following conditions:
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26 *-----------------------------------------------------------------------------
28 * This is the register definition file for the SGX and MSVDX cores.
29 * These registers were formerly part of the plb/regs.h. They are taken out
30 * because Atom E6xx shares the same core as PLB. This file is included in tnc/regs.h
31 *-----------------------------------------------------------------------------
37 extern unsigned long _sgx_base;
38 /*-----------------------------------------------------------------------------
39 * SGX and MSVDX registers
40 ----------------------------------------------------------------------------*/
41 #define SGX_BASE _sgx_base
43 /* bits in PSB_EUR_CR_EVENT_STATUS */
44 #define PSB_DPM_3D_MEM_FREE (1<<0)
45 #define PSB_OUT_OF_MEM_MT (1<<1)
46 #define PSB_OUT_OF_MEM_GBL (1<<2)
47 #define PSB_REACHED_MEM_THRESH (1<<3)
48 #define PSB_TA_TERMINATE (1<<12)
49 #define PSB_TA_FINISHED (1<<13)
50 #define PSB_PIXELBE_END_RENDER (1<<18)
51 #define PSB_DPM_TA_MEM_FREE (1<<24)
52 #define PSB_DPM_OUT_OF_MEM_ZLS (1<<25)
53 #define PSB_TWOD_COMPLETE (1<<27)
54 #define PSB_TA_DPM_FAULT (1<<28)
57 #define PSB_SGX_2D_CMD_SLAVE_PORT (SGX_BASE + 0x4000)
60 /* CORE CLOCK GATING register definitions */
61 #define PSB_CR_CLKGATECTL (SGX_BASE + 0x0000)
62 #define _PSB_C_CLKGATECTL_CLKG_ENABLED 0x0
63 #define _PSB_C_CLKGATECTL_CLKG_DISABLED 0x1
64 #define _PSB_C_CLKGATECTL_CLKG_AUTO 0x2
66 #define _PSB_C_CLKGATECTL_USE_CLKG_SHIFT (20)
67 #define _PSB_C_CLKGATECTL_DPM_CLKG_SHIFT (16)
68 #define _PSB_C_CLKGATECTL_TA_CLKG_SHIFT (12)
69 #define _PSB_C_CLKGATECTL_TSP_CLKG_SHIFT (8)
70 #define _PSB_C_CLKGATECTL_ISP_CLKG_SHIFT (4)
71 #define _PSB_C_CLKGATECTL_2D_CLKG_SHIFT (0)
73 #define _PSB_C_CLKGATECTL_USE_CLKG_MASK (0x3 << 20)
74 #define _PSB_C_CLKGATECTL_DPM_CLKG_MASK (0x3 << 16)
75 #define _PSB_C_CLKGATECTL_TA_CLKG_MASK (0x3 << 12)
76 #define _PSB_C_CLKGATECTL_TSP_CLKG_MASK (0x3 << 8)
77 #define _PSB_C_CLKGATECTL_ISP_CLKG_MASK (0x3 << 4)
78 #define _PSB_C_CLKGATECTL_2D_CLKG_MASK (0x3 << 0)
80 #define PSB_CR_CORE_ID (SGX_BASE + 0x0010)
81 #define _PSB_CC_ID_ID_SHIFT (16)
82 #define _PSB_CC_ID_ID_MASK (0xFFFF << 16)
83 #define _PSB_CC_ID_CONFIG_SHIFT (0)
84 #define _PSB_CC_ID_CONFIG_MASK (0xFFFF << 0)
86 #define PSB_CR_CORE_REVISION (SGX_BASE + 0x0014)
87 #define _PSB_CC_REVISION_DESIGNER_SHIFT (24)
88 #define _PSB_CC_REVISION_DESIGNER_MASK (0xFF << 24)
89 #define _PSB_CC_REVISION_MAJOR_SHIFT (16)
90 #define _PSB_CC_REVISION_MAJOR_MASK (0xFF << 16)
91 #define _PSB_CC_REVISION_MINOR_SHIFT (8)
92 #define _PSB_CC_REVISION_MINOR_MASK (0xFF << 8)
93 #define _PSB_CC_REVISION_MAINTENANCE_SHIFT (0)
94 #define _PSB_CC_REVISION_MAINTENANCE_MASK (0xFF << 0)
96 #define PSB_CR_SOFT_RESET (SGX_BASE + 0x0080)
97 #define _PSB_CS_RESET_TSP_RESET (1 << 6)
98 #define _PSB_CS_RESET_ISP_RESET (1 << 5)
99 #define _PSB_CS_RESET_USE_RESET (1 << 4)
100 #define _PSB_CS_RESET_TA_RESET (1 << 3)
101 #define _PSB_CS_RESET_DPM_RESET (1 << 2)
102 #define _PSB_CS_RESET_TWOD_RESET (1 << 1)
103 #define _PSB_CS_RESET_BIF_RESET (1 << 0)
107 #define PSB_CR_EVENT_HOST_ENABLE2 (SGX_BASE + 0x0110)
108 #define PSB_CR_EVENT_HOST_CLEAR2 (SGX_BASE + 0x0114)
109 #define PSB_CR_EVENT_STATUS2 (SGX_BASE + 0x0118)
110 #define PSB_TRIG_TA (1 << 7)
111 #define PSB_TRIG_3D (1 << 6)
112 #define PSB_TRIG_DL (1 << 5)
113 #define PSB_BIF_REQ_FAULT (1 << 4)
114 #define _PSB_CE_BIF_REQUESTER_FAULT (1 << 4)
115 #define _PSB_CE_DPM_DHOST_FREE_LOAD (1 << 3)
116 #define _PSB_CE_DPM_HOST_FREE_LOAD (1 << 2)
117 #define _PSB_CE_DPM_3D_FREE_LOAD (1 << 1)
118 #define _PSB_CE_DPM_TA_FREE_LOAD (1 << 0)
120 #define PSB_EUR_CR_EVENT_STATUS (SGX_BASE + 0x012c)
122 #define PSB_CR_EVENT_STATUS (SGX_BASE + 0x012C)
124 #define PSB_EUR_CR_EVENT_HOST_ENABLE (SGX_BASE + 0x0130)
126 #define PSB_CR_EVENT_HOST_CLEAR (SGX_BASE + 0x0134)
127 #define _PSB_CE_MASTER_INTERRUPT (1 << 31)
128 #define _PSB_CE_TIMER (1 << 29)
129 #define _PSB_CE_TA_DPM_FAULT (1 << 28)
130 #define _PSB_CE_TWOD_COMPLETE (1 << 27)
131 #define _PSB_CE_MADD_CACHE_INVALCOMPLETE (1 << 26)
132 #define _PSB_CE_DPM_OUT_OF_MEMORY_ZLS (1 << 25)
133 #define _PSB_CE_DPM_TA_MEM_FREE (1 << 24)
134 #define _PSB_CE_ISP_END_TILE (1 << 23)
135 #define _PSB_CE_DPM_INITEND (1 << 22)
136 #define _PSB_CE_OTPM_LOADED (1 << 21)
137 #define _PSB_CE_OTPM_INV (1 << 20)
138 #define _PSB_CE_OTPM_FLUSHED (1 << 19)
139 #define _PSB_CE_PIXELBE_END_RENDER (1 << 18)
140 #define _PSB_CE_ISP_HALT (1 << 17)
141 #define _PSB_CE_ISP_VISIBILITY_FAIL (1 << 16)
142 #define _PSB_CE_BREAKPOINT (1 << 15)
143 #define _PSB_CE_SW_EVENT (1 << 14)
144 #define _PSB_CE_TA_FINISHED (1 << 13)
145 #define _PSB_CE_TA_TERMINATE (1 << 12)
146 #define _PSB_CE_TPC_CLEAR (1 << 11)
147 #define _PSB_CE_TPC_FLUSH (1 << 10)
148 #define _PSB_CE_DPM_CONTROL_CLEAR (1 << 9)
149 #define _PSB_CE_DPM_CONTROL_LOAD (1 << 8)
150 #define _PSB_CE_DPM_CONTROL_STORE (1 << 7)
151 #define _PSB_CE_DPM_STATE_CLEAR (1 << 6)
152 #define _PSB_CE_DPM_STATE_LOAD (1 << 5)
153 #define _PSB_CE_DPM_STATE_STORE (1 << 4)
154 #define _PSB_CE_DPM_REACHED_MEM_THRESH (1 << 3)
155 #define _PSB_CE_DPM_OUT_OF_MEMORY_GBL (1 << 2)
156 #define _PSB_CE_DPM_OUT_OF_MEMORY_MT (1 << 1)
157 #define _PSB_CE_DPM_3D_MEM_FREE (1 << 0)
159 #define PSB_CR_PDS_CACHE_STATUS (SGX_BASE + 0x0138)
161 #define PSB_CR_PDS_CACHE_HOST_ENABLE (SGX_BASE + 0x013C)
163 #define PSB_CR_PDS_CACHE_HOST_CLEAR (SGX_BASE + 0x0140)
164 #define _PSB_CPC_DSC1_INV3 (1 << 8)
165 #define _PSB_CPC_DSC1_INV2 (1 << 7)
166 #define _PSB_CPC_DSC1_INV1 (1 << 6)
167 #define _PSB_CPC_DSC1_INV0 (1 << 5)
168 #define _PSB_CPC_DSC0_INV3 (1 << 4)
169 #define _PSB_CPC_DSC0_INV2 (1 << 3)
170 #define _PSB_CPC_DSC0_INV1 (1 << 2)
171 #define _PSB_CPC_DSC0_INV0 (1 << 1)
172 #define _PSB_CPC_CSC_INV (1 << 0)
175 #define PSB_CR_VDM_START (SGX_BASE + 0x0200)
176 #define _PSB_CV_START_PULSE (1 << 0)
178 #define PSB_CR_TE_TPCCONTROL (SGX_BASE + 0x0224)
179 #define _PSB_CT_TPCCONTROL_CLEAR (1 << 31)
180 #define _PSB_CT_TPCCONTROL_FLUSH (1 << 30)
182 #define PSB_CR_TE_RGNBBOX_X (SGX_BASE + 0x0228)
183 #define _PSB_CT_RGNBOX_X_MAX_SHIFT (16)
184 #define _PSB_CT_RGNBOX_X_MAX_MASK (0x1FF << 16)
185 #define _PSB_CT_RGNBOX_X_MIN_SHIFT (0)
186 #define _PSB_CT_RGNBOX_X_MIN_MASK (0x1FF << 0)
188 #define PSB_CR_TE_RGNBBOX_Y (SGX_BASE + 0x022C)
189 #define _PSB_CT_RGNBOX_Y_MAX_SHIFT (16)
190 #define _PSB_CT_RGNBOX_Y_MAX_MASK (0x1FF << 16)
191 #define _PSB_CT_RGNBOX_Y_MIN_SHIFT (0)
192 #define _PSB_CT_RGNBOX_Y_MIN_MASK (0x1FF << 0)
194 #define PSB_CR_MTE_OTPM_OP (SGX_BASE + 0x024C)
195 #define _PSB_CMO_OP_CSM_FLUSH (1 << 2)
196 #define _PSB_CMO_OP_CSM_LOAD (1 << 1)
197 #define _PSB_CMO_OP_CSM_INV (1 << 0)
199 #define PSB_CR_TE_DIAG1 (SGX_BASE + 0x0280)
200 #define _PSB_CT_DIAG1_PRERGNPRITILE_COUNT_MASK (0xFFFFFFFF)
202 #define PSB_CR_TE_DIAG2 (SGX_BASE + 0x0284)
203 #define _PSB_CT_DIAG2_POSTRGNPRITILE_COUNT_MASK (0xFFFFFFFF)
205 #define PSB_CR_TE_DIAG3 (SGX_BASE + 0x0288)
206 #define _PSB_CT_DIAG3_PREPTEPRITILE_COUNT_MASK (0xFFFFFFFF)
208 #define PSB_CR_TE_DIAG4 (SGX_BASE + 0x028C)
209 #define _PSB_CT_DIAG4_POSTPTEPRITILE_COUNT_MASK (0xFFFFFFFF)
211 #define PSB_CR_TE_DIAG5 (SGX_BASE + 0x0290)
212 #define _PSB_CT_DIAG5_PSGCTLDWORD_COUNT_MASK (0xFFFFFFFF)
214 #define PSB_CR_TE_DIAG6 (SGX_BASE + 0x0294)
215 #define _PSB_CT_DIAG6_PSGRGNHDR_COUNT_MASK (0xFFFF << 0)
217 #define PSB_CR_TE_DIAG7 (SGX_BASE + 0x0298)
218 #define _PSB_CT_DIAG7_TPCREADREQ_COUNT_SHIFT (16)
219 #define _PSB_CT_DIAG7_TPCREADREQ_COUNT_MASK (0xFFFF << 16)
220 #define _PSB_CT_DIAG7_TPCREADHIT_COUNT_SHIFT (0)
221 #define _PSB_CT_DIAG7_TPCREADHIT_COUNT_MASK (0xFFFF << 0)
223 #define PSB_CR_TE_DIAG8 (SGX_BASE + 0x029C)
224 #define _PSB_CT_DIAG8_TPCSTATEINV_COUNT_SHIFT (16)
225 #define _PSB_CT_DIAG8_TPCSTATEINV_COUNT_MASK (0xFFFF << 16)
226 #define _PSB_CT_DIAG8_TPCWRITEHIT_COUNT_SHIFT (0)
227 #define _PSB_CT_DIAG8_TPCWRITEHIT_COUNT_MASK (0xFFFF << 0)
230 #define PSB_CR_ISP_START_RENDER (SGX_BASE + 0x0428)
231 #define _PSB_CI_START_RENDER_PULSE (1 << 0)
233 #define PSB_CR_TSP_PARAMETER_CACHE (SGX_BASE + 0x043C)
234 #define _PSB_CTP_CACHE_INVALIDATE (1 << 0)
238 #define PSB_CR_DPM_3D_PAGE_TABLE_BASE (SGX_BASE + 0x0600)
239 #define _PSB_CD3PT_BASE_ADDR_SHIFT (4)//128-bit aligned address
241 #define PSB_CR_DPM_3D_FREE_LIST (SGX_BASE + 0x0604)
242 #define _PSB_CD3F_LIST_TAIL_SHIFT (16)
243 #define _PSB_CD3F_LIST_TAIL_MASK (0xFFFF << 16)
244 #define _PSB_CD3F_LIST_HEAD_SHIFT (0)
245 #define _PSB_CD3F_LIST_HEAD_MASK (0xFFFF << 0)
247 #define PSB_CR_DPM_HOST_DALLOC_PAGE_TABLE_BASE (SGX_BASE + 0x0608)
248 #define _PSB_CDHDPT_BASE_ADDR_SHIFT (4)//128-bit aligned address
250 #define PSB_CR_DPM_HOST_DALLOC_FREE_LIST (SGX_BASE + 0x060C)
251 #define _PSB_CDHDF_LIST_TAIL_SHIFT (16)
252 #define _PSB_CDHDF_LIST_TAIL_MASK (0xFFFF << 16)
253 #define _PSB_CDHDF_LIST_HEAD_SHIFT (0)
254 #define _PSB_CDHDF_LIST_HEAD_MASK (0xFFFF << 0)
256 #define PSB_CR_DPM_HOST_ALLOC_PAGE_TABLE_BASE (SGX_BASE + 0x0610)
257 #define _PSB_CDHAPT_BASE_ADDR_SHIFT (4)//128-bit aligned address
259 #define PSB_CR_DPM_HOST_ALLOC_FREE_LIST (SGX_BASE + 0x0614)
260 #define _PSB_CDHAF_LIST_TAIL_SHIFT (16)
261 #define _PSB_CDHAF_LIST_TAIL_MASK (0xFFFF << 16)
262 #define _PSB_CDHAF_LIST_HEAD_SHIFT (0)
263 #define _PSB_CDHAF_LIST_HEAD_MASK (0xFFFF << 0)
265 #define PSB_CR_DPM_TA_ALLOC_PAGE_TABLE_BASE (SGX_BASE + 0x0618)
266 #define _PSB_CDTAPT_BASE_ADDR_SHIFT (4)//128-bit aligned address
268 #define PSB_CR_DPM_TA_ALLOC_FREE_LIST (SGX_BASE + 0x061C)
269 #define _PSB_CDTAF_LIST_TAIL_SHIFT (16)
270 #define _PSB_CDTAF_LIST_TAIL_MASK (0xFFFF << 16)
271 #define _PSB_CDTAF_LIST_HEAD_SHIFT (0)
272 #define _PSB_CDTAF_LIST_HEAD_MASK (0xFFFF << 0)
275 #define PSB_CR_DPM_TA_PAGE_THRESHOLD (SGX_BASE + 0x0620)
276 #define _PSB_CDTP_THRESHOLD_VALUE_SHIFT (0)
277 #define _PSB_CDTP_THRESHOLD_VALUE_MASK (0xFFFF << 0)
279 #define PSB_CR_DPM_ZLS_PAGE_THRESHOLD (SGX_BASE + 0x0624)
280 #define _PSB_CDZP_THRESHOLD_VALUE_SHIFT (0)
281 #define _PSB_CDZP_THRESHOLD_VALUE_MASK (0xFFFF << 0)
283 #define PSB_CR_DPM_TA_GLOBAL_LIST (SGX_BASE + 0x0628)
284 #define _PSB_CDTG_LIST_POLICY (1 << 16)
285 #define _PSB_CDTG_LIST_SIZE_SHIFT (0)
286 #define _PSB_CDTG_LIST_SIZE_MASK (0xFFFF << 0)
288 #define PSB_CR_DPM_STATE_CONTEXT_ID (SGX_BASE + 0x0630)
289 #define _PSB_CDSC_ID_ALLOC (1 << 2)
290 #define _PSB_CDSC_ID_DALLOC (1 << 1)
291 #define _PSB_CDSC_ID_LS (1 << 0)
293 #define PSB_CR_DPM_3D_DEALLOCATE (SGX_BASE + 0x063C)
294 #define _PSB_CD3_DEALLOCATE_ENABLE (1 << 1)
295 #define _PSB_CD3_DEALLOCATE_GLOBAL (1 << 0)
297 #define PSB_CR_DPM_ALLOC (SGX_BASE + 0x0640)
298 #define _PSB_CD_ALLOC_PAGE_OUTOFMEMORY (1 << 17)
299 #define _PSB_CD_ALLOC_PAGE_VALID (1 << 16)
300 #define _PSB_CD_ALLOC_PAGE_SHIFT (0)
301 #define _PSB_CD_ALLOC_PAGE_MASK (0xFFFF << 0)
303 #define PSB_CR_DPM_DALLOC (SGX_BASE + 0x0644)
304 #define _PSB_CD_DALLOC_PAGE_FREE (1 << 16)
305 #define _PSB_CD_DALLOC_PAGE_SHIFT (0)
306 #define _PSB_CD_DALLOC_PAGE_MASK (0xFFFF << 0)
308 #define PSB_CR_DPM_TA_ALLOC (SGX_BASE + 0x0648)
309 #define _PSB_CDT_ALLOC_FREE_LIST_PREVIOUS_SHIFT (16)
310 #define _PSB_CDT_ALLOC_FREE_LIST_PREVIOUS_MASK (0xFFFF << 16)
312 #define PSB_CR_DPM_3D (SGX_BASE + 0x064C)
313 #define _PSB_CD_3D_FREE_LIST_PREVIOUS_SHIFT (16)
314 #define _PSB_CD_3D_FREE_LIST_PREVIOUS_MASK (0xFFFF << 16)
316 #define PSB_CR_DPM_HOST_DALLOC (SGX_BASE + 0x0650)
317 #define _PSB_CDH_DALLOC_FREE_LIST_PREVIOUS_SHIFT (16)
318 #define _PSB_CDH_DALLOC_FREE_LIST_PREVIOUS_MASK (0xFFFF << 16)
320 #define PSB_CR_DPM_HOST_ALLOC (SGX_BASE + 0x0654)
321 #define _PSB_CDH_ALLOC_FREE_LIST_PREVIOUS_SHIFT (16)
322 #define _PSB_CDH_ALLOC_FREE_LIST_PREVIOUS_MASK (0xFFFF << 16)
324 #define PSB_CR_DPM_TASK_3D_FREE (SGX_BASE + 0x0680)
325 #define _PSB_CDT3_FREE_LOAD (1 << 0)
327 #define PSB_CR_DPM_TASK_TA_FREE (SGX_BASE + 0x0684)
328 #define _PSB_CDTT_FREE_LOAD (1 << 0)
330 #define PSB_CR_DPM_TASK_HOST_FREE (SGX_BASE + 0x0688)
331 #define _PSB_CDTH_FREE_LOAD (1 << 0)
333 #define PSB_CR_DPM_TASK_DHOST_FREE (SGX_BASE + 0x0690)
334 #define _PSB_CDTD_FREE_LOAD (1 << 0)
336 #define PSB_CR_DPM_TASK_STATE (SGX_BASE + 0x0694)
337 #define _PSB_CDT_STATE_LOAD (1 << 2)
338 #define _PSB_CDT_STATE_CLEAR (1 << 1)
339 #define _PSB_CDT_STATE_STORE (1 << 0)
341 #define PSB_CR_DPM_TASK_CONTROL (SGX_BASE + 0x0698)
342 #define _PSB_CDT_CONTROL_LOAD (1 << 2)
343 #define _PSB_CDT_CONTROL_CLEAR (1 << 1)
344 #define _PSB_CDT_CONTROL_STORE (1 << 0)
346 #define PSB_CR_DPM_OUTOFMEM (SGX_BASE + 0x069C)
347 #define _PSB_CD_OUTOFMEM_ABORTALL (1 << 2)
348 #define _PSB_CD_OUTOFMEM_ABORT (1 << 1)
349 #define _PSB_CD_OUTOFMEM_RESTART (1 << 0)
351 #define PSB_CR_DPM_FREE_CONTEXT (SGX_BASE + 0x06A0)
352 #define _PSB_CDF_CONTEXT_NOW (1 << 0)
354 #define PSB_CR_DPM_3D_TIMEOUT (SGX_BASE + 0x06A4)
355 #define _PSB_CD3_TIMEOUT_NOW (1 << 0)
357 #define PSB_CR_DPM_TA_EVM (SGX_BASE + 0x06A8)
358 #define _PSB_CDT_EVM_INIT (1 << 0)
362 #define PSB_CR_DPM_HOST_DALLOC_FREE_LIST_STATUS1 (SGX_BASE + 0x0708)
363 #define _PSB_CDHDFL_STATUS1_TAIL_SHIFT (16)
364 #define _PSB_CDHDFL_STATUS1_TAIL_MASK (0xFFFF << 16)
365 #define _PSB_CDHDFL_STATUS1_HEAD_SHIFT (0)
366 #define _PSB_CDHDFL_STATUS1_HEAD_MASK (0xFFFF << 0)
368 #define PSB_CR_DPM_PAGE_STATUS (SGX_BASE + 0x0724)
369 #define _PSB_CDP_STATUS_TA_SHIFT (16)
370 #define _PSB_CDP_STATUS_TA_MASK (0xFFFF << 16)
371 #define _PSB_CDP_STATUS_TOTAL_SHIFT (0)
372 #define _PSB_CDP_STATUS_TOTAL_MASK (0xFFFF << 0)
374 #define PSB_CR_DPM_GLOBAL_PAGE_STATUS (SGX_BASE + 0x072C)
375 #define _PSB_CDGP_STATUS_TA_SHIFT (16)
376 #define _PSB_CDGP_STATUS_TA_MASK (0xFFFF << 16)
377 #define _PSB_CDGP_STATUS_TOTAL_SHIFT (0)
378 #define _PSB_CDGP_STATUS_TOTAL_MASK (0xFFFF << 0)
380 #define PSB_CR_CACHE_CTRL (SGX_BASE + 0x0804)
381 #define _PSB_CC_CTRL_L0P1OFF (1 << 30)
382 #define _PSB_CC_CTRL_L0P0OFF (1 << 29)
383 #define _PSB_CC_CTRL_INVALIDATE (1 << 28)
384 #define _PSB_CC_CTRL_L1P1OFF (1 << 26)
385 #define _PSB_CC_CTRL_L1P0OFF (1 << 25)
386 #define _PSB_CC_CTRL_L2OFF (1 << 24)
387 #define _PSB_CC_CTRL_PARTDM3_SHIFT (12)
388 #define _PSB_CC_CTRL_PARTDM3_MASK (0xF << 12)
389 #define _PSB_CC_CTRL_PARTDM2_SHIFT (8)
390 #define _PSB_CC_CTRL_PARTDM2_MASK (0xF << 8)
391 #define _PSB_CC_CTRL_PARTDM1_SHIFT (4)
392 #define _PSB_CC_CTRL_PARTDM1_MASK (0xF << 4)
393 #define _PSB_CC_CTRL_PARTDM0_SHIFT (0)
394 #define _PSB_CC_CTRL_PARTDM0_MASK (0xF << 0)
397 #define PSB_CR_USE_CACHE (SGX_BASE + 0x0A08)
398 #define _PSB_CU_CACHE_INVALIDATE (1 << 0)
400 /* USSE register definitions */
402 /* USSE/PDS - 0xA00-0xBFF */
404 #define PSB_CR_USE_CTRL (SGX_BASE + 0x0A00)
405 #define _PSB_CU_CTRL_REGBOUND_ZERO (1 << 19)
406 #define _PSB_CU_CTRL_REGBOUND_ZERO_R1 (0 << 19)
407 #define _PSB_CU_CTRL_INSTLIMIT_SHIFT (14)
408 #define _PSB_CU_CTRL_INSTLIMIT_MASK (0x1F << 14)
409 #define _PSB_CU_CTRL_ST_TTE_SCALE_SHIFT (12)
410 #define _PSB_CU_CTRL_ST_TTE_SCALE_MASK (0x3 << 12)
411 #define _PSB_CU_CTRL_CACHE_TTE_SHIFT (4)
412 #define _PSB_CU_CTRL_CACHE_TTE_MASK (0xFF << 4)
413 #define _PSB_CU_CTRL_KILL_MODE_SHIFT (2)
414 #define _PSB_CU_CTRL_KILL_MODE_MASK (0x3 << 2)
415 #define _PSB_CU_CTRL_KILL_MODE_OFF (0 << 2)
416 #define _PSB_CU_CTRL_KILL_MODE_FLUSH (1 << 2)
417 #define _PSB_CU_CTRL_KILL_MODE_KILL (2 << 2)
418 #define _PSB_CU_CTRL_KILL_DM_SHIFT (0)
419 #define _PSB_CU_CTRL_KILL_DM_MASK (0x3 << 0)
422 #define PSB_CR_USE_CODE_BASE(i) (SGX_BASE + (0x0A0C + ((i) << 2)))
423 #define _PSB_CUC_BASE_DM_SHIFT (25)
424 #define _PSB_CUC_BASE_DM_MASK (0x3 << 25)
425 #define _PSB_CUC_BASE_ADDR_SHIFT (0) // 1024-bit aligned address?
426 #define _PSB_CUC_BASE_ADDR_ALIGNSHIFT (7)
427 #define _PSB_CUC_BASE_ADDR_MASK (0x1FFFFFF << 0)
428 #define _PSB_CUC_DM_VERTEX (0)
429 #define _PSB_CUC_DM_PIXEL (1)
430 #define _PSB_CUC_DM_RESERVED (2)
431 #define _PSB_CUC_DM_EDM (3)
433 #define SGX_MAX_USSE_THRDS 16
434 #define PSB_USE_OFFSET_MASK 0x0007FFFF
435 #define PSB_USE_OFFSET_SIZE (SGX_USE_OFFSET_MASK + 1)
436 #define PSB_CR_USE_CODE_BASE0 (SGX_BASE + 0x0A0C)
437 #define PSB_CR_USE_CODE_BASE1 (SGX_BASE + 0x0A10)
438 #define PSB_CR_USE_CODE_BASE2 (SGX_BASE + 0x0A14)
439 #define PSB_CR_USE_CODE_BASE3 (SGX_BASE + 0x0A18)
440 #define PSB_CR_USE_CODE_BASE4 (SGX_BASE + 0x0A1C)
441 #define PSB_CR_USE_CODE_BASE5 (SGX_BASE + 0x0A20)
442 #define PSB_CR_USE_CODE_BASE6 (SGX_BASE + 0x0A24)
443 #define PSB_CR_USE_CODE_BASE7 (SGX_BASE + 0x0A28)
444 #define PSB_CR_USE_CODE_BASE8 (SGX_BASE + 0x0A2C)
445 #define PSB_CR_USE_CODE_BASE9 (SGX_BASE + 0x0A30)
446 #define PSB_CR_USE_CODE_BASE10 (SGX_BASE + 0x0A34)
447 #define PSB_CR_USE_CODE_BASE11 (SGX_BASE + 0x0A38)
448 #define PSB_CR_USE_CODE_BASE12 (SGX_BASE + 0x0A3C)
449 #define PSB_CR_USE_CODE_BASE13 (SGX_BASE + 0x0A40)
450 #define PSB_CR_USE_CODE_BASE14 (SGX_BASE + 0x0A44)
451 #define PSB_CR_USE_CODE_BASE15 (SGX_BASE + 0x0A48)
453 #define PSB_CR_EVENT_PDS_ENABLE (SGX_BASE + 0x0A58)
454 #define _PSB_CEP_ENABLE_TIMER (1 << 29)
455 #define _PSB_CEP_ENABLE_TA_DPM_FAULT (1 << 28)
456 #define _PSB_CEP_ENABLE_TWOD_COMPLETE (1 << 27)
457 #define _PSB_CEP_ENABLE_MADD_CACHE_INVALCOMPLETE (1 << 26)
458 #define _PSB_CEP_ENABLE_DPM_OUT_OF_MEMORY_ZLS (1 << 25)
459 #define _PSB_CEP_ENABLE_DPM_TA_MEM_FREE (1 << 24)
460 #define _PSB_CEP_ENABLE_ISP_END_PASS (1 << 23)
461 #define _PSB_CEP_ENABLE_DPM_INITEND (1 << 22)
462 #define _PSB_CEP_ENABLE_OTPM_LOADED (1 << 21)
463 #define _PSB_CEP_ENABLE_OTPM_INV (1 << 20)
464 #define _PSB_CEP_ENABLE_OTPM_FLUSHED (1 << 19)
465 #define _PSB_CEP_ENABLE_PIXELBE_END_RENDER (1 << 18)
466 #define _PSB_CEP_ENABLE_ISP_HALT (1 << 17)
467 #define _PSB_CEP_ENABLE_ISP_VISIBILITY_FAIL (1 << 16)
468 #define _PSB_CEP_ENABLE_BREAKPOINT (1 << 15)
469 #define _PSB_CEP_ENABLE_SW_EVENT (1 << 14)
470 #define _PSB_CEP_ENABLE_TA_FINISHED (1 << 13)
471 #define _PSB_CEP_ENABLE_TA_TERMINATE (1 << 12)
472 #define _PSB_CEP_ENABLE_TPC_CLEAR (1 << 11)
473 #define _PSB_CEP_ENABLE_TPC_FLUSH (1 << 10)
474 #define _PSB_CEP_ENABLE_DPM_CONTROL_CLEAR (1 << 9)
475 #define _PSB_CEP_ENABLE_DPM_CONTROL_LOAD (1 << 8)
476 #define _PSB_CEP_ENABLE_DPM_CONTROL_STORE (1 << 7)
477 #define _PSB_CEP_ENABLE_DPM_STATE_CLEAR (1 << 6)
478 #define _PSB_CEP_ENABLE_DPM_STATE_LOAD (1 << 5)
479 #define _PSB_CEP_ENABLE_DPM_STATE_STORE (1 << 4)
480 #define _PSB_CEP_ENABLE_DPM_REACHED_MEM_THRESH (1 << 3)
481 #define _PSB_CEP_ENABLE_DPM_OUT_OF_MEMORY_GBL (1 << 2)
482 #define _PSB_CEP_ENABLE_DPM_OUT_OF_MEMORY_MT (1 << 1)
483 #define _PSB_CEP_ENABLE_DPM_3D_MEM_FREE (1 << 0)
485 #define PSB_CR_DMS_CTRL (SGX_BASE + 0x0A74)
486 #define _PSB_CD_CTRL_MAX_NUM_VERTEX_PARTITIONS_SHIFT (25)
487 #define _PSB_CD_CTRL_MAX_NUM_VERTEX_PARTITIONS_MASK (0x7 << 25)
488 #define _PSB_CD_CTRL_MAX_NUM_PIXEL_PARTITIONS_SHIFT (22)
489 #define _PSB_CD_CTRL_MAX_NUM_PIXEL_PARTITIONS_MASK (0x7 << 22)
490 #define _PSB_CD_CTRL_MAX_NUM_EDM_TASKS_SHIFT (16)
491 #define _PSB_CD_CTRL_MAX_NUM_EDM_TASKS_MASK (0x3F << 16)
492 #define _PSB_CD_CTRL_MAX_NUM_VERTEX_TASKS_SHIFT (10)
493 #define _PSB_CD_CTRL_MAX_NUM_VERTEX_TASKS_MASK (0x3F << 10)
494 #define _PSB_CD_CTRL_MAX_NUM_PIXEL_TASKS_SHIFT (4)
495 #define _PSB_CD_CTRL_MAX_NUM_PIXEL_TASKS_MASK (0x3F << 4)
496 #define _PSB_CD_CTRL_DISABLE_DM_SHIFT (0)
497 #define _PSB_CD_CTRL_DISABLE_DM_MASK (0xF << 0)
498 #define _PSB_CD_CTRL_DISABLE_DM_VERTEX (1 << 0)
499 #define _PSB_CD_CTRL_DISABLE_DM_PIXEL (1 << 1)
500 #define _PSB_CD_CTRL_DISABLE_DM_EVENT (1 << 2)
501 #define _PSB_CD_CTRL_DISABLE_DM_LOOPBACK (1 << 3)
503 #define PSB_CR_DMS_AGE (SGX_BASE + 0x0A78)
504 #define _PSB_CD_AGE_ENABLE (1 << 16)
505 #define _PSB_CD_AGE_VALUE_SHIFT (0)
506 #define _PSB_CD_AGE_VALUE_MASK (0xFFFF << 0)
508 #define PSB_CR_USE_G0 (SGX_BASE + 0x0A7C)
509 #define _PSB_CU_G0_VALUE_SHIFT (0)
510 #define _PSB_CU_G0_VALUE_MASK (0xFF << 0)
512 #define PSB_CR_USE_G1 (SGX_BASE + 0x0A80)
513 #define _PSB_CU_G1_VALUE_SHIFT (0)
514 #define _PSB_CU_G1_VALUE_MASK (0xFF << 0)
516 #define PSB_CR_PDS_EXEC_BASE (SGX_BASE + 0x0AB8)
517 #define _PSB_CR_PDS_EXEC_BASE_ADDR_SHIFT (20)/* 1MB aligned address */
518 #define _PSB_CR_PDS_EXEC_BASE_ADDR_ALIGNSHIFT (20)
520 #define PSB_CR_USE0_DM_SLOT (SGX_BASE + 0x0AA4)
522 #define PSB_CR_USE1_DM_SLOT (SGX_BASE + 0x0AA8)
524 #define PSB_CR_USE_TMPREG (SGX_BASE + 0x0AAC)
525 #define _PSB_CU_TMPREG_INIT_SHIFT (3)
526 #define _PSB_CU_TMPREG_INIT_MASK (0x1F << 3)
527 #define _PSB_CU_TMPREG_SIZE_SHIFT (0)
528 #define _PSB_CU_TMPREG_SIZE_MASK (0x7 << 0)
530 #define PSB_CR_EVENT_TIMER (SGX_BASE + 0x0ACC)
531 #define _PSB_CE_TIMER_ENABLE (1 << 24)
532 #define _PSB_CE_TIMER_VALUE_SHIFT (0)
533 #define _PSB_CE_TIMER_VALUE_MASK (0xFFFFFF << 0)
535 #define PSB_CR_PDS (SGX_BASE + 0x0ABC)
536 #define _PSB_C_PDS_DOUT_TIMEOUT_DISABLE (1 << 6)
537 #define _PSB_C_PDS_ATTRIBUTE_CHUNK_START_SHIFT (0)
538 #define _PSB_C_PDS_ATTRIBUTE_CHUNK_START_MASK (0x3F << 0)
540 #define PSB_CR_PDS_INV0 (SGX_BASE + 0x0AD0)
542 #define PSB_CR_PDS_INV1 (SGX_BASE + 0x0AD4)
544 #define PSB_CR_PDS_INV2 (SGX_BASE + 0x0AD8)
546 #define PSB_CR_PDS_INV3 (SGX_BASE + 0x0ADC)
547 #define _PSB_CP_INV_DSC (1 << 0)
549 #define PSB_CR_PDS_INV_CSC (SGX_BASE + 0x0AE0)
550 #define _PSB_CPI_CSC_KICK (1 << 0)
553 #define PSB_CR_USE0_SERV_PIXEL (SGX_BASE + 0x0B08)
554 #define _PSB_CUS_PIXEL_EMPTY (1 << 16)
555 #define _PSB_CUS_PIXEL_COUNT_SHIFT (0)
556 #define _PSB_CUS_PIXEL_COUNT_MASK (0xFFFF << 0)
558 #define PSB_CR_USE0_SERV_VERTEX (SGX_BASE + 0x0B0C)
559 #define _PSB_CUS_VERTEX_EMPTY (1 << 16)
560 #define _PSB_CUS_VERTEX_COUNT_SHIFT (0)
561 #define _PSB_CUS_VERTEX_COUNT_MASK (0xFFFF << 0)
563 #define PSB_CR_USE0_SERV_EVENT (SGX_BASE + 0x0B10)
564 #define _PSB_CUS_EVENT_EMPTY (1 << 16)
565 #define _PSB_CUS_EVENT_COUNT_SHIFT (0)
566 #define _PSB_CUS_EVENT_COUNT_MASK (0xFFFF << 0)
568 #define PSB_CR_USE1_SERV_PIXEL (SGX_BASE + 0x0B14)
570 #define PSB_CR_USE1_SERV_VERTEX (SGX_BASE + 0x0B18)
572 #define PSB_CR_USE1_SERV_EVENT (SGX_BASE + 0x0B1C)
575 /* BIF register definitions */
576 #define PSB_CR_BIF_CTRL (SGX_BASE + 0x0C00)
577 #define _PSB_CB_CTRL_CLEAR_FAULT (1 << 4)
578 #define _PSB_CB_CTRL_INVALDC (1 << 3)
579 #define _PSB_CB_CTRL_FLUSH (1 << 2)
580 #define _PSB_MMU_ER_MASK 0x0001FF00
581 #define _PSB_MMU_ER_HOST (1 << 16)
583 #define PSB_CR_BIF_INT_STAT (SGX_BASE + 0x0C04)
585 #define PSB_CR_BIF_FAULT (SGX_BASE + 0x0C08)
586 #define _PSB_CBI_STAT_PF_N_RW (1 << 14)
587 #define _PSB_CBI_STAT_FAULT_SHIFT (0)
588 #define _PSB_CBI_STAT_FAULT_MASK (0x3FFF << 0)
589 #define _PSB_CBI_STAT_FAULT_CACHE (1 << 1)
590 #define _PSB_CBI_STAT_FAULT_TA (1 << 2)
591 #define _PSB_CBI_STAT_FAULT_VDM (1 << 3)
592 #define _PSB_CBI_STAT_FAULT_2D (1 << 4)
593 #define _PSB_CBI_STAT_FAULT_PBE (1 << 5)
594 #define _PSB_CBI_STAT_FAULT_TSP (1 << 6)
595 #define _PSB_CBI_STAT_FAULT_ISP (1 << 7)
596 #define _PSB_CBI_STAT_FAULT_USSEPDS (1 << 8)
597 #define _PSB_CBI_STAT_FAULT_HOST (1 << 9)
599 #define PSB_CR_BIF_BANK_SET (SGX_BASE + 0x0C74)
600 #define _PSB_CBB_SET_SELECT_SHIFT (0)
601 #define _PSB_CBB_SET_SELECT_MASK (0x3FF << 0)
602 #define _PSB_CBB_SET_SELECT_DPM_TA (0 << 9)
603 #define _PSB_CBB_SET_SELECT_DPM_3D (1 << 9)
604 #define _PSB_CBB_SET_SELECT_EDM_B0 (0 << 8)
605 #define _PSB_CBB_SET_SELECT_EDM_B1 (1 << 8)
606 #define _PSB_CBB_SET_SELECT_TA_B0 (0 << 6)
607 #define _PSB_CBB_SET_SELECT_TA_B0B1 (1 << 6)
608 #define _PSB_CBB_SET_SELECT_TA_B1B0 (2 << 6)
609 #define _PSB_CBB_SET_SELECT_TA_B1 (3 << 6)
610 #define _PSB_CBB_SET_SELECT_HOST_B0 (0 << 4)
611 #define _PSB_CBB_SET_SELECT_HOST_B1 (3 << 4)
612 #define _PSB_CBB_SET_SELECT_3D_B0 (0 << 2)
613 #define _PSB_CBB_SET_SELECT_3D_B0B1 (1 << 2)
614 #define _PSB_CBB_SET_SELECT_3D_B1B0 (2 << 2)
615 #define _PSB_CBB_SET_SELECT_3D_B1 (3 << 2)
616 #define _PSB_CBB_SET_SELECT_2D_B0 (0 << 0)
617 #define _PSB_CBB_SET_SELECT_2D_B1 (3 << 0)
619 #define PSB_CR_BIF_BANK0 (SGX_BASE + 0x0C78)
620 #define PSB_CR_BIF_BANK1 (SGX_BASE + 0x0C7C)
622 #define _PSB_CB_BANK_INDEX_2D_SHIFT (16)
623 #define _PSB_CB_BANK_INDEX_2D_MASK (0xF << 16)
624 #define _PSB_CB_BANK_INDEX_3D_SHIFT (12)
625 #define _PSB_CB_BANK_INDEX_3D_MASK (0xF << 12)
626 #define _PSB_CB_BANK_INDEX_HOST_SHIFT (8)
627 #define _PSB_CB_BANK_INDEX_HOST_MASK (0xF << 8)
628 #define _PSB_CB_BANK_INDEX_TA_SHIFT (4)
629 #define _PSB_CB_BANK_INDEX_TA_MASK (0xF << 4)
630 #define _PSB_CB_BANK_INDEX_EDM_SHIFT (0)
631 #define _PSB_CB_BANK_INDEX_EDM_MASK (0xF << 0)
633 #define PSB_CR_BIF_DIR_LIST_BASE0 (SGX_BASE + 0x0C84)
634 #define PSB_CR_BIF_DIR_LIST_BASE1 (SGX_BASE + 0x0C38)
635 #define PSB_CR_BIF_TWOD_REQ_BASE (SGX_BASE + 0x0C88)
637 #define PSB_CR_BIF_TA_REQ_BASE (SGX_BASE + 0x0C90)
638 #define _PSB_CBTR_BASE_ADDR_SHIFT (20) // 1MB aligned address
640 #define PSB_CR_BIF_MEM_ARB_CONFIG (SGX_BASE + 0x0CA0)
641 #define _PSB_CBMA_CONFIG_TTE_THRESH_SHIFT (12)
642 #define _PSB_CBMA_CONFIG_TTE_THRESH_MASK (0xFFF << 12)
643 #define _PSB_CBMA_CONFIG_BEST_CNT_SHIFT (4)
644 #define _PSB_CBMA_CONFIG_BEST_CNT_MASK (0xFF << 4)
645 #define _PSB_CBMA_CONFIG_PAGE_SIZE_SHIFT (0)
646 #define _PSB_CBMA_CONFIG_PAGE_SIZE_MASK (0xF << 0)
648 #define PSB_CR_BIF_3D_REQ_BASE (SGX_BASE + 0x0CAC)
649 #define _PSB_CB3R_BASE_ADDR_ALIGNSHIFT (20)
650 #define _PSB_CB3R_BASE_ADDR_SHIFT (20) // 1MB aligned address
653 #define PSB_EUR_CR_2D_SOCIF (SGX_BASE + 0x0e18)
655 #define PSB_EUR_CR_2D_BLIT_STATUS (SGX_BASE + 0x0e04)
657 #endif /* _REGS_H_ */