aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-exynos/include/mach/regs-vp.h
blob: 68a2b0dd98a358d7753e21daddb5454a4d59d23f (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
/* linux/arch/arm/mach-exynos/include/mach/regs-vp.h
 *
 * Copyright (c) 2009 Samsung Electronics
 *		http://www.samsung.com/
 *
 * Video processor register header file for Samsung TVOUT driver
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __ARCH_ARM_REGS_VP_H
#define __ARCH_ARM_REGS_VP_H

/*
 * Register part
 */
#define S5P_VP_ENABLE				(0x0000)
#define S5P_VP_SRESET				(0x0004)
#define S5P_VP_SHADOW_UPDATE			(0x0008)
#define S5P_VP_FIELD_ID				(0x000C)
#define S5P_VP_MODE				(0x0010)
#define S5P_VP_IMG_SIZE_Y			(0x0014)
#define S5P_VP_IMG_SIZE_C			(0x0018)
#define S5P_VP_PER_RATE_CTRL			(0x001C)
#define S5P_VP_TOP_Y_PTR			(0x0028)
#define S5P_VP_BOT_Y_PTR			(0x002C)
#define S5P_VP_TOP_C_PTR			(0x0030)
#define S5P_VP_BOT_C_PTR			(0x0034)
#define S5P_VP_ENDIAN_MODE			(0x03CC)
#define S5P_VP_SRC_H_POSITION			(0x0044)
#define S5P_VP_SRC_V_POSITION			(0x0048)
#define S5P_VP_SRC_WIDTH			(0x004C)
#define S5P_VP_SRC_HEIGHT			(0x0050)
#define S5P_VP_DST_H_POSITION			(0x0054)
#define S5P_VP_DST_V_POSITION			(0x0058)
#define S5P_VP_DST_WIDTH			(0x005C)
#define S5P_VP_DST_HEIGHT			(0x0060)
#define S5P_VP_H_RATIO				(0x0064)
#define S5P_VP_V_RATIO				(0x0068)
#define S5P_VP_POLY8_Y0_LL			(0x006C)
#define S5P_VP_POLY8_Y0_LH			(0x0070)
#define S5P_VP_POLY8_Y0_HL			(0x0074)
#define S5P_VP_POLY8_Y0_HH			(0x0078)
#define S5P_VP_POLY8_Y1_LL			(0x007C)
#define S5P_VP_POLY8_Y1_LH			(0x0080)
#define S5P_VP_POLY8_Y1_HL			(0x0084)
#define S5P_VP_POLY8_Y1_HH			(0x0088)
#define S5P_VP_POLY8_Y2_LL			(0x008C)
#define S5P_VP_POLY8_Y2_LH			(0x0090)
#define S5P_VP_POLY8_Y2_HL			(0x0094)
#define S5P_VP_POLY8_Y2_HH			(0x0098)
#define S5P_VP_POLY8_Y3_LL			(0x009C)
#define S5P_VP_POLY8_Y3_LH			(0x00A0)
#define S5P_VP_POLY8_Y3_HL			(0x00A4)
#define S5P_VP_POLY8_Y3_HH			(0x00A8)
#define S5P_VP_POLY4_Y0_LL			(0x00EC)
#define S5P_VP_POLY4_Y0_LH			(0x00F0)
#define S5P_VP_POLY4_Y0_HL			(0x00F4)
#define S5P_VP_POLY4_Y0_HH			(0x00F8)
#define S5P_VP_POLY4_Y1_LL			(0x00FC)
#define S5P_VP_POLY4_Y1_LH			(0x0100)
#define S5P_VP_POLY4_Y1_HL			(0x0104)
#define S5P_VP_POLY4_Y1_HH			(0x0108)
#define S5P_VP_POLY4_Y2_LL			(0x010C)
#define S5P_VP_POLY4_Y2_LH			(0x0110)
#define S5P_VP_POLY4_Y2_HL			(0x0114)
#define S5P_VP_POLY4_Y2_HH			(0x0118)
#define S5P_VP_POLY4_Y3_LL			(0x011C)
#define S5P_VP_POLY4_Y3_LH			(0x0120)
#define S5P_VP_POLY4_Y3_HL			(0x0124)
#define S5P_VP_POLY4_Y3_HH			(0x0128)
#define S5P_VP_POLY4_C0_LL			(0x012C)
#define S5P_VP_POLY4_C0_LH			(0x0130)
#define S5P_VP_POLY4_C0_HL			(0x0134)
#define S5P_VP_POLY4_C0_HH			(0x0138)
#define S5P_VP_POLY4_C1_LL			(0x013C)
#define S5P_VP_POLY4_C1_LH			(0x0140)
#define S5P_VP_POLY4_C1_HL			(0x0144)
#define S5P_VP_POLY4_C1_HH			(0x0148)
#define S5P_VP_FIELD_ID_S			(0x016C)
#define S5P_VP_MODE_S				(0x0170)
#define S5P_VP_IMG_SIZE_Y_S			(0x0174)
#define S5P_VP_IMG_SIZE_C_S			(0x0178)
#define S5P_VP_TOP_Y_PTR_S			(0x0190)
#define S5P_VP_BOT_Y_PTR_S			(0x0194)
#define S5P_VP_TOP_C_PTR_S			(0x0198)
#define S5P_VP_BOT_C_PTR_S			(0x019C)
#define S5P_VP_SRC_H_POSITION_S			(0x01AC)
#define S5P_VP_SRC_V_POSITION_S			(0x01B0)
#define S5P_VP_SRC_WIDTH_S			(0x01B4)
#define S5P_VP_SRC_HEIGHT_S			(0x01B8)
#define S5P_VP_DST_H_POSITION_S			(0x01BC)
#define S5P_VP_DST_V_POSITION_S			(0x01C0)
#define S5P_VP_DST_WIDTH_S			(0x01C4)
#define S5P_VP_DST_HEIGHT_S			(0x01C8)
#define S5P_VP_H_RATIO_S			(0x01CC)
#define S5P_VP_V_RATIO_S			(0x01D0)
#define S5P_PP_CSC_Y2Y_COEF			(0x01D4)
#define S5P_PP_CSC_CB2Y_COEF			(0x01D8)
#define S5P_PP_CSC_CR2Y_COEF			(0x01DC)
#define S5P_PP_CSC_Y2CB_COEF			(0x01E0)
#define S5P_PP_CSC_CB2CB_COEF			(0x01E4)
#define S5P_PP_CSC_CR2CB_COEF			(0x01E8)
#define S5P_PP_CSC_Y2CR_COEF			(0x01EC)
#define S5P_PP_CSC_CB2CR_COEF			(0x01F0)
#define S5P_PP_CSC_CR2CR_COEF			(0x01F4)
#define S5P_PP_BYPASS				(0x0200)
#define S5P_PP_SATURATION			(0x020C)
#define S5P_PP_SHARPNESS			(0x0210)
#define S5P_PP_LINE_EQ0				(0x0218)
#define S5P_PP_LINE_EQ1				(0x021C)
#define S5P_PP_LINE_EQ2				(0x0220)
#define S5P_PP_LINE_EQ3				(0x0224)
#define S5P_PP_LINE_EQ4				(0x0228)
#define S5P_PP_LINE_EQ5				(0x022C)
#define S5P_PP_LINE_EQ6				(0x0230)
#define S5P_PP_LINE_EQ7				(0x0234)
#define S5P_PP_BRIGHT_OFFSET			(0x0238)
#define S5P_PP_CSC_EN				(0x023C)
#define S5P_PP_BYPASS_S				(0x0258)
#define S5P_PP_SATURATION_S			(0x025C)
#define S5P_PP_SHARPNESS_S			(0x0260)
#define S5P_PP_LINE_EQ0_S			(0x0268)
#define S5P_PP_LINE_EQ1_S			(0x026C)
#define S5P_PP_LINE_EQ2_S			(0x0270)
#define S5P_PP_LINE_EQ3_S			(0x0274)
#define S5P_PP_LINE_EQ4_S			(0x0278)
#define S5P_PP_LINE_EQ5_S			(0x027C)
#define S5P_PP_LINE_EQ6_S			(0x0280)
#define S5P_PP_LINE_EQ7_S			(0x0284)
#define S5P_PP_BRIGHT_OFFSET_S			(0x0288)
#define S5P_PP_CSC_EN_S				(0x028C)
#define S5P_PP_CSC_Y2Y_COEF_S			(0x0290)
#define S5P_PP_CSC_CB2Y_COEF_S			(0x0294)
#define S5P_PP_CSC_CR2Y_COEF_S			(0x0298)
#define S5P_PP_CSC_Y2CB_COEF_S			(0x029C)
#define S5P_PP_CSC_CB2CB_COEF_S			(0x02A0)
#define S5P_PP_CSC_CR2CB_COEF_S			(0x02A4)
#define S5P_PP_CSC_Y2CR_COEF_S			(0x02A8)
#define S5P_PP_CSC_CB2CR_COEF_S			(0x02AC)
#define S5P_PP_CSC_CR2CR_COEF_S			(0x02B0)
#define S5P_VP_ENDIAN_MODE_S			(0x03EC)
#define S5P_VP_VERSION_INFO			(0x03FC)

/*
 * Bit definition part
 */
 /* VP_ENABLE */
#define S5P_VP_ENABLE_ON_S			(1 << 2)
#define S5P_VP_ENABLE_OPERATING			(1 << 1)
#define S5P_VP_ENABLE_IDLE_MODE			(0 << 1)
#define S5P_VP_ENABLE_ON			(1 << 0)
#define S5P_VP_ENABLE_OFF			(0 << 0)

/* VP_SRESET */
#define S5P_VP_SRESET_LAST_COMPLETE		(0 << 0)
#define S5P_VP_SRESET_PROCESSING		(1 << 0)

/* VP_SHADOW_UPDATE */
#define S5P_VP_SHADOW_UPDATE_DISABLE		(0 << 0)
#define S5P_VP_SHADOW_UPDATE_ENABLE		(1 << 0)

/* VP_FIELD_ID */
#define S5P_VP_FIELD_ID_TOP			(0 << 0)
#define S5P_VP_FIELD_ID_BOTTOM			(1 << 0)

/* VP_MODE */
#define S5P_VP_MODE_IMG_TYPE_YUV420_NV12	(0 << 6)
#define S5P_VP_MODE_IMG_TYPE_YUV420_NV21	(1 << 6)
#define S5P_VP_MODE_LINE_SKIP_OFF		(0 << 5)
#define S5P_VP_MODE_LINE_SKIP_ON		(1 << 5)
#define S5P_VP_MODE_MEM_MODE_LINEAR		(0 << 4)
#define S5P_VP_MODE_MEM_MODE_2D_TILE		(1 << 4)
#define S5P_VP_MODE_CROMA_EXP_C_TOP_PTR		(0 << 3)
#define S5P_VP_MODE_CROMA_EXP_C_TOPBOTTOM_PTR	(1 << 3)
#define S5P_VP_MODE_FIELD_ID_MAN_TOGGLING	(0 << 2)
#define S5P_VP_MODE_FIELD_ID_AUTO_TOGGLING	(1 << 2)
#define S5P_VP_MODE_2D_IPC_DISABLE		(0 << 1)
#define S5P_VP_MODE_2D_IPC_ENABLE		(1 << 1)

/* VP_IMG_SIZE_Y */
/* VP_IMG_SIZE_C */
#define S5P_VP_IMG_HSIZE(x)			(((x) & 0x3FFF) << 16)
#define S5P_VP_IMG_VSIZE(x)			(((x) & 0x3FFF) << 0)
#define S5P_VP_IMG_SIZE_ILLEGAL(x)		((x) & 0x7)

/* VP_PER_RATE_CTRL */ /* Not support in S5PV210 */
#define S5P_VP_PEL_RATE_CTRL(x)			(((x) & 0x3) << 0)

/* VP_TOP_Y_PTR */
/* VP_BOT_Y_PTR */
/* VP_TOP_C_PTR */
/* VP_BOT_C_PTR */
#define S5P_VP_PTR_ILLEGAL(x)			((x) & 0x7)

/* VP_ENDIAN_MODE */
#define S5P_VP_ENDIAN_MODE_BIG			(0 << 0)
#define S5P_VP_ENDIAN_MODE_LITTLE		(1 << 0)

/* VP_SRC_H_POSITION */
#define S5P_VP_SRC_H_POSITION_VAL(x)		(((x) & 0x7FF) << 4)
#define S5P_VP_SRC_X_FRACT_STEP(x)		((x) & 0xF)

/* VP_SRC_V_POSITION */
#define S5P_VP_SRC_V_POSITION_VAL(x)		((x) & 0x7FF)

/* VP_SRC_WIDTH */
/* VP_SRC_HEIGHT */
#define S5P_VP_SRC_WIDTH_VAL(x)			((x) & 0x7FF)
#define S5P_VP_SRC_HEIGHT_VAL(x)		((x) & 0x7FF)

/* VP_DST_H_POSITION */
/* VP_DST_V_POSITION */
#define S5P_VP_DST_H_POSITION_VAL(x)		((x) & 0x7FF)
#define S5P_VP_DST_V_POSITION_VAL(x)		((x) & 0x7FF)

/* VP_DST_WIDTH */
/* VP_DST_HEIGHT */
#define S5P_VP_DST_WIDTH_VAL(x)			((x) & 0x7FF)
#define S5P_VP_DST_HEIGHT_VAL(x)		((x) & 0x7FF)

/* VP_H_RATIO */
/* VP_V_RATIO */
#define S5P_VP_H_RATIO_VAL(x)			((x) & 0x7FFFF)
#define S5P_VP_V_RATIO_VAL(x)			((x) & 0x7FFFF)

/* PP_CSC_Y2Y_COEF */
#define S5P_PP_Y2Y_COEF_601_TO_709		(0x400)
#define S5P_PP_Y2Y_COEF_709_TO_601		(0x400)

/* PP_CSC_CB2Y_COEF */
#define S5P_PP_CB2Y_COEF_601_TO_709		(0x879)
#define S5P_PP_CB2Y_COEF_709_TO_601		(0x068)

/* PP_CSC_CR2Y_COEF */
#define S5P_PP_CR2Y_COEF_601_TO_709		(0x8D9)
#define S5P_PP_CR2Y_COEF_709_TO_601		(0x0C9)

/* PP_CSC_Y2CB_COEF */
#define S5P_PP_Y2CB_COEF_601_TO_709		(0x0)
#define S5P_PP_Y2CB_COEF_709_TO_601		(0x0)

/* PP_CSC_CB2CB_COEF */
#define S5P_PP_CB2CB_COEF_601_TO_709		(0x413)
#define S5P_PP_CB2CB_COEF_709_TO_601		(0x3F6)

/* PP_CSC_CR2CB_COEF */
#define S5P_PP_CR2CB_COEF_601_TO_709		(0x875)
#define S5P_PP_CR2CB_COEF_709_TO_601		(0x871)

/* PP_CSC_Y2CR_COEF */
#define S5P_PP_Y2CR_COEF_601_TO_709		(0x0)
#define S5P_PP_Y2CR_COEF_709_TO_601		(0x0)

/* PP_CSC_CB2CR_COEF */
#define S5P_PP_CB2CR_COEF_601_TO_709		(0x04D)
#define S5P_PP_CB2CR_COEF_709_TO_601		(0x84A)

/* PP_CSC_CR2CR_COEF */
#define S5P_PP_CR2CR_COEF_601_TO_709		(0x41A)
#define S5P_PP_CR2CR_COEF_709_TO_601		(0xBEF)

#define S5P_PP_CSC_COEF(x)			((x) & 0xFFF)

/* PP_BYPASS */
#define S5P_VP_BY_PASS_ENABLE			(0)
#define S5P_VP_BY_PASS_DISABLE			(1)

/* PP_SATURATION */
#define S5P_VP_SATURATION(x)			((x) & 0xFF)

/* PP_SHARPNESS */
#define S5P_VP_TH_HNOISE(x)			(((x) & 0xF) << 8)
#define S5P_VP_SHARPNESS(x)			((x) & 0x3)

/* PP_LINE_EQ0 ~ 7 */
#define S5P_VP_LINE_INTC(x)			(((x) & 0xFFFF) << 8)
#define S5P_VP_LINE_SLOPE(x)			((x) & 0xFF)
#define S5P_VP_LINE_INTC_CLEAR(x)		((x) & ~(0xFFFF << 8))
#define S5P_VP_LINE_SLOPE_CLEAR(x)		((x) & ~0xFF)

/* PP_BRIGHT_OFFSET */
#define S5P_VP_BRIGHT_OFFSET(x)			((x) & 0x1FF)

/* PP_CSC_EN */
#define S5P_VP_SUB_Y_OFFSET_ENABLE		(1 << 1)
#define S5P_VP_SUB_Y_OFFSET_DISABLE		(0 << 1)
#define S5P_VP_CSC_ENABLE			(1)
#define S5P_VP_CSC_DISABLE			(0)

#endif /* __ARCH_ARM_REGS_VP_H */