2 * linux/drivers/video/omap2/dss/dispc.h
4 * Copyright (C) 2011 Texas Instruments
5 * Author: Archit Taneja <archit@ti.com>
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 2 as published by
10 * the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
17 * You should have received a copy of the GNU General Public License along with
18 * this program. If not, see <http://www.gnu.org/licenses/>.
21 #ifndef __OMAP2_DISPC_REG_H
22 #define __OMAP2_DISPC_REG_H
24 /* DISPC common registers */
25 #define DISPC_REVISION 0x0000
26 #define DISPC_SYSCONFIG 0x0010
27 #define DISPC_SYSSTATUS 0x0014
28 #define DISPC_IRQSTATUS 0x0018
29 #define DISPC_IRQENABLE 0x001C
30 #define DISPC_CONTROL 0x0040
31 #define DISPC_CONFIG 0x0044
32 #define DISPC_CAPABLE 0x0048
33 #define DISPC_LINE_STATUS 0x005C
34 #define DISPC_LINE_NUMBER 0x0060
35 #define DISPC_GLOBAL_ALPHA 0x0074
36 #define DISPC_CONTROL2 0x0238
37 #define DISPC_CONFIG2 0x0620
38 #define DISPC_DIVISOR 0x0804
39 #define DISPC_GLOBAL_BUFFER 0x0800
40 #define DISPC_CONTROL3 0x0848
41 #define DISPC_CONFIG3 0x084C
42 #define DISPC_MSTANDBY_CTRL 0x0858
44 /* DISPC overlay registers */
45 #define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
47 #define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
49 #define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
50 DISPC_BA0_UV_OFFSET(n))
51 #define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
52 DISPC_BA1_UV_OFFSET(n))
53 #define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
55 #define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
57 #define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
59 #define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
60 DISPC_ATTR2_OFFSET(n))
61 #define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
62 DISPC_FIFO_THRESH_OFFSET(n))
63 #define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
64 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
65 #define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
66 DISPC_ROW_INC_OFFSET(n))
67 #define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
68 DISPC_PIX_INC_OFFSET(n))
69 #define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
70 DISPC_WINDOW_SKIP_OFFSET(n))
71 #define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
72 DISPC_TABLE_BA_OFFSET(n))
73 #define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
75 #define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
77 #define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
78 DISPC_PIC_SIZE_OFFSET(n))
79 #define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
80 DISPC_ACCU0_OFFSET(n))
81 #define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
82 DISPC_ACCU1_OFFSET(n))
83 #define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
84 DISPC_ACCU2_0_OFFSET(n))
85 #define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
86 DISPC_ACCU2_1_OFFSET(n))
87 #define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
88 DISPC_FIR_COEF_H_OFFSET(n, i))
89 #define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
90 DISPC_FIR_COEF_HV_OFFSET(n, i))
91 #define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
92 DISPC_FIR_COEF_H2_OFFSET(n, i))
93 #define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
94 DISPC_FIR_COEF_HV2_OFFSET(n, i))
95 #define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
96 DISPC_CONV_COEF_OFFSET(n, i))
97 #define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
98 DISPC_FIR_COEF_V_OFFSET(n, i))
99 #define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
100 DISPC_FIR_COEF_V2_OFFSET(n, i))
101 #define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
102 DISPC_PRELOAD_OFFSET(n))
104 /* DISPC up/downsampling FIR filter coefficient structure */
113 const struct dispc_coef
*dispc_ovl_get_scale_coef(int inc
, int five_taps
);
115 /* DISPC manager/channel specific registers */
116 static inline u16
DISPC_DEFAULT_COLOR(enum omap_channel channel
)
119 case OMAP_DSS_CHANNEL_LCD
:
121 case OMAP_DSS_CHANNEL_DIGIT
:
123 case OMAP_DSS_CHANNEL_LCD2
:
125 case OMAP_DSS_CHANNEL_LCD3
:
133 static inline u16
DISPC_TRANS_COLOR(enum omap_channel channel
)
136 case OMAP_DSS_CHANNEL_LCD
:
138 case OMAP_DSS_CHANNEL_DIGIT
:
140 case OMAP_DSS_CHANNEL_LCD2
:
142 case OMAP_DSS_CHANNEL_LCD3
:
150 static inline u16
DISPC_TIMING_H(enum omap_channel channel
)
153 case OMAP_DSS_CHANNEL_LCD
:
155 case OMAP_DSS_CHANNEL_DIGIT
:
158 case OMAP_DSS_CHANNEL_LCD2
:
160 case OMAP_DSS_CHANNEL_LCD3
:
168 static inline u16
DISPC_TIMING_V(enum omap_channel channel
)
171 case OMAP_DSS_CHANNEL_LCD
:
173 case OMAP_DSS_CHANNEL_DIGIT
:
176 case OMAP_DSS_CHANNEL_LCD2
:
178 case OMAP_DSS_CHANNEL_LCD3
:
186 static inline u16
DISPC_POL_FREQ(enum omap_channel channel
)
189 case OMAP_DSS_CHANNEL_LCD
:
191 case OMAP_DSS_CHANNEL_DIGIT
:
194 case OMAP_DSS_CHANNEL_LCD2
:
196 case OMAP_DSS_CHANNEL_LCD3
:
204 static inline u16
DISPC_DIVISORo(enum omap_channel channel
)
207 case OMAP_DSS_CHANNEL_LCD
:
209 case OMAP_DSS_CHANNEL_DIGIT
:
212 case OMAP_DSS_CHANNEL_LCD2
:
214 case OMAP_DSS_CHANNEL_LCD3
:
222 /* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
223 static inline u16
DISPC_SIZE_MGR(enum omap_channel channel
)
226 case OMAP_DSS_CHANNEL_LCD
:
228 case OMAP_DSS_CHANNEL_DIGIT
:
230 case OMAP_DSS_CHANNEL_LCD2
:
232 case OMAP_DSS_CHANNEL_LCD3
:
240 static inline u16
DISPC_DATA_CYCLE1(enum omap_channel channel
)
243 case OMAP_DSS_CHANNEL_LCD
:
245 case OMAP_DSS_CHANNEL_DIGIT
:
248 case OMAP_DSS_CHANNEL_LCD2
:
250 case OMAP_DSS_CHANNEL_LCD3
:
258 static inline u16
DISPC_DATA_CYCLE2(enum omap_channel channel
)
261 case OMAP_DSS_CHANNEL_LCD
:
263 case OMAP_DSS_CHANNEL_DIGIT
:
266 case OMAP_DSS_CHANNEL_LCD2
:
268 case OMAP_DSS_CHANNEL_LCD3
:
276 static inline u16
DISPC_DATA_CYCLE3(enum omap_channel channel
)
279 case OMAP_DSS_CHANNEL_LCD
:
281 case OMAP_DSS_CHANNEL_DIGIT
:
284 case OMAP_DSS_CHANNEL_LCD2
:
286 case OMAP_DSS_CHANNEL_LCD3
:
294 static inline u16
DISPC_CPR_COEF_R(enum omap_channel channel
)
297 case OMAP_DSS_CHANNEL_LCD
:
299 case OMAP_DSS_CHANNEL_DIGIT
:
302 case OMAP_DSS_CHANNEL_LCD2
:
304 case OMAP_DSS_CHANNEL_LCD3
:
312 static inline u16
DISPC_CPR_COEF_G(enum omap_channel channel
)
315 case OMAP_DSS_CHANNEL_LCD
:
317 case OMAP_DSS_CHANNEL_DIGIT
:
320 case OMAP_DSS_CHANNEL_LCD2
:
322 case OMAP_DSS_CHANNEL_LCD3
:
330 static inline u16
DISPC_CPR_COEF_B(enum omap_channel channel
)
333 case OMAP_DSS_CHANNEL_LCD
:
335 case OMAP_DSS_CHANNEL_DIGIT
:
338 case OMAP_DSS_CHANNEL_LCD2
:
340 case OMAP_DSS_CHANNEL_LCD3
:
348 /* DISPC overlay register base addresses */
349 static inline u16
DISPC_OVL_BASE(enum omap_plane plane
)
354 case OMAP_DSS_VIDEO1
:
356 case OMAP_DSS_VIDEO2
:
358 case OMAP_DSS_VIDEO3
:
368 /* DISPC overlay register offsets */
369 static inline u16
DISPC_BA0_OFFSET(enum omap_plane plane
)
373 case OMAP_DSS_VIDEO1
:
374 case OMAP_DSS_VIDEO2
:
376 case OMAP_DSS_VIDEO3
:
385 static inline u16
DISPC_BA1_OFFSET(enum omap_plane plane
)
389 case OMAP_DSS_VIDEO1
:
390 case OMAP_DSS_VIDEO2
:
392 case OMAP_DSS_VIDEO3
:
401 static inline u16
DISPC_BA0_UV_OFFSET(enum omap_plane plane
)
407 case OMAP_DSS_VIDEO1
:
409 case OMAP_DSS_VIDEO2
:
411 case OMAP_DSS_VIDEO3
:
421 static inline u16
DISPC_BA1_UV_OFFSET(enum omap_plane plane
)
427 case OMAP_DSS_VIDEO1
:
429 case OMAP_DSS_VIDEO2
:
431 case OMAP_DSS_VIDEO3
:
441 static inline u16
DISPC_POS_OFFSET(enum omap_plane plane
)
445 case OMAP_DSS_VIDEO1
:
446 case OMAP_DSS_VIDEO2
:
448 case OMAP_DSS_VIDEO3
:
456 static inline u16
DISPC_SIZE_OFFSET(enum omap_plane plane
)
460 case OMAP_DSS_VIDEO1
:
461 case OMAP_DSS_VIDEO2
:
463 case OMAP_DSS_VIDEO3
:
472 static inline u16
DISPC_ATTR_OFFSET(enum omap_plane plane
)
477 case OMAP_DSS_VIDEO1
:
478 case OMAP_DSS_VIDEO2
:
480 case OMAP_DSS_VIDEO3
:
489 static inline u16
DISPC_ATTR2_OFFSET(enum omap_plane plane
)
495 case OMAP_DSS_VIDEO1
:
497 case OMAP_DSS_VIDEO2
:
499 case OMAP_DSS_VIDEO3
:
509 static inline u16
DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane
)
514 case OMAP_DSS_VIDEO1
:
515 case OMAP_DSS_VIDEO2
:
517 case OMAP_DSS_VIDEO3
:
526 static inline u16
DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane
)
531 case OMAP_DSS_VIDEO1
:
532 case OMAP_DSS_VIDEO2
:
534 case OMAP_DSS_VIDEO3
:
543 static inline u16
DISPC_ROW_INC_OFFSET(enum omap_plane plane
)
548 case OMAP_DSS_VIDEO1
:
549 case OMAP_DSS_VIDEO2
:
551 case OMAP_DSS_VIDEO3
:
560 static inline u16
DISPC_PIX_INC_OFFSET(enum omap_plane plane
)
565 case OMAP_DSS_VIDEO1
:
566 case OMAP_DSS_VIDEO2
:
568 case OMAP_DSS_VIDEO3
:
577 static inline u16
DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane
)
582 case OMAP_DSS_VIDEO1
:
583 case OMAP_DSS_VIDEO2
:
584 case OMAP_DSS_VIDEO3
:
593 static inline u16
DISPC_TABLE_BA_OFFSET(enum omap_plane plane
)
598 case OMAP_DSS_VIDEO1
:
599 case OMAP_DSS_VIDEO2
:
600 case OMAP_DSS_VIDEO3
:
609 static inline u16
DISPC_FIR_OFFSET(enum omap_plane plane
)
615 case OMAP_DSS_VIDEO1
:
616 case OMAP_DSS_VIDEO2
:
618 case OMAP_DSS_VIDEO3
:
627 static inline u16
DISPC_FIR2_OFFSET(enum omap_plane plane
)
633 case OMAP_DSS_VIDEO1
:
635 case OMAP_DSS_VIDEO2
:
637 case OMAP_DSS_VIDEO3
:
647 static inline u16
DISPC_PIC_SIZE_OFFSET(enum omap_plane plane
)
653 case OMAP_DSS_VIDEO1
:
654 case OMAP_DSS_VIDEO2
:
656 case OMAP_DSS_VIDEO3
:
666 static inline u16
DISPC_ACCU0_OFFSET(enum omap_plane plane
)
672 case OMAP_DSS_VIDEO1
:
673 case OMAP_DSS_VIDEO2
:
675 case OMAP_DSS_VIDEO3
:
684 static inline u16
DISPC_ACCU2_0_OFFSET(enum omap_plane plane
)
690 case OMAP_DSS_VIDEO1
:
692 case OMAP_DSS_VIDEO2
:
694 case OMAP_DSS_VIDEO3
:
704 static inline u16
DISPC_ACCU1_OFFSET(enum omap_plane plane
)
710 case OMAP_DSS_VIDEO1
:
711 case OMAP_DSS_VIDEO2
:
713 case OMAP_DSS_VIDEO3
:
722 static inline u16
DISPC_ACCU2_1_OFFSET(enum omap_plane plane
)
728 case OMAP_DSS_VIDEO1
:
730 case OMAP_DSS_VIDEO2
:
732 case OMAP_DSS_VIDEO3
:
742 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
743 static inline u16
DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane
, u16 i
)
749 case OMAP_DSS_VIDEO1
:
750 case OMAP_DSS_VIDEO2
:
751 return 0x0034 + i
* 0x8;
752 case OMAP_DSS_VIDEO3
:
754 return 0x0010 + i
* 0x8;
761 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
762 static inline u16
DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane
, u16 i
)
768 case OMAP_DSS_VIDEO1
:
769 return 0x058C + i
* 0x8;
770 case OMAP_DSS_VIDEO2
:
771 return 0x0568 + i
* 0x8;
772 case OMAP_DSS_VIDEO3
:
773 return 0x0430 + i
* 0x8;
775 return 0x02A0 + i
* 0x8;
782 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
783 static inline u16
DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane
, u16 i
)
789 case OMAP_DSS_VIDEO1
:
790 case OMAP_DSS_VIDEO2
:
791 return 0x0038 + i
* 0x8;
792 case OMAP_DSS_VIDEO3
:
794 return 0x0014 + i
* 0x8;
801 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
802 static inline u16
DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane
, u16 i
)
808 case OMAP_DSS_VIDEO1
:
809 return 0x0590 + i
* 8;
810 case OMAP_DSS_VIDEO2
:
811 return 0x056C + i
* 0x8;
812 case OMAP_DSS_VIDEO3
:
813 return 0x0434 + i
* 0x8;
815 return 0x02A4 + i
* 0x8;
822 /* coef index i = {0, 1, 2, 3, 4,} */
823 static inline u16
DISPC_CONV_COEF_OFFSET(enum omap_plane plane
, u16 i
)
829 case OMAP_DSS_VIDEO1
:
830 case OMAP_DSS_VIDEO2
:
831 case OMAP_DSS_VIDEO3
:
833 return 0x0074 + i
* 0x4;
840 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
841 static inline u16
DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane
, u16 i
)
847 case OMAP_DSS_VIDEO1
:
848 return 0x0124 + i
* 0x4;
849 case OMAP_DSS_VIDEO2
:
850 return 0x00B4 + i
* 0x4;
851 case OMAP_DSS_VIDEO3
:
853 return 0x0050 + i
* 0x4;
860 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
861 static inline u16
DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane
, u16 i
)
867 case OMAP_DSS_VIDEO1
:
868 return 0x05CC + i
* 0x4;
869 case OMAP_DSS_VIDEO2
:
870 return 0x05A8 + i
* 0x4;
871 case OMAP_DSS_VIDEO3
:
872 return 0x0470 + i
* 0x4;
874 return 0x02E0 + i
* 0x4;
881 static inline u16
DISPC_PRELOAD_OFFSET(enum omap_plane plane
)
886 case OMAP_DSS_VIDEO1
:
888 case OMAP_DSS_VIDEO2
:
890 case OMAP_DSS_VIDEO3
:
This page took 0.049431 seconds and 5 git commands to generate.