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