blob: e901dd1e4365e197e1fe359fab9da066c1a00751 [file] [log] [blame]
Archit Taneja9b372c22011-05-06 11:45:49 +05301/*
Andrew F. Davisbb5cdf82017-12-05 14:29:31 -06002 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
Archit Taneja9b372c22011-05-06 11:45:49 +05303 * Author: Archit Taneja <archit@ti.com>
4 *
Archit Taneja9b372c22011-05-06 11:45:49 +05305 * 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
Archit Taneja702d1442011-05-06 11:45:50 +053021/* DISPC common registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053022#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
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +030036#define DISPC_GLOBAL_BUFFER 0x0800
Chandrabhanu Mahapatrae86d4562012-06-29 10:43:13 +053037#define DISPC_CONTROL3 0x0848
38#define DISPC_CONFIG3 0x084C
Archit Tanejad0df9a22013-03-26 19:15:25 +053039#define DISPC_MSTANDBY_CTRL 0x0858
Tomi Valkeinen29fceee2013-11-14 11:38:25 +020040#define DISPC_GLOBAL_MFLAG_ATTRIBUTE 0x085C
Archit Taneja9b372c22011-05-06 11:45:49 +053041
Jyri Sarhaacc3a232016-06-07 15:09:15 +030042#define DISPC_GAMMA_TABLE0 0x0630
43#define DISPC_GAMMA_TABLE1 0x0634
44#define DISPC_GAMMA_TABLE2 0x0638
45#define DISPC_GAMMA_TABLE3 0x0850
46
Archit Taneja9b372c22011-05-06 11:45:49 +053047/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053048#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053049 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053050#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053051 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053052#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))
Archit Taneja55978cc2011-05-06 11:45:51 +053056#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053057 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053058#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053059 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053060#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053061 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053062#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
63 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053064#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053065 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053066#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053067 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053068#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053069 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053070#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053071 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053072#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053073 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053074#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053075 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053076#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053077 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053078#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
79 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053080#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053081 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053082#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053083 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053084#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053085 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053086#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))
Archit Taneja55978cc2011-05-06 11:45:51 +053090#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053091 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053092#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053093 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053094#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))
Archit Taneja55978cc2011-05-06 11:45:51 +053098#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053099 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530100#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530101 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +0530102#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
103 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530104#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530105 DISPC_PRELOAD_OFFSET(n))
Tomi Valkeinen26450d42014-09-29 20:46:15 +0000106#define DISPC_OVL_MFLAG_THRESHOLD(n) DISPC_MFLAG_THRESHOLD_OFFSET(n)
Archit Taneja9b372c22011-05-06 11:45:49 +0530107
Chandrabhanu Mahapatradebd9072011-12-19 14:03:44 +0530108/* DISPC up/downsampling FIR filter coefficient structure */
109struct dispc_coef {
110 s8 hc4_vc22;
111 s8 hc3_vc2;
112 u8 hc2_vc1;
113 s8 hc1_vc0;
114 s8 hc0_vc00;
115};
116
117const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
118
Archit Taneja702d1442011-05-06 11:45:50 +0530119/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530120static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530121{
122 switch (channel) {
123 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530124 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530125 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530126 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530127 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530128 return 0x03AC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530129 case OMAP_DSS_CHANNEL_LCD3:
130 return 0x0814;
Archit Taneja702d1442011-05-06 11:45:50 +0530131 default:
132 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300133 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530134 }
135}
136
Archit Taneja55978cc2011-05-06 11:45:51 +0530137static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530138{
139 switch (channel) {
140 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530141 return 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530142 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530143 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530144 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530145 return 0x03B0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530146 case OMAP_DSS_CHANNEL_LCD3:
147 return 0x0818;
Archit Taneja702d1442011-05-06 11:45:50 +0530148 default:
149 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300150 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530151 }
152}
153
Archit Taneja55978cc2011-05-06 11:45:51 +0530154static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530155{
156 switch (channel) {
157 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530158 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530159 case OMAP_DSS_CHANNEL_DIGIT:
160 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300161 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530162 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530163 return 0x0400;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530164 case OMAP_DSS_CHANNEL_LCD3:
165 return 0x0840;
Archit Taneja702d1442011-05-06 11:45:50 +0530166 default:
167 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300168 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530169 }
170}
171
Archit Taneja55978cc2011-05-06 11:45:51 +0530172static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530173{
174 switch (channel) {
175 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530176 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530177 case OMAP_DSS_CHANNEL_DIGIT:
178 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300179 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530180 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530181 return 0x0404;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530182 case OMAP_DSS_CHANNEL_LCD3:
183 return 0x0844;
Archit Taneja702d1442011-05-06 11:45:50 +0530184 default:
185 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300186 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530187 }
188}
189
Archit Taneja55978cc2011-05-06 11:45:51 +0530190static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530191{
192 switch (channel) {
193 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530194 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530195 case OMAP_DSS_CHANNEL_DIGIT:
196 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300197 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530198 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530199 return 0x0408;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530200 case OMAP_DSS_CHANNEL_LCD3:
201 return 0x083C;
Archit Taneja702d1442011-05-06 11:45:50 +0530202 default:
203 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300204 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530205 }
206}
207
Archit Taneja55978cc2011-05-06 11:45:51 +0530208static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530209{
210 switch (channel) {
211 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530212 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530213 case OMAP_DSS_CHANNEL_DIGIT:
214 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300215 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530216 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530217 return 0x040C;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530218 case OMAP_DSS_CHANNEL_LCD3:
219 return 0x0838;
Archit Taneja702d1442011-05-06 11:45:50 +0530220 default:
221 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300222 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530223 }
224}
225
226/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530227static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530228{
229 switch (channel) {
230 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530231 return 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530232 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530233 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530234 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530235 return 0x03CC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530236 case OMAP_DSS_CHANNEL_LCD3:
237 return 0x0834;
Archit Taneja702d1442011-05-06 11:45:50 +0530238 default:
239 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300240 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530241 }
242}
243
Archit Taneja55978cc2011-05-06 11:45:51 +0530244static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530245{
246 switch (channel) {
247 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530248 return 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530249 case OMAP_DSS_CHANNEL_DIGIT:
250 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300251 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530252 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530253 return 0x03C0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530254 case OMAP_DSS_CHANNEL_LCD3:
255 return 0x0828;
Archit Taneja702d1442011-05-06 11:45:50 +0530256 default:
257 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300258 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530259 }
260}
261
Archit Taneja55978cc2011-05-06 11:45:51 +0530262static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530263{
264 switch (channel) {
265 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530266 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530267 case OMAP_DSS_CHANNEL_DIGIT:
268 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300269 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530270 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530271 return 0x03C4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530272 case OMAP_DSS_CHANNEL_LCD3:
273 return 0x082C;
Archit Taneja702d1442011-05-06 11:45:50 +0530274 default:
275 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300276 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530277 }
278}
279
Archit Taneja55978cc2011-05-06 11:45:51 +0530280static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530281{
282 switch (channel) {
283 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530284 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530285 case OMAP_DSS_CHANNEL_DIGIT:
286 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300287 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530288 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530289 return 0x03C8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530290 case OMAP_DSS_CHANNEL_LCD3:
291 return 0x0830;
Archit Taneja702d1442011-05-06 11:45:50 +0530292 default:
293 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300294 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530295 }
296}
297
Archit Taneja55978cc2011-05-06 11:45:51 +0530298static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530299{
300 switch (channel) {
301 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530302 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530303 case OMAP_DSS_CHANNEL_DIGIT:
304 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300305 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530306 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530307 return 0x03BC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530308 case OMAP_DSS_CHANNEL_LCD3:
309 return 0x0824;
Archit Taneja702d1442011-05-06 11:45:50 +0530310 default:
311 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300312 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530313 }
314}
315
Archit Taneja55978cc2011-05-06 11:45:51 +0530316static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530317{
318 switch (channel) {
319 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530320 return 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530321 case OMAP_DSS_CHANNEL_DIGIT:
322 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300323 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530324 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530325 return 0x03B8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530326 case OMAP_DSS_CHANNEL_LCD3:
327 return 0x0820;
Archit Taneja702d1442011-05-06 11:45:50 +0530328 default:
329 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300330 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530331 }
332}
333
Archit Taneja55978cc2011-05-06 11:45:51 +0530334static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530335{
336 switch (channel) {
337 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530338 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530339 case OMAP_DSS_CHANNEL_DIGIT:
340 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300341 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530342 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530343 return 0x03B4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530344 case OMAP_DSS_CHANNEL_LCD3:
345 return 0x081C;
Archit Taneja702d1442011-05-06 11:45:50 +0530346 default:
347 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300348 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530349 }
350}
351
Archit Taneja9b372c22011-05-06 11:45:49 +0530352/* DISPC overlay register base addresses */
Jyri Sarha864050c72017-03-24 16:47:52 +0200353static inline u16 DISPC_OVL_BASE(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530354{
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;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530362 case OMAP_DSS_VIDEO3:
363 return 0x0300;
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300364 case OMAP_DSS_WB:
365 return 0x0500;
Archit Taneja9b372c22011-05-06 11:45:49 +0530366 default:
367 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300368 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530369 }
370}
371
372/* DISPC overlay register offsets */
Jyri Sarha864050c72017-03-24 16:47:52 +0200373static inline u16 DISPC_BA0_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530374{
375 switch (plane) {
376 case OMAP_DSS_GFX:
377 case OMAP_DSS_VIDEO1:
378 case OMAP_DSS_VIDEO2:
379 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530380 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530381 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530382 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530383 default:
384 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300385 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530386 }
387}
388
Jyri Sarha864050c72017-03-24 16:47:52 +0200389static inline u16 DISPC_BA1_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530390{
391 switch (plane) {
392 case OMAP_DSS_GFX:
393 case OMAP_DSS_VIDEO1:
394 case OMAP_DSS_VIDEO2:
395 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530396 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530397 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530398 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530399 default:
400 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300401 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530402 }
403}
404
Jyri Sarha864050c72017-03-24 16:47:52 +0200405static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530406{
407 switch (plane) {
408 case OMAP_DSS_GFX:
409 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300410 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530411 case OMAP_DSS_VIDEO1:
412 return 0x0544;
413 case OMAP_DSS_VIDEO2:
414 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530415 case OMAP_DSS_VIDEO3:
416 return 0x0310;
Archit Taneja7a155be2012-07-16 15:54:24 +0530417 case OMAP_DSS_WB:
418 return 0x0118;
Amber Jainab5ca072011-05-19 19:47:53 +0530419 default:
420 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300421 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530422 }
423}
424
Jyri Sarha864050c72017-03-24 16:47:52 +0200425static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530426{
427 switch (plane) {
428 case OMAP_DSS_GFX:
429 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300430 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530431 case OMAP_DSS_VIDEO1:
432 return 0x0548;
433 case OMAP_DSS_VIDEO2:
434 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530435 case OMAP_DSS_VIDEO3:
436 return 0x0314;
Archit Taneja7a155be2012-07-16 15:54:24 +0530437 case OMAP_DSS_WB:
438 return 0x011C;
Amber Jainab5ca072011-05-19 19:47:53 +0530439 default:
440 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300441 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530442 }
443}
444
Jyri Sarha864050c72017-03-24 16:47:52 +0200445static inline u16 DISPC_POS_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530446{
447 switch (plane) {
448 case OMAP_DSS_GFX:
449 case OMAP_DSS_VIDEO1:
450 case OMAP_DSS_VIDEO2:
451 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530452 case OMAP_DSS_VIDEO3:
453 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530454 default:
455 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300456 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530457 }
458}
459
Jyri Sarha864050c72017-03-24 16:47:52 +0200460static inline u16 DISPC_SIZE_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530461{
462 switch (plane) {
463 case OMAP_DSS_GFX:
464 case OMAP_DSS_VIDEO1:
465 case OMAP_DSS_VIDEO2:
466 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530467 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530468 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530469 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530470 default:
471 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300472 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530473 }
474}
475
Jyri Sarha864050c72017-03-24 16:47:52 +0200476static inline u16 DISPC_ATTR_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530477{
478 switch (plane) {
479 case OMAP_DSS_GFX:
480 return 0x0020;
481 case OMAP_DSS_VIDEO1:
482 case OMAP_DSS_VIDEO2:
483 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530484 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530485 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530486 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530487 default:
488 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300489 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530490 }
491}
492
Jyri Sarha864050c72017-03-24 16:47:52 +0200493static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530494{
495 switch (plane) {
496 case OMAP_DSS_GFX:
497 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300498 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530499 case OMAP_DSS_VIDEO1:
500 return 0x0568;
501 case OMAP_DSS_VIDEO2:
502 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530503 case OMAP_DSS_VIDEO3:
504 return 0x032C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530505 case OMAP_DSS_WB:
506 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530507 default:
508 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300509 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530510 }
511}
512
Jyri Sarha864050c72017-03-24 16:47:52 +0200513static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530514{
515 switch (plane) {
516 case OMAP_DSS_GFX:
517 return 0x0024;
518 case OMAP_DSS_VIDEO1:
519 case OMAP_DSS_VIDEO2:
520 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530521 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530522 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530523 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530524 default:
525 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300526 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530527 }
528}
529
Jyri Sarha864050c72017-03-24 16:47:52 +0200530static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530531{
532 switch (plane) {
533 case OMAP_DSS_GFX:
534 return 0x0028;
535 case OMAP_DSS_VIDEO1:
536 case OMAP_DSS_VIDEO2:
537 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530538 case OMAP_DSS_VIDEO3:
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300539 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530540 return 0x0088;
Archit Taneja9b372c22011-05-06 11:45:49 +0530541 default:
542 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300543 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530544 }
545}
546
Jyri Sarha864050c72017-03-24 16:47:52 +0200547static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530548{
549 switch (plane) {
550 case OMAP_DSS_GFX:
551 return 0x002C;
552 case OMAP_DSS_VIDEO1:
553 case OMAP_DSS_VIDEO2:
554 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530555 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530556 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530557 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530558 default:
559 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300560 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530561 }
562}
563
Jyri Sarha864050c72017-03-24 16:47:52 +0200564static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530565{
566 switch (plane) {
567 case OMAP_DSS_GFX:
568 return 0x0030;
569 case OMAP_DSS_VIDEO1:
570 case OMAP_DSS_VIDEO2:
571 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530572 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530573 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530574 return 0x0098;
Archit Taneja9b372c22011-05-06 11:45:49 +0530575 default:
576 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300577 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530578 }
579}
580
Jyri Sarha864050c72017-03-24 16:47:52 +0200581static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530582{
583 switch (plane) {
584 case OMAP_DSS_GFX:
585 return 0x0034;
586 case OMAP_DSS_VIDEO1:
587 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530588 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530589 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300590 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530591 default:
592 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300593 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530594 }
595}
596
Jyri Sarha864050c72017-03-24 16:47:52 +0200597static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530598{
599 switch (plane) {
600 case OMAP_DSS_GFX:
601 return 0x0038;
602 case OMAP_DSS_VIDEO1:
603 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530604 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530605 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300606 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530607 default:
608 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300609 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530610 }
611}
612
Jyri Sarha864050c72017-03-24 16:47:52 +0200613static inline u16 DISPC_FIR_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530614{
615 switch (plane) {
616 case OMAP_DSS_GFX:
617 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300618 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530619 case OMAP_DSS_VIDEO1:
620 case OMAP_DSS_VIDEO2:
621 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530622 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530623 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530624 return 0x0090;
Archit Taneja9b372c22011-05-06 11:45:49 +0530625 default:
626 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300627 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530628 }
629}
630
Jyri Sarha864050c72017-03-24 16:47:52 +0200631static inline u16 DISPC_FIR2_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530632{
633 switch (plane) {
634 case OMAP_DSS_GFX:
635 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300636 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530637 case OMAP_DSS_VIDEO1:
638 return 0x0580;
639 case OMAP_DSS_VIDEO2:
640 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530641 case OMAP_DSS_VIDEO3:
642 return 0x0424;
Archit Taneja7a155be2012-07-16 15:54:24 +0530643 case OMAP_DSS_WB:
644 return 0x290;
Amber Jainab5ca072011-05-19 19:47:53 +0530645 default:
646 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300647 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530648 }
649}
650
Jyri Sarha864050c72017-03-24 16:47:52 +0200651static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530652{
653 switch (plane) {
654 case OMAP_DSS_GFX:
655 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300656 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530657 case OMAP_DSS_VIDEO1:
658 case OMAP_DSS_VIDEO2:
659 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530660 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530661 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530662 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530663 default:
664 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300665 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530666 }
667}
668
669
Jyri Sarha864050c72017-03-24 16:47:52 +0200670static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530671{
672 switch (plane) {
673 case OMAP_DSS_GFX:
674 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300675 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530676 case OMAP_DSS_VIDEO1:
677 case OMAP_DSS_VIDEO2:
678 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530679 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530680 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530681 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530682 default:
683 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300684 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530685 }
686}
687
Jyri Sarha864050c72017-03-24 16:47:52 +0200688static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530689{
690 switch (plane) {
691 case OMAP_DSS_GFX:
692 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300693 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530694 case OMAP_DSS_VIDEO1:
695 return 0x0584;
696 case OMAP_DSS_VIDEO2:
697 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530698 case OMAP_DSS_VIDEO3:
699 return 0x0428;
Archit Taneja7a155be2012-07-16 15:54:24 +0530700 case OMAP_DSS_WB:
701 return 0x0294;
Amber Jainab5ca072011-05-19 19:47:53 +0530702 default:
703 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300704 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530705 }
706}
707
Jyri Sarha864050c72017-03-24 16:47:52 +0200708static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530709{
710 switch (plane) {
711 case OMAP_DSS_GFX:
712 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300713 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530714 case OMAP_DSS_VIDEO1:
715 case OMAP_DSS_VIDEO2:
716 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530717 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530718 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530719 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530720 default:
721 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300722 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530723 }
724}
725
Jyri Sarha864050c72017-03-24 16:47:52 +0200726static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530727{
728 switch (plane) {
729 case OMAP_DSS_GFX:
730 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300731 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530732 case OMAP_DSS_VIDEO1:
733 return 0x0588;
734 case OMAP_DSS_VIDEO2:
735 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530736 case OMAP_DSS_VIDEO3:
737 return 0x042C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530738 case OMAP_DSS_WB:
739 return 0x0298;
Amber Jainab5ca072011-05-19 19:47:53 +0530740 default:
741 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300742 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530743 }
744}
745
Archit Taneja9b372c22011-05-06 11:45:49 +0530746/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200747static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530748{
749 switch (plane) {
750 case OMAP_DSS_GFX:
751 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300752 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530753 case OMAP_DSS_VIDEO1:
754 case OMAP_DSS_VIDEO2:
755 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530756 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530757 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530758 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530759 default:
760 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300761 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530762 }
763}
764
765/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200766static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane_id plane, u16 i)
Amber Jainab5ca072011-05-19 19:47:53 +0530767{
768 switch (plane) {
769 case OMAP_DSS_GFX:
770 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300771 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530772 case OMAP_DSS_VIDEO1:
773 return 0x058C + i * 0x8;
774 case OMAP_DSS_VIDEO2:
775 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530776 case OMAP_DSS_VIDEO3:
777 return 0x0430 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530778 case OMAP_DSS_WB:
779 return 0x02A0 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530780 default:
781 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300782 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530783 }
784}
785
786/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200787static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530788{
789 switch (plane) {
790 case OMAP_DSS_GFX:
791 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300792 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530793 case OMAP_DSS_VIDEO1:
794 case OMAP_DSS_VIDEO2:
795 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530796 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530797 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530798 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530799 default:
800 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300801 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530802 }
803}
804
Amber Jainab5ca072011-05-19 19:47:53 +0530805/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200806static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane_id plane, u16 i)
Amber Jainab5ca072011-05-19 19:47:53 +0530807{
808 switch (plane) {
809 case OMAP_DSS_GFX:
810 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300811 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530812 case OMAP_DSS_VIDEO1:
813 return 0x0590 + i * 8;
814 case OMAP_DSS_VIDEO2:
815 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530816 case OMAP_DSS_VIDEO3:
817 return 0x0434 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530818 case OMAP_DSS_WB:
819 return 0x02A4 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530820 default:
821 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300822 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530823 }
824}
825
Archit Taneja9b372c22011-05-06 11:45:49 +0530826/* coef index i = {0, 1, 2, 3, 4,} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200827static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530828{
829 switch (plane) {
830 case OMAP_DSS_GFX:
831 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300832 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530833 case OMAP_DSS_VIDEO1:
834 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530835 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530836 case OMAP_DSS_WB:
Archit Taneja9b372c22011-05-06 11:45:49 +0530837 return 0x0074 + i * 0x4;
838 default:
839 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300840 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530841 }
842}
843
844/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200845static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530846{
847 switch (plane) {
848 case OMAP_DSS_GFX:
849 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300850 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530851 case OMAP_DSS_VIDEO1:
852 return 0x0124 + i * 0x4;
853 case OMAP_DSS_VIDEO2:
854 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530855 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530856 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530857 return 0x0050 + i * 0x4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530858 default:
859 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300860 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530861 }
862}
863
Amber Jainab5ca072011-05-19 19:47:53 +0530864/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c72017-03-24 16:47:52 +0200865static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane_id plane, u16 i)
Amber Jainab5ca072011-05-19 19:47:53 +0530866{
867 switch (plane) {
868 case OMAP_DSS_GFX:
869 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300870 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530871 case OMAP_DSS_VIDEO1:
872 return 0x05CC + i * 0x4;
873 case OMAP_DSS_VIDEO2:
874 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530875 case OMAP_DSS_VIDEO3:
876 return 0x0470 + i * 0x4;
Archit Taneja7a155be2012-07-16 15:54:24 +0530877 case OMAP_DSS_WB:
878 return 0x02E0 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530879 default:
880 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300881 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530882 }
883}
884
Jyri Sarha864050c72017-03-24 16:47:52 +0200885static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530886{
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;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530894 case OMAP_DSS_VIDEO3:
895 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530896 default:
897 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300898 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530899 }
900}
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200901
Jyri Sarha864050c72017-03-24 16:47:52 +0200902static inline u16 DISPC_MFLAG_THRESHOLD_OFFSET(enum omap_plane_id plane)
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200903{
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;
Tomi Valkeinenc2c06332015-11-04 17:10:41 +0200913 case OMAP_DSS_WB:
914 return 0x0870;
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200915 default:
916 BUG();
917 return 0;
918 }
919}
Archit Taneja9b372c22011-05-06 11:45:49 +0530920#endif