1caab277bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2f76ee892STomi Valkeinen /*
3f76ee892STomi Valkeinen  * linux/drivers/video/omap2/dss/dispc.h
4f76ee892STomi Valkeinen  *
5f76ee892STomi Valkeinen  * Copyright (C) 2011 Texas Instruments
6f76ee892STomi Valkeinen  * Author: Archit Taneja <archit@ti.com>
7f76ee892STomi Valkeinen  */
8f76ee892STomi Valkeinen 
9f76ee892STomi Valkeinen #ifndef __OMAP2_DISPC_REG_H
10f76ee892STomi Valkeinen #define __OMAP2_DISPC_REG_H
11f76ee892STomi Valkeinen 
12f76ee892STomi Valkeinen /* DISPC common registers */
13f76ee892STomi Valkeinen #define DISPC_REVISION			0x0000
14f76ee892STomi Valkeinen #define DISPC_SYSCONFIG			0x0010
15f76ee892STomi Valkeinen #define DISPC_SYSSTATUS			0x0014
16f76ee892STomi Valkeinen #define DISPC_IRQSTATUS			0x0018
17f76ee892STomi Valkeinen #define DISPC_IRQENABLE			0x001C
18f76ee892STomi Valkeinen #define DISPC_CONTROL			0x0040
19f76ee892STomi Valkeinen #define DISPC_CONFIG			0x0044
20f76ee892STomi Valkeinen #define DISPC_CAPABLE			0x0048
21f76ee892STomi Valkeinen #define DISPC_LINE_STATUS		0x005C
22f76ee892STomi Valkeinen #define DISPC_LINE_NUMBER		0x0060
23f76ee892STomi Valkeinen #define DISPC_GLOBAL_ALPHA		0x0074
24f76ee892STomi Valkeinen #define DISPC_CONTROL2			0x0238
25f76ee892STomi Valkeinen #define DISPC_CONFIG2			0x0620
26f76ee892STomi Valkeinen #define DISPC_DIVISOR			0x0804
27f76ee892STomi Valkeinen #define DISPC_GLOBAL_BUFFER		0x0800
28f76ee892STomi Valkeinen #define DISPC_CONTROL3                  0x0848
29f76ee892STomi Valkeinen #define DISPC_CONFIG3                   0x084C
30f76ee892STomi Valkeinen #define DISPC_MSTANDBY_CTRL		0x0858
31f76ee892STomi Valkeinen #define DISPC_GLOBAL_MFLAG_ATTRIBUTE	0x085C
32f76ee892STomi Valkeinen 
33f76ee892STomi Valkeinen /* DISPC overlay registers */
34f76ee892STomi Valkeinen #define DISPC_OVL_BA0(n)		(DISPC_OVL_BASE(n) + \
35f76ee892STomi Valkeinen 					DISPC_BA0_OFFSET(n))
36f76ee892STomi Valkeinen #define DISPC_OVL_BA1(n)		(DISPC_OVL_BASE(n) + \
37f76ee892STomi Valkeinen 					DISPC_BA1_OFFSET(n))
38f76ee892STomi Valkeinen #define DISPC_OVL_BA0_UV(n)		(DISPC_OVL_BASE(n) + \
39f76ee892STomi Valkeinen 					DISPC_BA0_UV_OFFSET(n))
40f76ee892STomi Valkeinen #define DISPC_OVL_BA1_UV(n)		(DISPC_OVL_BASE(n) + \
41f76ee892STomi Valkeinen 					DISPC_BA1_UV_OFFSET(n))
42f76ee892STomi Valkeinen #define DISPC_OVL_POSITION(n)		(DISPC_OVL_BASE(n) + \
43f76ee892STomi Valkeinen 					DISPC_POS_OFFSET(n))
44f76ee892STomi Valkeinen #define DISPC_OVL_SIZE(n)		(DISPC_OVL_BASE(n) + \
45f76ee892STomi Valkeinen 					DISPC_SIZE_OFFSET(n))
46f76ee892STomi Valkeinen #define DISPC_OVL_ATTRIBUTES(n)		(DISPC_OVL_BASE(n) + \
47f76ee892STomi Valkeinen 					DISPC_ATTR_OFFSET(n))
48f76ee892STomi Valkeinen #define DISPC_OVL_ATTRIBUTES2(n)	(DISPC_OVL_BASE(n) + \
49f76ee892STomi Valkeinen 					DISPC_ATTR2_OFFSET(n))
50f76ee892STomi Valkeinen #define DISPC_OVL_FIFO_THRESHOLD(n)	(DISPC_OVL_BASE(n) + \
51f76ee892STomi Valkeinen 					DISPC_FIFO_THRESH_OFFSET(n))
52f76ee892STomi Valkeinen #define DISPC_OVL_FIFO_SIZE_STATUS(n)	(DISPC_OVL_BASE(n) + \
53f76ee892STomi Valkeinen 					DISPC_FIFO_SIZE_STATUS_OFFSET(n))
54f76ee892STomi Valkeinen #define DISPC_OVL_ROW_INC(n)		(DISPC_OVL_BASE(n) + \
55f76ee892STomi Valkeinen 					DISPC_ROW_INC_OFFSET(n))
56f76ee892STomi Valkeinen #define DISPC_OVL_PIXEL_INC(n)		(DISPC_OVL_BASE(n) + \
57f76ee892STomi Valkeinen 					DISPC_PIX_INC_OFFSET(n))
58f76ee892STomi Valkeinen #define DISPC_OVL_WINDOW_SKIP(n)	(DISPC_OVL_BASE(n) + \
59f76ee892STomi Valkeinen 					DISPC_WINDOW_SKIP_OFFSET(n))
60f76ee892STomi Valkeinen #define DISPC_OVL_TABLE_BA(n)		(DISPC_OVL_BASE(n) + \
61f76ee892STomi Valkeinen 					DISPC_TABLE_BA_OFFSET(n))
62f76ee892STomi Valkeinen #define DISPC_OVL_FIR(n)		(DISPC_OVL_BASE(n) + \
63f76ee892STomi Valkeinen 					DISPC_FIR_OFFSET(n))
64f76ee892STomi Valkeinen #define DISPC_OVL_FIR2(n)		(DISPC_OVL_BASE(n) + \
65f76ee892STomi Valkeinen 					DISPC_FIR2_OFFSET(n))
66f76ee892STomi Valkeinen #define DISPC_OVL_PICTURE_SIZE(n)	(DISPC_OVL_BASE(n) + \
67f76ee892STomi Valkeinen 					DISPC_PIC_SIZE_OFFSET(n))
68f76ee892STomi Valkeinen #define DISPC_OVL_ACCU0(n)		(DISPC_OVL_BASE(n) + \
69f76ee892STomi Valkeinen 					DISPC_ACCU0_OFFSET(n))
70f76ee892STomi Valkeinen #define DISPC_OVL_ACCU1(n)		(DISPC_OVL_BASE(n) + \
71f76ee892STomi Valkeinen 					DISPC_ACCU1_OFFSET(n))
72f76ee892STomi Valkeinen #define DISPC_OVL_ACCU2_0(n)		(DISPC_OVL_BASE(n) + \
73f76ee892STomi Valkeinen 					DISPC_ACCU2_0_OFFSET(n))
74f76ee892STomi Valkeinen #define DISPC_OVL_ACCU2_1(n)		(DISPC_OVL_BASE(n) + \
75f76ee892STomi Valkeinen 					DISPC_ACCU2_1_OFFSET(n))
76f76ee892STomi Valkeinen #define DISPC_OVL_FIR_COEF_H(n, i)	(DISPC_OVL_BASE(n) + \
77f76ee892STomi Valkeinen 					DISPC_FIR_COEF_H_OFFSET(n, i))
78f76ee892STomi Valkeinen #define DISPC_OVL_FIR_COEF_HV(n, i)	(DISPC_OVL_BASE(n) + \
79f76ee892STomi Valkeinen 					DISPC_FIR_COEF_HV_OFFSET(n, i))
80f76ee892STomi Valkeinen #define DISPC_OVL_FIR_COEF_H2(n, i)	(DISPC_OVL_BASE(n) + \
81f76ee892STomi Valkeinen 					DISPC_FIR_COEF_H2_OFFSET(n, i))
82f76ee892STomi Valkeinen #define DISPC_OVL_FIR_COEF_HV2(n, i)	(DISPC_OVL_BASE(n) + \
83f76ee892STomi Valkeinen 					DISPC_FIR_COEF_HV2_OFFSET(n, i))
84f76ee892STomi Valkeinen #define DISPC_OVL_CONV_COEF(n, i)	(DISPC_OVL_BASE(n) + \
85f76ee892STomi Valkeinen 					DISPC_CONV_COEF_OFFSET(n, i))
86f76ee892STomi Valkeinen #define DISPC_OVL_FIR_COEF_V(n, i)	(DISPC_OVL_BASE(n) + \
87f76ee892STomi Valkeinen 					DISPC_FIR_COEF_V_OFFSET(n, i))
88f76ee892STomi Valkeinen #define DISPC_OVL_FIR_COEF_V2(n, i)	(DISPC_OVL_BASE(n) + \
89f76ee892STomi Valkeinen 					DISPC_FIR_COEF_V2_OFFSET(n, i))
90f76ee892STomi Valkeinen #define DISPC_OVL_PRELOAD(n)		(DISPC_OVL_BASE(n) + \
91f76ee892STomi Valkeinen 					DISPC_PRELOAD_OFFSET(n))
92f76ee892STomi Valkeinen #define DISPC_OVL_MFLAG_THRESHOLD(n)	DISPC_MFLAG_THRESHOLD_OFFSET(n)
93f76ee892STomi Valkeinen 
94f76ee892STomi Valkeinen /* DISPC up/downsampling FIR filter coefficient structure */
95f76ee892STomi Valkeinen struct dispc_coef {
96f76ee892STomi Valkeinen 	s8 hc4_vc22;
97f76ee892STomi Valkeinen 	s8 hc3_vc2;
98f76ee892STomi Valkeinen 	u8 hc2_vc1;
99f76ee892STomi Valkeinen 	s8 hc1_vc0;
100f76ee892STomi Valkeinen 	s8 hc0_vc00;
101f76ee892STomi Valkeinen };
102f76ee892STomi Valkeinen 
103f76ee892STomi Valkeinen const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
104f76ee892STomi Valkeinen 
105f76ee892STomi Valkeinen /* DISPC manager/channel specific registers */
DISPC_DEFAULT_COLOR(enum omap_channel channel)106f76ee892STomi Valkeinen static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
107f76ee892STomi Valkeinen {
108f76ee892STomi Valkeinen 	switch (channel) {
109f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
110f76ee892STomi Valkeinen 		return 0x004C;
111f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
112f76ee892STomi Valkeinen 		return 0x0050;
113f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
114f76ee892STomi Valkeinen 		return 0x03AC;
115f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
116f76ee892STomi Valkeinen 		return 0x0814;
117f76ee892STomi Valkeinen 	default:
118f76ee892STomi Valkeinen 		BUG();
119f76ee892STomi Valkeinen 		return 0;
120f76ee892STomi Valkeinen 	}
121f76ee892STomi Valkeinen }
122f76ee892STomi Valkeinen 
DISPC_TRANS_COLOR(enum omap_channel channel)123f76ee892STomi Valkeinen static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
124f76ee892STomi Valkeinen {
125f76ee892STomi Valkeinen 	switch (channel) {
126f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
127f76ee892STomi Valkeinen 		return 0x0054;
128f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
129f76ee892STomi Valkeinen 		return 0x0058;
130f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
131f76ee892STomi Valkeinen 		return 0x03B0;
132f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
133f76ee892STomi Valkeinen 		return 0x0818;
134f76ee892STomi Valkeinen 	default:
135f76ee892STomi Valkeinen 		BUG();
136f76ee892STomi Valkeinen 		return 0;
137f76ee892STomi Valkeinen 	}
138f76ee892STomi Valkeinen }
139f76ee892STomi Valkeinen 
DISPC_TIMING_H(enum omap_channel channel)140f76ee892STomi Valkeinen static inline u16 DISPC_TIMING_H(enum omap_channel channel)
141f76ee892STomi Valkeinen {
142f76ee892STomi Valkeinen 	switch (channel) {
143f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
144f76ee892STomi Valkeinen 		return 0x0064;
145f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
146f76ee892STomi Valkeinen 		BUG();
147f76ee892STomi Valkeinen 		return 0;
148f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
149f76ee892STomi Valkeinen 		return 0x0400;
150f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
151f76ee892STomi Valkeinen 		return 0x0840;
152f76ee892STomi Valkeinen 	default:
153f76ee892STomi Valkeinen 		BUG();
154f76ee892STomi Valkeinen 		return 0;
155f76ee892STomi Valkeinen 	}
156f76ee892STomi Valkeinen }
157f76ee892STomi Valkeinen 
DISPC_TIMING_V(enum omap_channel channel)158f76ee892STomi Valkeinen static inline u16 DISPC_TIMING_V(enum omap_channel channel)
159f76ee892STomi Valkeinen {
160f76ee892STomi Valkeinen 	switch (channel) {
161f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
162f76ee892STomi Valkeinen 		return 0x0068;
163f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
164f76ee892STomi Valkeinen 		BUG();
165f76ee892STomi Valkeinen 		return 0;
166f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
167f76ee892STomi Valkeinen 		return 0x0404;
168f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
169f76ee892STomi Valkeinen 		return 0x0844;
170f76ee892STomi Valkeinen 	default:
171f76ee892STomi Valkeinen 		BUG();
172f76ee892STomi Valkeinen 		return 0;
173f76ee892STomi Valkeinen 	}
174f76ee892STomi Valkeinen }
175f76ee892STomi Valkeinen 
DISPC_POL_FREQ(enum omap_channel channel)176f76ee892STomi Valkeinen static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
177f76ee892STomi Valkeinen {
178f76ee892STomi Valkeinen 	switch (channel) {
179f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
180f76ee892STomi Valkeinen 		return 0x006C;
181f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
182f76ee892STomi Valkeinen 		BUG();
183f76ee892STomi Valkeinen 		return 0;
184f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
185f76ee892STomi Valkeinen 		return 0x0408;
186f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
187f76ee892STomi Valkeinen 		return 0x083C;
188f76ee892STomi Valkeinen 	default:
189f76ee892STomi Valkeinen 		BUG();
190f76ee892STomi Valkeinen 		return 0;
191f76ee892STomi Valkeinen 	}
192f76ee892STomi Valkeinen }
193f76ee892STomi Valkeinen 
DISPC_DIVISORo(enum omap_channel channel)194f76ee892STomi Valkeinen static inline u16 DISPC_DIVISORo(enum omap_channel channel)
195f76ee892STomi Valkeinen {
196f76ee892STomi Valkeinen 	switch (channel) {
197f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
198f76ee892STomi Valkeinen 		return 0x0070;
199f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
200f76ee892STomi Valkeinen 		BUG();
201f76ee892STomi Valkeinen 		return 0;
202f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
203f76ee892STomi Valkeinen 		return 0x040C;
204f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
205f76ee892STomi Valkeinen 		return 0x0838;
206f76ee892STomi Valkeinen 	default:
207f76ee892STomi Valkeinen 		BUG();
208f76ee892STomi Valkeinen 		return 0;
209f76ee892STomi Valkeinen 	}
210f76ee892STomi Valkeinen }
211f76ee892STomi Valkeinen 
212f76ee892STomi Valkeinen /* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
DISPC_SIZE_MGR(enum omap_channel channel)213f76ee892STomi Valkeinen static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
214f76ee892STomi Valkeinen {
215f76ee892STomi Valkeinen 	switch (channel) {
216f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
217f76ee892STomi Valkeinen 		return 0x007C;
218f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
219f76ee892STomi Valkeinen 		return 0x0078;
220f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
221f76ee892STomi Valkeinen 		return 0x03CC;
222f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
223f76ee892STomi Valkeinen 		return 0x0834;
224f76ee892STomi Valkeinen 	default:
225f76ee892STomi Valkeinen 		BUG();
226f76ee892STomi Valkeinen 		return 0;
227f76ee892STomi Valkeinen 	}
228f76ee892STomi Valkeinen }
229f76ee892STomi Valkeinen 
DISPC_DATA_CYCLE1(enum omap_channel channel)230f76ee892STomi Valkeinen static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
231f76ee892STomi Valkeinen {
232f76ee892STomi Valkeinen 	switch (channel) {
233f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
234f76ee892STomi Valkeinen 		return 0x01D4;
235f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
236f76ee892STomi Valkeinen 		BUG();
237f76ee892STomi Valkeinen 		return 0;
238f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
239f76ee892STomi Valkeinen 		return 0x03C0;
240f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
241f76ee892STomi Valkeinen 		return 0x0828;
242f76ee892STomi Valkeinen 	default:
243f76ee892STomi Valkeinen 		BUG();
244f76ee892STomi Valkeinen 		return 0;
245f76ee892STomi Valkeinen 	}
246f76ee892STomi Valkeinen }
247f76ee892STomi Valkeinen 
DISPC_DATA_CYCLE2(enum omap_channel channel)248f76ee892STomi Valkeinen static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
249f76ee892STomi Valkeinen {
250f76ee892STomi Valkeinen 	switch (channel) {
251f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
252f76ee892STomi Valkeinen 		return 0x01D8;
253f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
254f76ee892STomi Valkeinen 		BUG();
255f76ee892STomi Valkeinen 		return 0;
256f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
257f76ee892STomi Valkeinen 		return 0x03C4;
258f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
259f76ee892STomi Valkeinen 		return 0x082C;
260f76ee892STomi Valkeinen 	default:
261f76ee892STomi Valkeinen 		BUG();
262f76ee892STomi Valkeinen 		return 0;
263f76ee892STomi Valkeinen 	}
264f76ee892STomi Valkeinen }
265f76ee892STomi Valkeinen 
DISPC_DATA_CYCLE3(enum omap_channel channel)266f76ee892STomi Valkeinen static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
267f76ee892STomi Valkeinen {
268f76ee892STomi Valkeinen 	switch (channel) {
269f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
270f76ee892STomi Valkeinen 		return 0x01DC;
271f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
272f76ee892STomi Valkeinen 		BUG();
273f76ee892STomi Valkeinen 		return 0;
274f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
275f76ee892STomi Valkeinen 		return 0x03C8;
276f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
277f76ee892STomi Valkeinen 		return 0x0830;
278f76ee892STomi Valkeinen 	default:
279f76ee892STomi Valkeinen 		BUG();
280f76ee892STomi Valkeinen 		return 0;
281f76ee892STomi Valkeinen 	}
282f76ee892STomi Valkeinen }
283f76ee892STomi Valkeinen 
DISPC_CPR_COEF_R(enum omap_channel channel)284f76ee892STomi Valkeinen static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
285f76ee892STomi Valkeinen {
286f76ee892STomi Valkeinen 	switch (channel) {
287f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
288f76ee892STomi Valkeinen 		return 0x0220;
289f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
290f76ee892STomi Valkeinen 		BUG();
291f76ee892STomi Valkeinen 		return 0;
292f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
293f76ee892STomi Valkeinen 		return 0x03BC;
294f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
295f76ee892STomi Valkeinen 		return 0x0824;
296f76ee892STomi Valkeinen 	default:
297f76ee892STomi Valkeinen 		BUG();
298f76ee892STomi Valkeinen 		return 0;
299f76ee892STomi Valkeinen 	}
300f76ee892STomi Valkeinen }
301f76ee892STomi Valkeinen 
DISPC_CPR_COEF_G(enum omap_channel channel)302f76ee892STomi Valkeinen static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
303f76ee892STomi Valkeinen {
304f76ee892STomi Valkeinen 	switch (channel) {
305f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
306f76ee892STomi Valkeinen 		return 0x0224;
307f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
308f76ee892STomi Valkeinen 		BUG();
309f76ee892STomi Valkeinen 		return 0;
310f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
311f76ee892STomi Valkeinen 		return 0x03B8;
312f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
313f76ee892STomi Valkeinen 		return 0x0820;
314f76ee892STomi Valkeinen 	default:
315f76ee892STomi Valkeinen 		BUG();
316f76ee892STomi Valkeinen 		return 0;
317f76ee892STomi Valkeinen 	}
318f76ee892STomi Valkeinen }
319f76ee892STomi Valkeinen 
DISPC_CPR_COEF_B(enum omap_channel channel)320f76ee892STomi Valkeinen static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
321f76ee892STomi Valkeinen {
322f76ee892STomi Valkeinen 	switch (channel) {
323f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD:
324f76ee892STomi Valkeinen 		return 0x0228;
325f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_DIGIT:
326f76ee892STomi Valkeinen 		BUG();
327f76ee892STomi Valkeinen 		return 0;
328f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD2:
329f76ee892STomi Valkeinen 		return 0x03B4;
330f76ee892STomi Valkeinen 	case OMAP_DSS_CHANNEL_LCD3:
331f76ee892STomi Valkeinen 		return 0x081C;
332f76ee892STomi Valkeinen 	default:
333f76ee892STomi Valkeinen 		BUG();
334f76ee892STomi Valkeinen 		return 0;
335f76ee892STomi Valkeinen 	}
336f76ee892STomi Valkeinen }
337f76ee892STomi Valkeinen 
338f76ee892STomi Valkeinen /* DISPC overlay register base addresses */
DISPC_OVL_BASE(enum omap_plane plane)339f76ee892STomi Valkeinen static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
340f76ee892STomi Valkeinen {
341f76ee892STomi Valkeinen 	switch (plane) {
342f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
343f76ee892STomi Valkeinen 		return 0x0080;
344f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
345f76ee892STomi Valkeinen 		return 0x00BC;
346f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
347f76ee892STomi Valkeinen 		return 0x014C;
348f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
349f76ee892STomi Valkeinen 		return 0x0300;
350f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
351f76ee892STomi Valkeinen 		return 0x0500;
352f76ee892STomi Valkeinen 	default:
353f76ee892STomi Valkeinen 		BUG();
354f76ee892STomi Valkeinen 		return 0;
355f76ee892STomi Valkeinen 	}
356f76ee892STomi Valkeinen }
357f76ee892STomi Valkeinen 
358f76ee892STomi Valkeinen /* DISPC overlay register offsets */
DISPC_BA0_OFFSET(enum omap_plane plane)359f76ee892STomi Valkeinen static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
360f76ee892STomi Valkeinen {
361f76ee892STomi Valkeinen 	switch (plane) {
362f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
363f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
364f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
365f76ee892STomi Valkeinen 		return 0x0000;
366f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
367f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
368f76ee892STomi Valkeinen 		return 0x0008;
369f76ee892STomi Valkeinen 	default:
370f76ee892STomi Valkeinen 		BUG();
371f76ee892STomi Valkeinen 		return 0;
372f76ee892STomi Valkeinen 	}
373f76ee892STomi Valkeinen }
374f76ee892STomi Valkeinen 
DISPC_BA1_OFFSET(enum omap_plane plane)375f76ee892STomi Valkeinen static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
376f76ee892STomi Valkeinen {
377f76ee892STomi Valkeinen 	switch (plane) {
378f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
379f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
380f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
381f76ee892STomi Valkeinen 		return 0x0004;
382f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
383f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
384f76ee892STomi Valkeinen 		return 0x000C;
385f76ee892STomi Valkeinen 	default:
386f76ee892STomi Valkeinen 		BUG();
387f76ee892STomi Valkeinen 		return 0;
388f76ee892STomi Valkeinen 	}
389f76ee892STomi Valkeinen }
390f76ee892STomi Valkeinen 
DISPC_BA0_UV_OFFSET(enum omap_plane plane)391f76ee892STomi Valkeinen static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
392f76ee892STomi Valkeinen {
393f76ee892STomi Valkeinen 	switch (plane) {
394f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
395f76ee892STomi Valkeinen 		BUG();
396f76ee892STomi Valkeinen 		return 0;
397f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
398f76ee892STomi Valkeinen 		return 0x0544;
399f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
400f76ee892STomi Valkeinen 		return 0x04BC;
401f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
402f76ee892STomi Valkeinen 		return 0x0310;
403f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
404f76ee892STomi Valkeinen 		return 0x0118;
405f76ee892STomi Valkeinen 	default:
406f76ee892STomi Valkeinen 		BUG();
407f76ee892STomi Valkeinen 		return 0;
408f76ee892STomi Valkeinen 	}
409f76ee892STomi Valkeinen }
410f76ee892STomi Valkeinen 
DISPC_BA1_UV_OFFSET(enum omap_plane plane)411f76ee892STomi Valkeinen static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
412f76ee892STomi Valkeinen {
413f76ee892STomi Valkeinen 	switch (plane) {
414f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
415f76ee892STomi Valkeinen 		BUG();
416f76ee892STomi Valkeinen 		return 0;
417f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
418f76ee892STomi Valkeinen 		return 0x0548;
419f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
420f76ee892STomi Valkeinen 		return 0x04C0;
421f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
422f76ee892STomi Valkeinen 		return 0x0314;
423f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
424f76ee892STomi Valkeinen 		return 0x011C;
425f76ee892STomi Valkeinen 	default:
426f76ee892STomi Valkeinen 		BUG();
427f76ee892STomi Valkeinen 		return 0;
428f76ee892STomi Valkeinen 	}
429f76ee892STomi Valkeinen }
430f76ee892STomi Valkeinen 
DISPC_POS_OFFSET(enum omap_plane plane)431f76ee892STomi Valkeinen static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
432f76ee892STomi Valkeinen {
433f76ee892STomi Valkeinen 	switch (plane) {
434f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
435f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
436f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
437f76ee892STomi Valkeinen 		return 0x0008;
438f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
439f76ee892STomi Valkeinen 		return 0x009C;
440f76ee892STomi Valkeinen 	default:
441f76ee892STomi Valkeinen 		BUG();
442f76ee892STomi Valkeinen 		return 0;
443f76ee892STomi Valkeinen 	}
444f76ee892STomi Valkeinen }
445f76ee892STomi Valkeinen 
DISPC_SIZE_OFFSET(enum omap_plane plane)446f76ee892STomi Valkeinen static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
447f76ee892STomi Valkeinen {
448f76ee892STomi Valkeinen 	switch (plane) {
449f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
450f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
451f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
452f76ee892STomi Valkeinen 		return 0x000C;
453f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
454f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
455f76ee892STomi Valkeinen 		return 0x00A8;
456f76ee892STomi Valkeinen 	default:
457f76ee892STomi Valkeinen 		BUG();
458f76ee892STomi Valkeinen 		return 0;
459f76ee892STomi Valkeinen 	}
460f76ee892STomi Valkeinen }
461f76ee892STomi Valkeinen 
DISPC_ATTR_OFFSET(enum omap_plane plane)462f76ee892STomi Valkeinen static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
463f76ee892STomi Valkeinen {
464f76ee892STomi Valkeinen 	switch (plane) {
465f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
466f76ee892STomi Valkeinen 		return 0x0020;
467f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
468f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
469f76ee892STomi Valkeinen 		return 0x0010;
470f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
471f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
472f76ee892STomi Valkeinen 		return 0x0070;
473f76ee892STomi Valkeinen 	default:
474f76ee892STomi Valkeinen 		BUG();
475f76ee892STomi Valkeinen 		return 0;
476f76ee892STomi Valkeinen 	}
477f76ee892STomi Valkeinen }
478f76ee892STomi Valkeinen 
DISPC_ATTR2_OFFSET(enum omap_plane plane)479f76ee892STomi Valkeinen static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
480f76ee892STomi Valkeinen {
481f76ee892STomi Valkeinen 	switch (plane) {
482f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
483f76ee892STomi Valkeinen 		BUG();
484f76ee892STomi Valkeinen 		return 0;
485f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
486f76ee892STomi Valkeinen 		return 0x0568;
487f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
488f76ee892STomi Valkeinen 		return 0x04DC;
489f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
490f76ee892STomi Valkeinen 		return 0x032C;
491f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
492f76ee892STomi Valkeinen 		return 0x0310;
493f76ee892STomi Valkeinen 	default:
494f76ee892STomi Valkeinen 		BUG();
495f76ee892STomi Valkeinen 		return 0;
496f76ee892STomi Valkeinen 	}
497f76ee892STomi Valkeinen }
498f76ee892STomi Valkeinen 
DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)499f76ee892STomi Valkeinen static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
500f76ee892STomi Valkeinen {
501f76ee892STomi Valkeinen 	switch (plane) {
502f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
503f76ee892STomi Valkeinen 		return 0x0024;
504f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
505f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
506f76ee892STomi Valkeinen 		return 0x0014;
507f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
508f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
509f76ee892STomi Valkeinen 		return 0x008C;
510f76ee892STomi Valkeinen 	default:
511f76ee892STomi Valkeinen 		BUG();
512f76ee892STomi Valkeinen 		return 0;
513f76ee892STomi Valkeinen 	}
514f76ee892STomi Valkeinen }
515f76ee892STomi Valkeinen 
DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)516f76ee892STomi Valkeinen static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
517f76ee892STomi Valkeinen {
518f76ee892STomi Valkeinen 	switch (plane) {
519f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
520f76ee892STomi Valkeinen 		return 0x0028;
521f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
522f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
523f76ee892STomi Valkeinen 		return 0x0018;
524f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
525f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
526f76ee892STomi Valkeinen 		return 0x0088;
527f76ee892STomi Valkeinen 	default:
528f76ee892STomi Valkeinen 		BUG();
529f76ee892STomi Valkeinen 		return 0;
530f76ee892STomi Valkeinen 	}
531f76ee892STomi Valkeinen }
532f76ee892STomi Valkeinen 
DISPC_ROW_INC_OFFSET(enum omap_plane plane)533f76ee892STomi Valkeinen static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
534f76ee892STomi Valkeinen {
535f76ee892STomi Valkeinen 	switch (plane) {
536f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
537f76ee892STomi Valkeinen 		return 0x002C;
538f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
539f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
540f76ee892STomi Valkeinen 		return 0x001C;
541f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
542f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
543f76ee892STomi Valkeinen 		return 0x00A4;
544f76ee892STomi Valkeinen 	default:
545f76ee892STomi Valkeinen 		BUG();
546f76ee892STomi Valkeinen 		return 0;
547f76ee892STomi Valkeinen 	}
548f76ee892STomi Valkeinen }
549f76ee892STomi Valkeinen 
DISPC_PIX_INC_OFFSET(enum omap_plane plane)550f76ee892STomi Valkeinen static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
551f76ee892STomi Valkeinen {
552f76ee892STomi Valkeinen 	switch (plane) {
553f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
554f76ee892STomi Valkeinen 		return 0x0030;
555f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
556f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
557f76ee892STomi Valkeinen 		return 0x0020;
558f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
559f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
560f76ee892STomi Valkeinen 		return 0x0098;
561f76ee892STomi Valkeinen 	default:
562f76ee892STomi Valkeinen 		BUG();
563f76ee892STomi Valkeinen 		return 0;
564f76ee892STomi Valkeinen 	}
565f76ee892STomi Valkeinen }
566f76ee892STomi Valkeinen 
DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)567f76ee892STomi Valkeinen static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
568f76ee892STomi Valkeinen {
569f76ee892STomi Valkeinen 	switch (plane) {
570f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
571f76ee892STomi Valkeinen 		return 0x0034;
572f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
573f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
574f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
575f76ee892STomi Valkeinen 		BUG();
576f76ee892STomi Valkeinen 		return 0;
577f76ee892STomi Valkeinen 	default:
578f76ee892STomi Valkeinen 		BUG();
579f76ee892STomi Valkeinen 		return 0;
580f76ee892STomi Valkeinen 	}
581f76ee892STomi Valkeinen }
582f76ee892STomi Valkeinen 
DISPC_TABLE_BA_OFFSET(enum omap_plane plane)583f76ee892STomi Valkeinen static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
584f76ee892STomi Valkeinen {
585f76ee892STomi Valkeinen 	switch (plane) {
586f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
587f76ee892STomi Valkeinen 		return 0x0038;
588f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
589f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
590f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
591f76ee892STomi Valkeinen 		BUG();
592f76ee892STomi Valkeinen 		return 0;
593f76ee892STomi Valkeinen 	default:
594f76ee892STomi Valkeinen 		BUG();
595f76ee892STomi Valkeinen 		return 0;
596f76ee892STomi Valkeinen 	}
597f76ee892STomi Valkeinen }
598f76ee892STomi Valkeinen 
DISPC_FIR_OFFSET(enum omap_plane plane)599f76ee892STomi Valkeinen static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
600f76ee892STomi Valkeinen {
601f76ee892STomi Valkeinen 	switch (plane) {
602f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
603f76ee892STomi Valkeinen 		BUG();
604f76ee892STomi Valkeinen 		return 0;
605f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
606f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
607f76ee892STomi Valkeinen 		return 0x0024;
608f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
609f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
610f76ee892STomi Valkeinen 		return 0x0090;
611f76ee892STomi Valkeinen 	default:
612f76ee892STomi Valkeinen 		BUG();
613f76ee892STomi Valkeinen 		return 0;
614f76ee892STomi Valkeinen 	}
615f76ee892STomi Valkeinen }
616f76ee892STomi Valkeinen 
DISPC_FIR2_OFFSET(enum omap_plane plane)617f76ee892STomi Valkeinen static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
618f76ee892STomi Valkeinen {
619f76ee892STomi Valkeinen 	switch (plane) {
620f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
621f76ee892STomi Valkeinen 		BUG();
622f76ee892STomi Valkeinen 		return 0;
623f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
624f76ee892STomi Valkeinen 		return 0x0580;
625f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
626f76ee892STomi Valkeinen 		return 0x055C;
627f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
628f76ee892STomi Valkeinen 		return 0x0424;
629f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
630f76ee892STomi Valkeinen 		return 0x290;
631f76ee892STomi Valkeinen 	default:
632f76ee892STomi Valkeinen 		BUG();
633f76ee892STomi Valkeinen 		return 0;
634f76ee892STomi Valkeinen 	}
635f76ee892STomi Valkeinen }
636f76ee892STomi Valkeinen 
DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)637f76ee892STomi Valkeinen static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
638f76ee892STomi Valkeinen {
639f76ee892STomi Valkeinen 	switch (plane) {
640f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
641f76ee892STomi Valkeinen 		BUG();
642f76ee892STomi Valkeinen 		return 0;
643f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
644f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
645f76ee892STomi Valkeinen 		return 0x0028;
646f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
647f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
648f76ee892STomi Valkeinen 		return 0x0094;
649f76ee892STomi Valkeinen 	default:
650f76ee892STomi Valkeinen 		BUG();
651f76ee892STomi Valkeinen 		return 0;
652f76ee892STomi Valkeinen 	}
653f76ee892STomi Valkeinen }
654f76ee892STomi Valkeinen 
655f76ee892STomi Valkeinen 
DISPC_ACCU0_OFFSET(enum omap_plane plane)656f76ee892STomi Valkeinen static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
657f76ee892STomi Valkeinen {
658f76ee892STomi Valkeinen 	switch (plane) {
659f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
660f76ee892STomi Valkeinen 		BUG();
661f76ee892STomi Valkeinen 		return 0;
662f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
663f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
664f76ee892STomi Valkeinen 		return 0x002C;
665f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
666f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
667f76ee892STomi Valkeinen 		return 0x0000;
668f76ee892STomi Valkeinen 	default:
669f76ee892STomi Valkeinen 		BUG();
670f76ee892STomi Valkeinen 		return 0;
671f76ee892STomi Valkeinen 	}
672f76ee892STomi Valkeinen }
673f76ee892STomi Valkeinen 
DISPC_ACCU2_0_OFFSET(enum omap_plane plane)674f76ee892STomi Valkeinen static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
675f76ee892STomi Valkeinen {
676f76ee892STomi Valkeinen 	switch (plane) {
677f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
678f76ee892STomi Valkeinen 		BUG();
679f76ee892STomi Valkeinen 		return 0;
680f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
681f76ee892STomi Valkeinen 		return 0x0584;
682f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
683f76ee892STomi Valkeinen 		return 0x0560;
684f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
685f76ee892STomi Valkeinen 		return 0x0428;
686f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
687f76ee892STomi Valkeinen 		return 0x0294;
688f76ee892STomi Valkeinen 	default:
689f76ee892STomi Valkeinen 		BUG();
690f76ee892STomi Valkeinen 		return 0;
691f76ee892STomi Valkeinen 	}
692f76ee892STomi Valkeinen }
693f76ee892STomi Valkeinen 
DISPC_ACCU1_OFFSET(enum omap_plane plane)694f76ee892STomi Valkeinen static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
695f76ee892STomi Valkeinen {
696f76ee892STomi Valkeinen 	switch (plane) {
697f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
698f76ee892STomi Valkeinen 		BUG();
699f76ee892STomi Valkeinen 		return 0;
700f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
701f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
702f76ee892STomi Valkeinen 		return 0x0030;
703f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
704f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
705f76ee892STomi Valkeinen 		return 0x0004;
706f76ee892STomi Valkeinen 	default:
707f76ee892STomi Valkeinen 		BUG();
708f76ee892STomi Valkeinen 		return 0;
709f76ee892STomi Valkeinen 	}
710f76ee892STomi Valkeinen }
711f76ee892STomi Valkeinen 
DISPC_ACCU2_1_OFFSET(enum omap_plane plane)712f76ee892STomi Valkeinen static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
713f76ee892STomi Valkeinen {
714f76ee892STomi Valkeinen 	switch (plane) {
715f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
716f76ee892STomi Valkeinen 		BUG();
717f76ee892STomi Valkeinen 		return 0;
718f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
719f76ee892STomi Valkeinen 		return 0x0588;
720f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
721f76ee892STomi Valkeinen 		return 0x0564;
722f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
723f76ee892STomi Valkeinen 		return 0x042C;
724f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
725f76ee892STomi Valkeinen 		return 0x0298;
726f76ee892STomi Valkeinen 	default:
727f76ee892STomi Valkeinen 		BUG();
728f76ee892STomi Valkeinen 		return 0;
729f76ee892STomi Valkeinen 	}
730f76ee892STomi Valkeinen }
731f76ee892STomi Valkeinen 
732f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane,u16 i)733f76ee892STomi Valkeinen static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
734f76ee892STomi Valkeinen {
735f76ee892STomi Valkeinen 	switch (plane) {
736f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
737f76ee892STomi Valkeinen 		BUG();
738f76ee892STomi Valkeinen 		return 0;
739f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
740f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
741f76ee892STomi Valkeinen 		return 0x0034 + i * 0x8;
742f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
743f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
744f76ee892STomi Valkeinen 		return 0x0010 + i * 0x8;
745f76ee892STomi Valkeinen 	default:
746f76ee892STomi Valkeinen 		BUG();
747f76ee892STomi Valkeinen 		return 0;
748f76ee892STomi Valkeinen 	}
749f76ee892STomi Valkeinen }
750f76ee892STomi Valkeinen 
751f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane,u16 i)752f76ee892STomi Valkeinen static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
753f76ee892STomi Valkeinen {
754f76ee892STomi Valkeinen 	switch (plane) {
755f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
756f76ee892STomi Valkeinen 		BUG();
757f76ee892STomi Valkeinen 		return 0;
758f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
759f76ee892STomi Valkeinen 		return 0x058C + i * 0x8;
760f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
761f76ee892STomi Valkeinen 		return 0x0568 + i * 0x8;
762f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
763f76ee892STomi Valkeinen 		return 0x0430 + i * 0x8;
764f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
765f76ee892STomi Valkeinen 		return 0x02A0 + i * 0x8;
766f76ee892STomi Valkeinen 	default:
767f76ee892STomi Valkeinen 		BUG();
768f76ee892STomi Valkeinen 		return 0;
769f76ee892STomi Valkeinen 	}
770f76ee892STomi Valkeinen }
771f76ee892STomi Valkeinen 
772f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane,u16 i)773f76ee892STomi Valkeinen static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
774f76ee892STomi Valkeinen {
775f76ee892STomi Valkeinen 	switch (plane) {
776f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
777f76ee892STomi Valkeinen 		BUG();
778f76ee892STomi Valkeinen 		return 0;
779f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
780f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
781f76ee892STomi Valkeinen 		return 0x0038 + i * 0x8;
782f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
783f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
784f76ee892STomi Valkeinen 		return 0x0014 + i * 0x8;
785f76ee892STomi Valkeinen 	default:
786f76ee892STomi Valkeinen 		BUG();
787f76ee892STomi Valkeinen 		return 0;
788f76ee892STomi Valkeinen 	}
789f76ee892STomi Valkeinen }
790f76ee892STomi Valkeinen 
791f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane,u16 i)792f76ee892STomi Valkeinen static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
793f76ee892STomi Valkeinen {
794f76ee892STomi Valkeinen 	switch (plane) {
795f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
796f76ee892STomi Valkeinen 		BUG();
797f76ee892STomi Valkeinen 		return 0;
798f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
799f76ee892STomi Valkeinen 		return 0x0590 + i * 8;
800f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
801f76ee892STomi Valkeinen 		return 0x056C + i * 0x8;
802f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
803f76ee892STomi Valkeinen 		return 0x0434 + i * 0x8;
804f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
805f76ee892STomi Valkeinen 		return 0x02A4 + i * 0x8;
806f76ee892STomi Valkeinen 	default:
807f76ee892STomi Valkeinen 		BUG();
808f76ee892STomi Valkeinen 		return 0;
809f76ee892STomi Valkeinen 	}
810f76ee892STomi Valkeinen }
811f76ee892STomi Valkeinen 
812f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4,} */
DISPC_CONV_COEF_OFFSET(enum omap_plane plane,u16 i)813f76ee892STomi Valkeinen static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
814f76ee892STomi Valkeinen {
815f76ee892STomi Valkeinen 	switch (plane) {
816f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
817f76ee892STomi Valkeinen 		BUG();
818f76ee892STomi Valkeinen 		return 0;
819f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
820f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
821f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
822f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
823f76ee892STomi Valkeinen 		return 0x0074 + i * 0x4;
824f76ee892STomi Valkeinen 	default:
825f76ee892STomi Valkeinen 		BUG();
826f76ee892STomi Valkeinen 		return 0;
827f76ee892STomi Valkeinen 	}
828f76ee892STomi Valkeinen }
829f76ee892STomi Valkeinen 
830f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane,u16 i)831f76ee892STomi Valkeinen static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
832f76ee892STomi Valkeinen {
833f76ee892STomi Valkeinen 	switch (plane) {
834f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
835f76ee892STomi Valkeinen 		BUG();
836f76ee892STomi Valkeinen 		return 0;
837f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
838f76ee892STomi Valkeinen 		return 0x0124 + i * 0x4;
839f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
840f76ee892STomi Valkeinen 		return 0x00B4 + i * 0x4;
841f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
842f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
843f76ee892STomi Valkeinen 		return 0x0050 + i * 0x4;
844f76ee892STomi Valkeinen 	default:
845f76ee892STomi Valkeinen 		BUG();
846f76ee892STomi Valkeinen 		return 0;
847f76ee892STomi Valkeinen 	}
848f76ee892STomi Valkeinen }
849f76ee892STomi Valkeinen 
850f76ee892STomi Valkeinen /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane,u16 i)851f76ee892STomi Valkeinen static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
852f76ee892STomi Valkeinen {
853f76ee892STomi Valkeinen 	switch (plane) {
854f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
855f76ee892STomi Valkeinen 		BUG();
856f76ee892STomi Valkeinen 		return 0;
857f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
858f76ee892STomi Valkeinen 		return 0x05CC + i * 0x4;
859f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
860f76ee892STomi Valkeinen 		return 0x05A8 + i * 0x4;
861f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
862f76ee892STomi Valkeinen 		return 0x0470 + i * 0x4;
863f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
864f76ee892STomi Valkeinen 		return 0x02E0 + i * 0x4;
865f76ee892STomi Valkeinen 	default:
866f76ee892STomi Valkeinen 		BUG();
867f76ee892STomi Valkeinen 		return 0;
868f76ee892STomi Valkeinen 	}
869f76ee892STomi Valkeinen }
870f76ee892STomi Valkeinen 
DISPC_PRELOAD_OFFSET(enum omap_plane plane)871f76ee892STomi Valkeinen static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
872f76ee892STomi Valkeinen {
873f76ee892STomi Valkeinen 	switch (plane) {
874f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
875f76ee892STomi Valkeinen 		return 0x01AC;
876f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
877f76ee892STomi Valkeinen 		return 0x0174;
878f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
879f76ee892STomi Valkeinen 		return 0x00E8;
880f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
881f76ee892STomi Valkeinen 		return 0x00A0;
882f76ee892STomi Valkeinen 	default:
883f76ee892STomi Valkeinen 		BUG();
884f76ee892STomi Valkeinen 		return 0;
885f76ee892STomi Valkeinen 	}
886f76ee892STomi Valkeinen }
887f76ee892STomi Valkeinen 
DISPC_MFLAG_THRESHOLD_OFFSET(enum omap_plane plane)888f76ee892STomi Valkeinen static inline u16 DISPC_MFLAG_THRESHOLD_OFFSET(enum omap_plane plane)
889f76ee892STomi Valkeinen {
890f76ee892STomi Valkeinen 	switch (plane) {
891f76ee892STomi Valkeinen 	case OMAP_DSS_GFX:
892f76ee892STomi Valkeinen 		return 0x0860;
893f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO1:
894f76ee892STomi Valkeinen 		return 0x0864;
895f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO2:
896f76ee892STomi Valkeinen 		return 0x0868;
897f76ee892STomi Valkeinen 	case OMAP_DSS_VIDEO3:
898f76ee892STomi Valkeinen 		return 0x086c;
899f76ee892STomi Valkeinen 	case OMAP_DSS_WB:
900f76ee892STomi Valkeinen 		return 0x0870;
901f76ee892STomi Valkeinen 	default:
902f76ee892STomi Valkeinen 		BUG();
903f76ee892STomi Valkeinen 		return 0;
904f76ee892STomi Valkeinen 	}
905f76ee892STomi Valkeinen }
90635a339acSTomi Valkeinen 
907f76ee892STomi Valkeinen #endif
908