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
40
/* DISPC overlay registers */
41
#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
43
#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
45
#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
46
DISPC_BA0_UV_OFFSET(n))
47
#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
48
DISPC_BA1_UV_OFFSET(n))
49
#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
51
#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
53
#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
55
#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
56
DISPC_ATTR2_OFFSET(n))
57
#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
58
DISPC_FIFO_THRESH_OFFSET(n))
59
#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
60
DISPC_FIFO_SIZE_STATUS_OFFSET(n))
61
#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
62
DISPC_ROW_INC_OFFSET(n))
63
#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
64
DISPC_PIX_INC_OFFSET(n))
65
#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
66
DISPC_WINDOW_SKIP_OFFSET(n))
67
#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
68
DISPC_TABLE_BA_OFFSET(n))
69
#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
71
#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
73
#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
74
DISPC_PIC_SIZE_OFFSET(n))
75
#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
76
DISPC_ACCU0_OFFSET(n))
77
#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
78
DISPC_ACCU1_OFFSET(n))
79
#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
80
DISPC_ACCU2_0_OFFSET(n))
81
#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
82
DISPC_ACCU2_1_OFFSET(n))
83
#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
84
DISPC_FIR_COEF_H_OFFSET(n, i))
85
#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
86
DISPC_FIR_COEF_HV_OFFSET(n, i))
87
#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
88
DISPC_FIR_COEF_H2_OFFSET(n, i))
89
#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
90
DISPC_FIR_COEF_HV2_OFFSET(n, i))
91
#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
92
DISPC_CONV_COEF_OFFSET(n, i))
93
#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
94
DISPC_FIR_COEF_V_OFFSET(n, i))
95
#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
96
DISPC_FIR_COEF_V2_OFFSET(n, i))
97
#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
98
DISPC_PRELOAD_OFFSET(n))
100
/* DISPC manager/channel specific registers */
101
static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
104
case OMAP_DSS_CHANNEL_LCD:
106
case OMAP_DSS_CHANNEL_DIGIT:
108
case OMAP_DSS_CHANNEL_LCD2:
115
static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
118
case OMAP_DSS_CHANNEL_LCD:
120
case OMAP_DSS_CHANNEL_DIGIT:
122
case OMAP_DSS_CHANNEL_LCD2:
129
static inline u16 DISPC_TIMING_H(enum omap_channel channel)
132
case OMAP_DSS_CHANNEL_LCD:
134
case OMAP_DSS_CHANNEL_DIGIT:
136
case OMAP_DSS_CHANNEL_LCD2:
143
static inline u16 DISPC_TIMING_V(enum omap_channel channel)
146
case OMAP_DSS_CHANNEL_LCD:
148
case OMAP_DSS_CHANNEL_DIGIT:
150
case OMAP_DSS_CHANNEL_LCD2:
157
static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
160
case OMAP_DSS_CHANNEL_LCD:
162
case OMAP_DSS_CHANNEL_DIGIT:
164
case OMAP_DSS_CHANNEL_LCD2:
171
static inline u16 DISPC_DIVISORo(enum omap_channel channel)
174
case OMAP_DSS_CHANNEL_LCD:
176
case OMAP_DSS_CHANNEL_DIGIT:
178
case OMAP_DSS_CHANNEL_LCD2:
185
/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
186
static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
189
case OMAP_DSS_CHANNEL_LCD:
191
case OMAP_DSS_CHANNEL_DIGIT:
193
case OMAP_DSS_CHANNEL_LCD2:
200
static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
203
case OMAP_DSS_CHANNEL_LCD:
205
case OMAP_DSS_CHANNEL_DIGIT:
207
case OMAP_DSS_CHANNEL_LCD2:
214
static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
217
case OMAP_DSS_CHANNEL_LCD:
219
case OMAP_DSS_CHANNEL_DIGIT:
221
case OMAP_DSS_CHANNEL_LCD2:
228
static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
231
case OMAP_DSS_CHANNEL_LCD:
233
case OMAP_DSS_CHANNEL_DIGIT:
235
case OMAP_DSS_CHANNEL_LCD2:
242
static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
245
case OMAP_DSS_CHANNEL_LCD:
247
case OMAP_DSS_CHANNEL_DIGIT:
249
case OMAP_DSS_CHANNEL_LCD2:
256
static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
259
case OMAP_DSS_CHANNEL_LCD:
261
case OMAP_DSS_CHANNEL_DIGIT:
263
case OMAP_DSS_CHANNEL_LCD2:
270
static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
273
case OMAP_DSS_CHANNEL_LCD:
275
case OMAP_DSS_CHANNEL_DIGIT:
277
case OMAP_DSS_CHANNEL_LCD2:
284
/* DISPC overlay register base addresses */
285
static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
290
case OMAP_DSS_VIDEO1:
292
case OMAP_DSS_VIDEO2:
299
/* DISPC overlay register offsets */
300
static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
304
case OMAP_DSS_VIDEO1:
305
case OMAP_DSS_VIDEO2:
312
static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
316
case OMAP_DSS_VIDEO1:
317
case OMAP_DSS_VIDEO2:
324
static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
329
case OMAP_DSS_VIDEO1:
331
case OMAP_DSS_VIDEO2:
338
static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
343
case OMAP_DSS_VIDEO1:
345
case OMAP_DSS_VIDEO2:
352
static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
356
case OMAP_DSS_VIDEO1:
357
case OMAP_DSS_VIDEO2:
364
static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
368
case OMAP_DSS_VIDEO1:
369
case OMAP_DSS_VIDEO2:
376
static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
381
case OMAP_DSS_VIDEO1:
382
case OMAP_DSS_VIDEO2:
389
static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
394
case OMAP_DSS_VIDEO1:
396
case OMAP_DSS_VIDEO2:
403
static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
408
case OMAP_DSS_VIDEO1:
409
case OMAP_DSS_VIDEO2:
416
static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
421
case OMAP_DSS_VIDEO1:
422
case OMAP_DSS_VIDEO2:
429
static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
434
case OMAP_DSS_VIDEO1:
435
case OMAP_DSS_VIDEO2:
442
static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
447
case OMAP_DSS_VIDEO1:
448
case OMAP_DSS_VIDEO2:
455
static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
460
case OMAP_DSS_VIDEO1:
461
case OMAP_DSS_VIDEO2:
468
static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
473
case OMAP_DSS_VIDEO1:
474
case OMAP_DSS_VIDEO2:
481
static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
486
case OMAP_DSS_VIDEO1:
487
case OMAP_DSS_VIDEO2:
494
static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
499
case OMAP_DSS_VIDEO1:
501
case OMAP_DSS_VIDEO2:
508
static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
513
case OMAP_DSS_VIDEO1:
514
case OMAP_DSS_VIDEO2:
522
static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
527
case OMAP_DSS_VIDEO1:
528
case OMAP_DSS_VIDEO2:
535
static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
540
case OMAP_DSS_VIDEO1:
542
case OMAP_DSS_VIDEO2:
549
static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
554
case OMAP_DSS_VIDEO1:
555
case OMAP_DSS_VIDEO2:
562
static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
567
case OMAP_DSS_VIDEO1:
569
case OMAP_DSS_VIDEO2:
576
/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
577
static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
582
case OMAP_DSS_VIDEO1:
583
case OMAP_DSS_VIDEO2:
584
return 0x0034 + i * 0x8;
590
/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
591
static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
596
case OMAP_DSS_VIDEO1:
597
return 0x058C + i * 0x8;
598
case OMAP_DSS_VIDEO2:
599
return 0x0568 + i * 0x8;
605
/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
606
static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
611
case OMAP_DSS_VIDEO1:
612
case OMAP_DSS_VIDEO2:
613
return 0x0038 + i * 0x8;
619
/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
620
static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
625
case OMAP_DSS_VIDEO1:
626
return 0x0590 + i * 8;
627
case OMAP_DSS_VIDEO2:
628
return 0x056C + i * 0x8;
634
/* coef index i = {0, 1, 2, 3, 4,} */
635
static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
640
case OMAP_DSS_VIDEO1:
641
case OMAP_DSS_VIDEO2:
642
return 0x0074 + i * 0x4;
648
/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
649
static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
654
case OMAP_DSS_VIDEO1:
655
return 0x0124 + i * 0x4;
656
case OMAP_DSS_VIDEO2:
657
return 0x00B4 + i * 0x4;
663
/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
664
static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
669
case OMAP_DSS_VIDEO1:
670
return 0x05CC + i * 0x4;
671
case OMAP_DSS_VIDEO2:
672
return 0x05A8 + i * 0x4;
678
static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
683
case OMAP_DSS_VIDEO1:
685
case OMAP_DSS_VIDEO2: