GNU Linux-libre 4.9.306-gnu1
[releases.git] / drivers / media / platform / ti-vpe / vpe_regs.h
1 /*
2  * Copyright (c) 2013 Texas Instruments Inc.
3  *
4  * David Griego, <dagriego@biglakesoftware.com>
5  * Dale Farnsworth, <dale@farnsworth.org>
6  * Archit Taneja, <archit@ti.com>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License version 2 as published by
10  * the Free Software Foundation.
11  */
12
13 #ifndef __TI_VPE_REGS_H
14 #define __TI_VPE_REGS_H
15
16 /* VPE register offsets and field selectors */
17
18 /* VPE top level regs */
19 #define VPE_PID                         0x0000
20 #define VPE_PID_MINOR_MASK              0x3f
21 #define VPE_PID_MINOR_SHIFT             0
22 #define VPE_PID_CUSTOM_MASK             0x03
23 #define VPE_PID_CUSTOM_SHIFT            6
24 #define VPE_PID_MAJOR_MASK              0x07
25 #define VPE_PID_MAJOR_SHIFT             8
26 #define VPE_PID_RTL_MASK                0x1f
27 #define VPE_PID_RTL_SHIFT               11
28 #define VPE_PID_FUNC_MASK               0xfff
29 #define VPE_PID_FUNC_SHIFT              16
30 #define VPE_PID_SCHEME_MASK             0x03
31 #define VPE_PID_SCHEME_SHIFT            30
32
33 #define VPE_SYSCONFIG                   0x0010
34 #define VPE_SYSCONFIG_IDLE_MASK         0x03
35 #define VPE_SYSCONFIG_IDLE_SHIFT        2
36 #define VPE_SYSCONFIG_STANDBY_MASK      0x03
37 #define VPE_SYSCONFIG_STANDBY_SHIFT     4
38 #define VPE_FORCE_IDLE_MODE             0
39 #define VPE_NO_IDLE_MODE                1
40 #define VPE_SMART_IDLE_MODE             2
41 #define VPE_SMART_IDLE_WAKEUP_MODE      3
42 #define VPE_FORCE_STANDBY_MODE          0
43 #define VPE_NO_STANDBY_MODE             1
44 #define VPE_SMART_STANDBY_MODE          2
45 #define VPE_SMART_STANDBY_WAKEUP_MODE   3
46
47 #define VPE_INT0_STATUS0_RAW_SET        0x0020
48 #define VPE_INT0_STATUS0_RAW            VPE_INT0_STATUS0_RAW_SET
49 #define VPE_INT0_STATUS0_CLR            0x0028
50 #define VPE_INT0_STATUS0                VPE_INT0_STATUS0_CLR
51 #define VPE_INT0_ENABLE0_SET            0x0030
52 #define VPE_INT0_ENABLE0                VPE_INT0_ENABLE0_SET
53 #define VPE_INT0_ENABLE0_CLR            0x0038
54 #define VPE_INT0_LIST0_COMPLETE         (1 << 0)
55 #define VPE_INT0_LIST0_NOTIFY           (1 << 1)
56 #define VPE_INT0_LIST1_COMPLETE         (1 << 2)
57 #define VPE_INT0_LIST1_NOTIFY           (1 << 3)
58 #define VPE_INT0_LIST2_COMPLETE         (1 << 4)
59 #define VPE_INT0_LIST2_NOTIFY           (1 << 5)
60 #define VPE_INT0_LIST3_COMPLETE         (1 << 6)
61 #define VPE_INT0_LIST3_NOTIFY           (1 << 7)
62 #define VPE_INT0_LIST4_COMPLETE         (1 << 8)
63 #define VPE_INT0_LIST4_NOTIFY           (1 << 9)
64 #define VPE_INT0_LIST5_COMPLETE         (1 << 10)
65 #define VPE_INT0_LIST5_NOTIFY           (1 << 11)
66 #define VPE_INT0_LIST6_COMPLETE         (1 << 12)
67 #define VPE_INT0_LIST6_NOTIFY           (1 << 13)
68 #define VPE_INT0_LIST7_COMPLETE         (1 << 14)
69 #define VPE_INT0_LIST7_NOTIFY           (1 << 15)
70 #define VPE_INT0_DESCRIPTOR             (1 << 16)
71 #define VPE_DEI_FMD_INT                 (1 << 18)
72
73 #define VPE_INT0_STATUS1_RAW_SET        0x0024
74 #define VPE_INT0_STATUS1_RAW            VPE_INT0_STATUS1_RAW_SET
75 #define VPE_INT0_STATUS1_CLR            0x002c
76 #define VPE_INT0_STATUS1                VPE_INT0_STATUS1_CLR
77 #define VPE_INT0_ENABLE1_SET            0x0034
78 #define VPE_INT0_ENABLE1                VPE_INT0_ENABLE1_SET
79 #define VPE_INT0_ENABLE1_CLR            0x003c
80 #define VPE_INT0_CHANNEL_GROUP0         (1 << 0)
81 #define VPE_INT0_CHANNEL_GROUP1         (1 << 1)
82 #define VPE_INT0_CHANNEL_GROUP2         (1 << 2)
83 #define VPE_INT0_CHANNEL_GROUP3         (1 << 3)
84 #define VPE_INT0_CHANNEL_GROUP4         (1 << 4)
85 #define VPE_INT0_CHANNEL_GROUP5         (1 << 5)
86 #define VPE_INT0_CLIENT                 (1 << 7)
87 #define VPE_DEI_ERROR_INT               (1 << 16)
88 #define VPE_DS1_UV_ERROR_INT            (1 << 22)
89
90 #define VPE_INTC_EOI                    0x00a0
91
92 #define VPE_CLK_ENABLE                  0x0100
93 #define VPE_VPEDMA_CLK_ENABLE           (1 << 0)
94 #define VPE_DATA_PATH_CLK_ENABLE        (1 << 1)
95
96 #define VPE_CLK_RESET                   0x0104
97 #define VPE_VPDMA_CLK_RESET_MASK        0x1
98 #define VPE_VPDMA_CLK_RESET_SHIFT       0
99 #define VPE_DATA_PATH_CLK_RESET_MASK    0x1
100 #define VPE_DATA_PATH_CLK_RESET_SHIFT   1
101 #define VPE_MAIN_RESET_MASK             0x1
102 #define VPE_MAIN_RESET_SHIFT            31
103
104 #define VPE_CLK_FORMAT_SELECT           0x010c
105 #define VPE_CSC_SRC_SELECT_MASK         0x03
106 #define VPE_CSC_SRC_SELECT_SHIFT        0
107 #define VPE_RGB_OUT_SELECT              (1 << 8)
108 #define VPE_DS_SRC_SELECT_MASK          0x07
109 #define VPE_DS_SRC_SELECT_SHIFT         9
110 #define VPE_DS_BYPASS                   (1 << 16)
111 #define VPE_COLOR_SEPARATE_422          (1 << 18)
112
113 #define VPE_DS_SRC_DEI_SCALER           (5 << VPE_DS_SRC_SELECT_SHIFT)
114 #define VPE_CSC_SRC_DEI_SCALER          (3 << VPE_CSC_SRC_SELECT_SHIFT)
115
116 #define VPE_CLK_RANGE_MAP               0x011c
117 #define VPE_RANGE_RANGE_MAP_Y_MASK      0x07
118 #define VPE_RANGE_RANGE_MAP_Y_SHIFT     0
119 #define VPE_RANGE_RANGE_MAP_UV_MASK     0x07
120 #define VPE_RANGE_RANGE_MAP_UV_SHIFT    3
121 #define VPE_RANGE_MAP_ON                (1 << 6)
122 #define VPE_RANGE_REDUCTION_ON          (1 << 28)
123
124 /* VPE chrominance upsampler regs */
125 #define VPE_US1_R0                      0x0304
126 #define VPE_US2_R0                      0x0404
127 #define VPE_US3_R0                      0x0504
128 #define VPE_US_C1_MASK                  0x3fff
129 #define VPE_US_C1_SHIFT                 2
130 #define VPE_US_C0_MASK                  0x3fff
131 #define VPE_US_C0_SHIFT                 18
132 #define VPE_US_MODE_MASK                0x03
133 #define VPE_US_MODE_SHIFT               16
134 #define VPE_ANCHOR_FID0_C1_MASK         0x3fff
135 #define VPE_ANCHOR_FID0_C1_SHIFT        2
136 #define VPE_ANCHOR_FID0_C0_MASK         0x3fff
137 #define VPE_ANCHOR_FID0_C0_SHIFT        18
138
139 #define VPE_US1_R1                      0x0308
140 #define VPE_US2_R1                      0x0408
141 #define VPE_US3_R1                      0x0508
142 #define VPE_ANCHOR_FID0_C3_MASK         0x3fff
143 #define VPE_ANCHOR_FID0_C3_SHIFT        2
144 #define VPE_ANCHOR_FID0_C2_MASK         0x3fff
145 #define VPE_ANCHOR_FID0_C2_SHIFT        18
146
147 #define VPE_US1_R2                      0x030c
148 #define VPE_US2_R2                      0x040c
149 #define VPE_US3_R2                      0x050c
150 #define VPE_INTERP_FID0_C1_MASK         0x3fff
151 #define VPE_INTERP_FID0_C1_SHIFT        2
152 #define VPE_INTERP_FID0_C0_MASK         0x3fff
153 #define VPE_INTERP_FID0_C0_SHIFT        18
154
155 #define VPE_US1_R3                      0x0310
156 #define VPE_US2_R3                      0x0410
157 #define VPE_US3_R3                      0x0510
158 #define VPE_INTERP_FID0_C3_MASK         0x3fff
159 #define VPE_INTERP_FID0_C3_SHIFT        2
160 #define VPE_INTERP_FID0_C2_MASK         0x3fff
161 #define VPE_INTERP_FID0_C2_SHIFT        18
162
163 #define VPE_US1_R4                      0x0314
164 #define VPE_US2_R4                      0x0414
165 #define VPE_US3_R4                      0x0514
166 #define VPE_ANCHOR_FID1_C1_MASK         0x3fff
167 #define VPE_ANCHOR_FID1_C1_SHIFT        2
168 #define VPE_ANCHOR_FID1_C0_MASK         0x3fff
169 #define VPE_ANCHOR_FID1_C0_SHIFT        18
170
171 #define VPE_US1_R5                      0x0318
172 #define VPE_US2_R5                      0x0418
173 #define VPE_US3_R5                      0x0518
174 #define VPE_ANCHOR_FID1_C3_MASK         0x3fff
175 #define VPE_ANCHOR_FID1_C3_SHIFT        2
176 #define VPE_ANCHOR_FID1_C2_MASK         0x3fff
177 #define VPE_ANCHOR_FID1_C2_SHIFT        18
178
179 #define VPE_US1_R6                      0x031c
180 #define VPE_US2_R6                      0x041c
181 #define VPE_US3_R6                      0x051c
182 #define VPE_INTERP_FID1_C1_MASK         0x3fff
183 #define VPE_INTERP_FID1_C1_SHIFT        2
184 #define VPE_INTERP_FID1_C0_MASK         0x3fff
185 #define VPE_INTERP_FID1_C0_SHIFT        18
186
187 #define VPE_US1_R7                      0x0320
188 #define VPE_US2_R7                      0x0420
189 #define VPE_US3_R7                      0x0520
190 #define VPE_INTERP_FID0_C3_MASK         0x3fff
191 #define VPE_INTERP_FID0_C3_SHIFT        2
192 #define VPE_INTERP_FID0_C2_MASK         0x3fff
193 #define VPE_INTERP_FID0_C2_SHIFT        18
194
195 /* VPE de-interlacer regs */
196 #define VPE_DEI_FRAME_SIZE              0x0600
197 #define VPE_DEI_WIDTH_MASK              0x07ff
198 #define VPE_DEI_WIDTH_SHIFT             0
199 #define VPE_DEI_HEIGHT_MASK             0x07ff
200 #define VPE_DEI_HEIGHT_SHIFT            16
201 #define VPE_DEI_INTERLACE_BYPASS        (1 << 29)
202 #define VPE_DEI_FIELD_FLUSH             (1 << 30)
203 #define VPE_DEI_PROGRESSIVE             (1 << 31)
204
205 #define VPE_MDT_BYPASS                  0x0604
206 #define VPE_MDT_TEMPMAX_BYPASS          (1 << 0)
207 #define VPE_MDT_SPATMAX_BYPASS          (1 << 1)
208
209 #define VPE_MDT_SF_THRESHOLD            0x0608
210 #define VPE_MDT_SF_SC_THR1_MASK         0xff
211 #define VPE_MDT_SF_SC_THR1_SHIFT        0
212 #define VPE_MDT_SF_SC_THR2_MASK         0xff
213 #define VPE_MDT_SF_SC_THR2_SHIFT        0
214 #define VPE_MDT_SF_SC_THR3_MASK         0xff
215 #define VPE_MDT_SF_SC_THR3_SHIFT        0
216
217 #define VPE_EDI_CONFIG                  0x060c
218 #define VPE_EDI_INP_MODE_MASK           0x03
219 #define VPE_EDI_INP_MODE_SHIFT          0
220 #define VPE_EDI_ENABLE_3D               (1 << 2)
221 #define VPE_EDI_ENABLE_CHROMA_3D        (1 << 3)
222 #define VPE_EDI_CHROMA3D_COR_THR_MASK   0xff
223 #define VPE_EDI_CHROMA3D_COR_THR_SHIFT  8
224 #define VPE_EDI_DIR_COR_LOWER_THR_MASK  0xff
225 #define VPE_EDI_DIR_COR_LOWER_THR_SHIFT 16
226 #define VPE_EDI_COR_SCALE_FACTOR_MASK   0xff
227 #define VPE_EDI_COR_SCALE_FACTOR_SHIFT  23
228
229 #define VPE_DEI_EDI_LUT_R0              0x0610
230 #define VPE_EDI_LUT0_MASK               0x1f
231 #define VPE_EDI_LUT0_SHIFT              0
232 #define VPE_EDI_LUT1_MASK               0x1f
233 #define VPE_EDI_LUT1_SHIFT              8
234 #define VPE_EDI_LUT2_MASK               0x1f
235 #define VPE_EDI_LUT2_SHIFT              16
236 #define VPE_EDI_LUT3_MASK               0x1f
237 #define VPE_EDI_LUT3_SHIFT              24
238
239 #define VPE_DEI_EDI_LUT_R1              0x0614
240 #define VPE_EDI_LUT0_MASK               0x1f
241 #define VPE_EDI_LUT0_SHIFT              0
242 #define VPE_EDI_LUT1_MASK               0x1f
243 #define VPE_EDI_LUT1_SHIFT              8
244 #define VPE_EDI_LUT2_MASK               0x1f
245 #define VPE_EDI_LUT2_SHIFT              16
246 #define VPE_EDI_LUT3_MASK               0x1f
247 #define VPE_EDI_LUT3_SHIFT              24
248
249 #define VPE_DEI_EDI_LUT_R2              0x0618
250 #define VPE_EDI_LUT4_MASK               0x1f
251 #define VPE_EDI_LUT4_SHIFT              0
252 #define VPE_EDI_LUT5_MASK               0x1f
253 #define VPE_EDI_LUT5_SHIFT              8
254 #define VPE_EDI_LUT6_MASK               0x1f
255 #define VPE_EDI_LUT6_SHIFT              16
256 #define VPE_EDI_LUT7_MASK               0x1f
257 #define VPE_EDI_LUT7_SHIFT              24
258
259 #define VPE_DEI_EDI_LUT_R3              0x061c
260 #define VPE_EDI_LUT8_MASK               0x1f
261 #define VPE_EDI_LUT8_SHIFT              0
262 #define VPE_EDI_LUT9_MASK               0x1f
263 #define VPE_EDI_LUT9_SHIFT              8
264 #define VPE_EDI_LUT10_MASK              0x1f
265 #define VPE_EDI_LUT10_SHIFT             16
266 #define VPE_EDI_LUT11_MASK              0x1f
267 #define VPE_EDI_LUT11_SHIFT             24
268
269 #define VPE_DEI_FMD_WINDOW_R0           0x0620
270 #define VPE_FMD_WINDOW_MINX_MASK        0x07ff
271 #define VPE_FMD_WINDOW_MINX_SHIFT       0
272 #define VPE_FMD_WINDOW_MAXX_MASK        0x07ff
273 #define VPE_FMD_WINDOW_MAXX_SHIFT       16
274 #define VPE_FMD_WINDOW_ENABLE           (1 << 31)
275
276 #define VPE_DEI_FMD_WINDOW_R1           0x0624
277 #define VPE_FMD_WINDOW_MINY_MASK        0x07ff
278 #define VPE_FMD_WINDOW_MINY_SHIFT       0
279 #define VPE_FMD_WINDOW_MAXY_MASK        0x07ff
280 #define VPE_FMD_WINDOW_MAXY_SHIFT       16
281
282 #define VPE_DEI_FMD_CONTROL_R0          0x0628
283 #define VPE_FMD_ENABLE                  (1 << 0)
284 #define VPE_FMD_LOCK                    (1 << 1)
285 #define VPE_FMD_JAM_DIR                 (1 << 2)
286 #define VPE_FMD_BED_ENABLE              (1 << 3)
287 #define VPE_FMD_CAF_FIELD_THR_MASK      0xff
288 #define VPE_FMD_CAF_FIELD_THR_SHIFT     16
289 #define VPE_FMD_CAF_LINE_THR_MASK       0xff
290 #define VPE_FMD_CAF_LINE_THR_SHIFT      24
291
292 #define VPE_DEI_FMD_CONTROL_R1          0x062c
293 #define VPE_FMD_CAF_THR_MASK            0x000fffff
294 #define VPE_FMD_CAF_THR_SHIFT           0
295
296 #define VPE_DEI_FMD_STATUS_R0           0x0630
297 #define VPE_FMD_CAF_MASK                0x000fffff
298 #define VPE_FMD_CAF_SHIFT               0
299 #define VPE_FMD_RESET                   (1 << 24)
300
301 #define VPE_DEI_FMD_STATUS_R1           0x0634
302 #define VPE_FMD_FIELD_DIFF_MASK         0x0fffffff
303 #define VPE_FMD_FIELD_DIFF_SHIFT        0
304
305 #define VPE_DEI_FMD_STATUS_R2           0x0638
306 #define VPE_FMD_FRAME_DIFF_MASK         0x000fffff
307 #define VPE_FMD_FRAME_DIFF_SHIFT        0
308
309 #endif