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