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