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