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