staging: emgd: experimental build 2667
[profile/ivi/intel-emgd-kmod.git] / emgd / include / psb_regs.h
1 /*
2  *-----------------------------------------------------------------------------
3  * Filename: psb_regs.h
4  * $Revision: 1.9 $
5  *-----------------------------------------------------------------------------
6  * Copyright (c) 2002-2010, Intel Corporation.
7  *
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:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
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
24  * THE SOFTWARE.
25  *
26  *-----------------------------------------------------------------------------
27  * Description:
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  *-----------------------------------------------------------------------------
32  */
33
34 #ifndef _PSB_REGS_H_
35 #define _PSB_REGS_H_
36
37 extern unsigned long _sgx_base;
38 /*-----------------------------------------------------------------------------
39  * SGX and MSVDX registers
40  ----------------------------------------------------------------------------*/
41 #define SGX_BASE _sgx_base
42
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)
55
56 /* PSB Registers */
57 #define PSB_SGX_2D_CMD_SLAVE_PORT               (SGX_BASE + 0x4000)
58
59 /* 0x000-0x0ff */
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
65
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)
72
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)
79
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)
85
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)
95
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)
104
105 /* 0x100-0x200 */
106
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)
119
120 #define PSB_EUR_CR_EVENT_STATUS                 (SGX_BASE + 0x012c)
121
122 #define PSB_CR_EVENT_STATUS                     (SGX_BASE + 0x012C)
123
124 #define PSB_EUR_CR_EVENT_HOST_ENABLE            (SGX_BASE + 0x0130)
125
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)
158
159 #define PSB_CR_PDS_CACHE_STATUS                 (SGX_BASE + 0x0138)
160
161 #define PSB_CR_PDS_CACHE_HOST_ENABLE            (SGX_BASE + 0x013C)
162
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)
173
174 /* 0x200 - 0x300 */
175 #define PSB_CR_VDM_START                        (SGX_BASE + 0x0200)
176 #define _PSB_CV_START_PULSE                     (1 << 0)
177
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)
181
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)
187
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)
193
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)
198
199 #define PSB_CR_TE_DIAG1                         (SGX_BASE + 0x0280)
200 #define _PSB_CT_DIAG1_PRERGNPRITILE_COUNT_MASK  (0xFFFFFFFF)
201
202 #define PSB_CR_TE_DIAG2                         (SGX_BASE + 0x0284)
203 #define _PSB_CT_DIAG2_POSTRGNPRITILE_COUNT_MASK (0xFFFFFFFF)
204
205 #define PSB_CR_TE_DIAG3                         (SGX_BASE + 0x0288)
206 #define _PSB_CT_DIAG3_PREPTEPRITILE_COUNT_MASK  (0xFFFFFFFF)
207
208 #define PSB_CR_TE_DIAG4                         (SGX_BASE + 0x028C)
209 #define _PSB_CT_DIAG4_POSTPTEPRITILE_COUNT_MASK (0xFFFFFFFF)
210
211 #define PSB_CR_TE_DIAG5                         (SGX_BASE + 0x0290)
212 #define _PSB_CT_DIAG5_PSGCTLDWORD_COUNT_MASK    (0xFFFFFFFF)
213
214 #define PSB_CR_TE_DIAG6                         (SGX_BASE + 0x0294)
215 #define _PSB_CT_DIAG6_PSGRGNHDR_COUNT_MASK      (0xFFFF << 0)
216
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)
222
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)
228
229 /* 0x400 - 0x500 */
230 #define PSB_CR_ISP_START_RENDER                 (SGX_BASE + 0x0428)
231 #define _PSB_CI_START_RENDER_PULSE              (1 << 0)
232
233 #define PSB_CR_TSP_PARAMETER_CACHE              (SGX_BASE + 0x043C)
234 #define _PSB_CTP_CACHE_INVALIDATE               (1 << 0)
235
236 /* 0x600 - 0x700 */
237
238 #define PSB_CR_DPM_3D_PAGE_TABLE_BASE           (SGX_BASE + 0x0600)
239 #define _PSB_CD3PT_BASE_ADDR_SHIFT              (4)//128-bit aligned address
240
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)
246
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
249
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)
255
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
258
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)
264
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
267
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)
273
274
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)
278
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)
282
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)
287
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)
292
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)
296
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)
302
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)
307
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)
311
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)
315
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)
319
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)
323
324 #define PSB_CR_DPM_TASK_3D_FREE                 (SGX_BASE + 0x0680)
325 #define _PSB_CDT3_FREE_LOAD                     (1 << 0)
326
327 #define PSB_CR_DPM_TASK_TA_FREE                 (SGX_BASE + 0x0684)
328 #define _PSB_CDTT_FREE_LOAD                     (1 << 0)
329
330 #define PSB_CR_DPM_TASK_HOST_FREE               (SGX_BASE + 0x0688)
331 #define _PSB_CDTH_FREE_LOAD                     (1 << 0)
332
333 #define PSB_CR_DPM_TASK_DHOST_FREE              (SGX_BASE + 0x0690)
334 #define _PSB_CDTD_FREE_LOAD                     (1 << 0)
335
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)
340
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)
345
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)
350
351 #define PSB_CR_DPM_FREE_CONTEXT                 (SGX_BASE + 0x06A0)
352 #define _PSB_CDF_CONTEXT_NOW                    (1 << 0)
353
354 #define PSB_CR_DPM_3D_TIMEOUT                   (SGX_BASE + 0x06A4)
355 #define _PSB_CD3_TIMEOUT_NOW                    (1 << 0)
356
357 #define PSB_CR_DPM_TA_EVM                       (SGX_BASE + 0x06A8)
358 #define _PSB_CDT_EVM_INIT                       (1 << 0)
359
360 /* 0x700 - 0x800 */
361
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)
367
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)
373
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)
379
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)
395
396 /* 0xa00 - 0xb00 */
397 #define PSB_CR_USE_CACHE                        (SGX_BASE + 0x0A08)
398 #define _PSB_CU_CACHE_INVALIDATE                (1 << 0)
399
400 /* USSE register definitions */
401
402 /* USSE/PDS - 0xA00-0xBFF */
403
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)
420
421
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)
432
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)
452
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)
484
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)
502
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)
507
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)
511
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)
515
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)
519
520 #define PSB_CR_USE0_DM_SLOT                     (SGX_BASE + 0x0AA4)
521
522 #define PSB_CR_USE1_DM_SLOT                     (SGX_BASE + 0x0AA8)
523
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)
529
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)
534
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)
539
540 #define PSB_CR_PDS_INV0                         (SGX_BASE + 0x0AD0)
541
542 #define PSB_CR_PDS_INV1                         (SGX_BASE + 0x0AD4)
543
544 #define PSB_CR_PDS_INV2                         (SGX_BASE + 0x0AD8)
545
546 #define PSB_CR_PDS_INV3                         (SGX_BASE + 0x0ADC)
547 #define _PSB_CP_INV_DSC                         (1 << 0)
548
549 #define PSB_CR_PDS_INV_CSC                      (SGX_BASE + 0x0AE0)
550 #define _PSB_CPI_CSC_KICK                       (1 << 0)
551
552 /* 0xb00 - 0xc00 */
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)
557
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)
562
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)
567
568 #define PSB_CR_USE1_SERV_PIXEL                  (SGX_BASE + 0x0B14)
569
570 #define PSB_CR_USE1_SERV_VERTEX                 (SGX_BASE + 0x0B18)
571
572 #define PSB_CR_USE1_SERV_EVENT                  (SGX_BASE + 0x0B1C)
573
574 /* 0xc00 - 0xd00 */
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)
582
583 #define PSB_CR_BIF_INT_STAT                     (SGX_BASE + 0x0C04)
584
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)
598
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)
618
619 #define PSB_CR_BIF_BANK0                        (SGX_BASE + 0x0C78)
620 #define PSB_CR_BIF_BANK1                        (SGX_BASE + 0x0C7C)
621
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)
632
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)
636
637 #define PSB_CR_BIF_TA_REQ_BASE                  (SGX_BASE + 0x0C90)
638 #define _PSB_CBTR_BASE_ADDR_SHIFT               (20) // 1MB aligned address
639
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)
647
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
651
652 /* 0xe00 - 0xf00 */
653 #define PSB_EUR_CR_2D_SOCIF                     (SGX_BASE + 0x0e18)
654
655 #define PSB_EUR_CR_2D_BLIT_STATUS               (SGX_BASE + 0x0e04)
656
657 #endif /* _REGS_H_ */
658