blob: 003adce532f4e99fce957ecd768ff432e1bf2317 [file] [log] [blame]
Archit Taneja9b372c22011-05-06 11:45:49 +05301/*
2 * linux/drivers/video/omap2/dss/dispc.h
3 *
4 * Copyright (C) 2011 Texas Instruments
5 * Author: Archit Taneja <archit@ti.com>
6 *
7 *
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.
11 *
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
15 * more details.
16 *
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/>.
19 */
20
21#ifndef __OMAP2_DISPC_REG_H
22#define __OMAP2_DISPC_REG_H
23
Archit Taneja702d1442011-05-06 11:45:50 +053024/* DISPC common registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053025#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
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +030039#define DISPC_GLOBAL_BUFFER 0x0800
Chandrabhanu Mahapatrae86d4562012-06-29 10:43:13 +053040#define DISPC_CONTROL3 0x0848
41#define DISPC_CONFIG3 0x084C
Archit Tanejad0df9a22013-03-26 19:15:25 +053042#define DISPC_MSTANDBY_CTRL 0x0858
Tomi Valkeinen29fceee2013-11-14 11:38:25 +020043#define DISPC_GLOBAL_MFLAG_ATTRIBUTE 0x085C
Archit Taneja9b372c22011-05-06 11:45:49 +053044
Jyri Sarhaacc3a232016-06-07 15:09:15 +030045#define DISPC_GAMMA_TABLE0 0x0630
46#define DISPC_GAMMA_TABLE1 0x0634
47#define DISPC_GAMMA_TABLE2 0x0638
48#define DISPC_GAMMA_TABLE3 0x0850
49
Archit Taneja9b372c22011-05-06 11:45:49 +053050/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053051#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053052 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053053#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053054 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053055#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
56 DISPC_BA0_UV_OFFSET(n))
57#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
58 DISPC_BA1_UV_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053059#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053060 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053061#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053062 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053063#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053064 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053065#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
66 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053067#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053068 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053069#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053070 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053071#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053072 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053073#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053074 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053075#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053076 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053077#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053078 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053079#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053080 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053081#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
82 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053083#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053084 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053085#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053086 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053087#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053088 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053089#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
90 DISPC_ACCU2_0_OFFSET(n))
91#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
92 DISPC_ACCU2_1_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053093#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053094 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053095#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053096 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053097#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
98 DISPC_FIR_COEF_H2_OFFSET(n, i))
99#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
100 DISPC_FIR_COEF_HV2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530101#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530102 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530103#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530104 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +0530105#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
106 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530107#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530108 DISPC_PRELOAD_OFFSET(n))
Tomi Valkeinen26450d42014-09-29 20:46:15 +0000109#define DISPC_OVL_MFLAG_THRESHOLD(n) DISPC_MFLAG_THRESHOLD_OFFSET(n)
Archit Taneja9b372c22011-05-06 11:45:49 +0530110
Chandrabhanu Mahapatradebd9072011-12-19 14:03:44 +0530111/* DISPC up/downsampling FIR filter coefficient structure */
112struct dispc_coef {
113 s8 hc4_vc22;
114 s8 hc3_vc2;
115 u8 hc2_vc1;
116 s8 hc1_vc0;
117 s8 hc0_vc00;
118};
119
120const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
121
Archit Taneja702d1442011-05-06 11:45:50 +0530122/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530123static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530124{
125 switch (channel) {
126 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530127 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530128 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530129 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530130 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530131 return 0x03AC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530132 case OMAP_DSS_CHANNEL_LCD3:
133 return 0x0814;
Archit Taneja702d1442011-05-06 11:45:50 +0530134 default:
135 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300136 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530137 }
138}
139
Archit Taneja55978cc2011-05-06 11:45:51 +0530140static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530141{
142 switch (channel) {
143 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530144 return 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530145 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530146 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530147 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530148 return 0x03B0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530149 case OMAP_DSS_CHANNEL_LCD3:
150 return 0x0818;
Archit Taneja702d1442011-05-06 11:45:50 +0530151 default:
152 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300153 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530154 }
155}
156
Archit Taneja55978cc2011-05-06 11:45:51 +0530157static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530158{
159 switch (channel) {
160 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530161 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530162 case OMAP_DSS_CHANNEL_DIGIT:
163 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300164 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530165 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530166 return 0x0400;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530167 case OMAP_DSS_CHANNEL_LCD3:
168 return 0x0840;
Archit Taneja702d1442011-05-06 11:45:50 +0530169 default:
170 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300171 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530172 }
173}
174
Archit Taneja55978cc2011-05-06 11:45:51 +0530175static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530176{
177 switch (channel) {
178 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530179 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530180 case OMAP_DSS_CHANNEL_DIGIT:
181 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300182 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530183 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530184 return 0x0404;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530185 case OMAP_DSS_CHANNEL_LCD3:
186 return 0x0844;
Archit Taneja702d1442011-05-06 11:45:50 +0530187 default:
188 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300189 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530190 }
191}
192
Archit Taneja55978cc2011-05-06 11:45:51 +0530193static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530194{
195 switch (channel) {
196 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530197 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530198 case OMAP_DSS_CHANNEL_DIGIT:
199 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300200 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530201 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530202 return 0x0408;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530203 case OMAP_DSS_CHANNEL_LCD3:
204 return 0x083C;
Archit Taneja702d1442011-05-06 11:45:50 +0530205 default:
206 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300207 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530208 }
209}
210
Archit Taneja55978cc2011-05-06 11:45:51 +0530211static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530212{
213 switch (channel) {
214 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530215 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530216 case OMAP_DSS_CHANNEL_DIGIT:
217 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300218 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530219 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530220 return 0x040C;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530221 case OMAP_DSS_CHANNEL_LCD3:
222 return 0x0838;
Archit Taneja702d1442011-05-06 11:45:50 +0530223 default:
224 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300225 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530226 }
227}
228
229/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530230static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530231{
232 switch (channel) {
233 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530234 return 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530235 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530236 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530237 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530238 return 0x03CC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530239 case OMAP_DSS_CHANNEL_LCD3:
240 return 0x0834;
Archit Taneja702d1442011-05-06 11:45:50 +0530241 default:
242 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300243 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530244 }
245}
246
Archit Taneja55978cc2011-05-06 11:45:51 +0530247static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530248{
249 switch (channel) {
250 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530251 return 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530252 case OMAP_DSS_CHANNEL_DIGIT:
253 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300254 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530255 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530256 return 0x03C0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530257 case OMAP_DSS_CHANNEL_LCD3:
258 return 0x0828;
Archit Taneja702d1442011-05-06 11:45:50 +0530259 default:
260 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300261 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530262 }
263}
264
Archit Taneja55978cc2011-05-06 11:45:51 +0530265static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530266{
267 switch (channel) {
268 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530269 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530270 case OMAP_DSS_CHANNEL_DIGIT:
271 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300272 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530273 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530274 return 0x03C4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530275 case OMAP_DSS_CHANNEL_LCD3:
276 return 0x082C;
Archit Taneja702d1442011-05-06 11:45:50 +0530277 default:
278 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300279 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530280 }
281}
282
Archit Taneja55978cc2011-05-06 11:45:51 +0530283static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530284{
285 switch (channel) {
286 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530287 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530288 case OMAP_DSS_CHANNEL_DIGIT:
289 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300290 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530291 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530292 return 0x03C8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530293 case OMAP_DSS_CHANNEL_LCD3:
294 return 0x0830;
Archit Taneja702d1442011-05-06 11:45:50 +0530295 default:
296 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300297 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530298 }
299}
300
Archit Taneja55978cc2011-05-06 11:45:51 +0530301static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530302{
303 switch (channel) {
304 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530305 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530306 case OMAP_DSS_CHANNEL_DIGIT:
307 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300308 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530309 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530310 return 0x03BC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530311 case OMAP_DSS_CHANNEL_LCD3:
312 return 0x0824;
Archit Taneja702d1442011-05-06 11:45:50 +0530313 default:
314 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300315 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530316 }
317}
318
Archit Taneja55978cc2011-05-06 11:45:51 +0530319static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530320{
321 switch (channel) {
322 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530323 return 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530324 case OMAP_DSS_CHANNEL_DIGIT:
325 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300326 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530327 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530328 return 0x03B8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530329 case OMAP_DSS_CHANNEL_LCD3:
330 return 0x0820;
Archit Taneja702d1442011-05-06 11:45:50 +0530331 default:
332 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300333 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530334 }
335}
336
Archit Taneja55978cc2011-05-06 11:45:51 +0530337static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530338{
339 switch (channel) {
340 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530341 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530342 case OMAP_DSS_CHANNEL_DIGIT:
343 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300344 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530345 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530346 return 0x03B4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530347 case OMAP_DSS_CHANNEL_LCD3:
348 return 0x081C;
Archit Taneja702d1442011-05-06 11:45:50 +0530349 default:
350 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300351 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530352 }
353}
354
Archit Taneja9b372c22011-05-06 11:45:49 +0530355/* DISPC overlay register base addresses */
Jyri Sarha864050c2017-03-24 16:47:52 +0200356static inline u16 DISPC_OVL_BASE(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530357{
358 switch (plane) {
359 case OMAP_DSS_GFX:
360 return 0x0080;
361 case OMAP_DSS_VIDEO1:
362 return 0x00BC;
363 case OMAP_DSS_VIDEO2:
364 return 0x014C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530365 case OMAP_DSS_VIDEO3:
366 return 0x0300;
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300367 case OMAP_DSS_WB:
368 return 0x0500;
Archit Taneja9b372c22011-05-06 11:45:49 +0530369 default:
370 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300371 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530372 }
373}
374
375/* DISPC overlay register offsets */
Jyri Sarha864050c2017-03-24 16:47:52 +0200376static inline u16 DISPC_BA0_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530377{
378 switch (plane) {
379 case OMAP_DSS_GFX:
380 case OMAP_DSS_VIDEO1:
381 case OMAP_DSS_VIDEO2:
382 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530383 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530384 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530385 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530386 default:
387 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300388 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530389 }
390}
391
Jyri Sarha864050c2017-03-24 16:47:52 +0200392static inline u16 DISPC_BA1_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530393{
394 switch (plane) {
395 case OMAP_DSS_GFX:
396 case OMAP_DSS_VIDEO1:
397 case OMAP_DSS_VIDEO2:
398 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530399 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530400 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530401 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530402 default:
403 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300404 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530405 }
406}
407
Jyri Sarha864050c2017-03-24 16:47:52 +0200408static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530409{
410 switch (plane) {
411 case OMAP_DSS_GFX:
412 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300413 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530414 case OMAP_DSS_VIDEO1:
415 return 0x0544;
416 case OMAP_DSS_VIDEO2:
417 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530418 case OMAP_DSS_VIDEO3:
419 return 0x0310;
Archit Taneja7a155be2012-07-16 15:54:24 +0530420 case OMAP_DSS_WB:
421 return 0x0118;
Amber Jainab5ca072011-05-19 19:47:53 +0530422 default:
423 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300424 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530425 }
426}
427
Jyri Sarha864050c2017-03-24 16:47:52 +0200428static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530429{
430 switch (plane) {
431 case OMAP_DSS_GFX:
432 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300433 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530434 case OMAP_DSS_VIDEO1:
435 return 0x0548;
436 case OMAP_DSS_VIDEO2:
437 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530438 case OMAP_DSS_VIDEO3:
439 return 0x0314;
Archit Taneja7a155be2012-07-16 15:54:24 +0530440 case OMAP_DSS_WB:
441 return 0x011C;
Amber Jainab5ca072011-05-19 19:47:53 +0530442 default:
443 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300444 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530445 }
446}
447
Jyri Sarha864050c2017-03-24 16:47:52 +0200448static inline u16 DISPC_POS_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530449{
450 switch (plane) {
451 case OMAP_DSS_GFX:
452 case OMAP_DSS_VIDEO1:
453 case OMAP_DSS_VIDEO2:
454 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530455 case OMAP_DSS_VIDEO3:
456 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530457 default:
458 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300459 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530460 }
461}
462
Jyri Sarha864050c2017-03-24 16:47:52 +0200463static inline u16 DISPC_SIZE_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530464{
465 switch (plane) {
466 case OMAP_DSS_GFX:
467 case OMAP_DSS_VIDEO1:
468 case OMAP_DSS_VIDEO2:
469 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530470 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530471 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530472 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530473 default:
474 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300475 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530476 }
477}
478
Jyri Sarha864050c2017-03-24 16:47:52 +0200479static inline u16 DISPC_ATTR_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530480{
481 switch (plane) {
482 case OMAP_DSS_GFX:
483 return 0x0020;
484 case OMAP_DSS_VIDEO1:
485 case OMAP_DSS_VIDEO2:
486 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530487 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530488 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530489 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530490 default:
491 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300492 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530493 }
494}
495
Jyri Sarha864050c2017-03-24 16:47:52 +0200496static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530497{
498 switch (plane) {
499 case OMAP_DSS_GFX:
500 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300501 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530502 case OMAP_DSS_VIDEO1:
503 return 0x0568;
504 case OMAP_DSS_VIDEO2:
505 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530506 case OMAP_DSS_VIDEO3:
507 return 0x032C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530508 case OMAP_DSS_WB:
509 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530510 default:
511 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300512 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530513 }
514}
515
Jyri Sarha864050c2017-03-24 16:47:52 +0200516static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530517{
518 switch (plane) {
519 case OMAP_DSS_GFX:
520 return 0x0024;
521 case OMAP_DSS_VIDEO1:
522 case OMAP_DSS_VIDEO2:
523 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530524 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530525 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530526 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530527 default:
528 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300529 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530530 }
531}
532
Jyri Sarha864050c2017-03-24 16:47:52 +0200533static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530534{
535 switch (plane) {
536 case OMAP_DSS_GFX:
537 return 0x0028;
538 case OMAP_DSS_VIDEO1:
539 case OMAP_DSS_VIDEO2:
540 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530541 case OMAP_DSS_VIDEO3:
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300542 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530543 return 0x0088;
Archit Taneja9b372c22011-05-06 11:45:49 +0530544 default:
545 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300546 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530547 }
548}
549
Jyri Sarha864050c2017-03-24 16:47:52 +0200550static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530551{
552 switch (plane) {
553 case OMAP_DSS_GFX:
554 return 0x002C;
555 case OMAP_DSS_VIDEO1:
556 case OMAP_DSS_VIDEO2:
557 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530558 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530559 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530560 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530561 default:
562 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300563 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530564 }
565}
566
Jyri Sarha864050c2017-03-24 16:47:52 +0200567static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530568{
569 switch (plane) {
570 case OMAP_DSS_GFX:
571 return 0x0030;
572 case OMAP_DSS_VIDEO1:
573 case OMAP_DSS_VIDEO2:
574 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530575 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530576 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530577 return 0x0098;
Archit Taneja9b372c22011-05-06 11:45:49 +0530578 default:
579 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300580 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530581 }
582}
583
Jyri Sarha864050c2017-03-24 16:47:52 +0200584static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530585{
586 switch (plane) {
587 case OMAP_DSS_GFX:
588 return 0x0034;
589 case OMAP_DSS_VIDEO1:
590 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530591 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530592 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300593 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530594 default:
595 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300596 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530597 }
598}
599
Jyri Sarha864050c2017-03-24 16:47:52 +0200600static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530601{
602 switch (plane) {
603 case OMAP_DSS_GFX:
604 return 0x0038;
605 case OMAP_DSS_VIDEO1:
606 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530607 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530608 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300609 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530610 default:
611 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300612 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530613 }
614}
615
Jyri Sarha864050c2017-03-24 16:47:52 +0200616static inline u16 DISPC_FIR_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530617{
618 switch (plane) {
619 case OMAP_DSS_GFX:
620 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300621 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530622 case OMAP_DSS_VIDEO1:
623 case OMAP_DSS_VIDEO2:
624 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530625 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530626 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530627 return 0x0090;
Archit Taneja9b372c22011-05-06 11:45:49 +0530628 default:
629 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300630 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530631 }
632}
633
Jyri Sarha864050c2017-03-24 16:47:52 +0200634static inline u16 DISPC_FIR2_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530635{
636 switch (plane) {
637 case OMAP_DSS_GFX:
638 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300639 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530640 case OMAP_DSS_VIDEO1:
641 return 0x0580;
642 case OMAP_DSS_VIDEO2:
643 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530644 case OMAP_DSS_VIDEO3:
645 return 0x0424;
Archit Taneja7a155be2012-07-16 15:54:24 +0530646 case OMAP_DSS_WB:
647 return 0x290;
Amber Jainab5ca072011-05-19 19:47:53 +0530648 default:
649 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300650 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530651 }
652}
653
Jyri Sarha864050c2017-03-24 16:47:52 +0200654static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530655{
656 switch (plane) {
657 case OMAP_DSS_GFX:
658 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300659 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530660 case OMAP_DSS_VIDEO1:
661 case OMAP_DSS_VIDEO2:
662 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530663 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530664 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530665 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530666 default:
667 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300668 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530669 }
670}
671
672
Jyri Sarha864050c2017-03-24 16:47:52 +0200673static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530674{
675 switch (plane) {
676 case OMAP_DSS_GFX:
677 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300678 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530679 case OMAP_DSS_VIDEO1:
680 case OMAP_DSS_VIDEO2:
681 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530682 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530683 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530684 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530685 default:
686 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300687 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530688 }
689}
690
Jyri Sarha864050c2017-03-24 16:47:52 +0200691static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530692{
693 switch (plane) {
694 case OMAP_DSS_GFX:
695 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300696 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530697 case OMAP_DSS_VIDEO1:
698 return 0x0584;
699 case OMAP_DSS_VIDEO2:
700 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530701 case OMAP_DSS_VIDEO3:
702 return 0x0428;
Archit Taneja7a155be2012-07-16 15:54:24 +0530703 case OMAP_DSS_WB:
704 return 0x0294;
Amber Jainab5ca072011-05-19 19:47:53 +0530705 default:
706 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300707 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530708 }
709}
710
Jyri Sarha864050c2017-03-24 16:47:52 +0200711static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530712{
713 switch (plane) {
714 case OMAP_DSS_GFX:
715 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300716 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530717 case OMAP_DSS_VIDEO1:
718 case OMAP_DSS_VIDEO2:
719 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530720 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530721 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530722 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530723 default:
724 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300725 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530726 }
727}
728
Jyri Sarha864050c2017-03-24 16:47:52 +0200729static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane_id plane)
Amber Jainab5ca072011-05-19 19:47:53 +0530730{
731 switch (plane) {
732 case OMAP_DSS_GFX:
733 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300734 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530735 case OMAP_DSS_VIDEO1:
736 return 0x0588;
737 case OMAP_DSS_VIDEO2:
738 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530739 case OMAP_DSS_VIDEO3:
740 return 0x042C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530741 case OMAP_DSS_WB:
742 return 0x0298;
Amber Jainab5ca072011-05-19 19:47:53 +0530743 default:
744 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300745 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530746 }
747}
748
Archit Taneja9b372c22011-05-06 11:45:49 +0530749/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200750static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530751{
752 switch (plane) {
753 case OMAP_DSS_GFX:
754 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300755 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530756 case OMAP_DSS_VIDEO1:
757 case OMAP_DSS_VIDEO2:
758 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530759 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530760 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530761 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530762 default:
763 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300764 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530765 }
766}
767
768/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200769static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane_id plane, u16 i)
Amber Jainab5ca072011-05-19 19:47:53 +0530770{
771 switch (plane) {
772 case OMAP_DSS_GFX:
773 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300774 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530775 case OMAP_DSS_VIDEO1:
776 return 0x058C + i * 0x8;
777 case OMAP_DSS_VIDEO2:
778 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530779 case OMAP_DSS_VIDEO3:
780 return 0x0430 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530781 case OMAP_DSS_WB:
782 return 0x02A0 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530783 default:
784 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300785 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530786 }
787}
788
789/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200790static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530791{
792 switch (plane) {
793 case OMAP_DSS_GFX:
794 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300795 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530796 case OMAP_DSS_VIDEO1:
797 case OMAP_DSS_VIDEO2:
798 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530799 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530800 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530801 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530802 default:
803 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300804 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530805 }
806}
807
Amber Jainab5ca072011-05-19 19:47:53 +0530808/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200809static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane_id plane, u16 i)
Amber Jainab5ca072011-05-19 19:47:53 +0530810{
811 switch (plane) {
812 case OMAP_DSS_GFX:
813 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300814 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530815 case OMAP_DSS_VIDEO1:
816 return 0x0590 + i * 8;
817 case OMAP_DSS_VIDEO2:
818 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530819 case OMAP_DSS_VIDEO3:
820 return 0x0434 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530821 case OMAP_DSS_WB:
822 return 0x02A4 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530823 default:
824 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300825 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530826 }
827}
828
Archit Taneja9b372c22011-05-06 11:45:49 +0530829/* coef index i = {0, 1, 2, 3, 4,} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200830static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530831{
832 switch (plane) {
833 case OMAP_DSS_GFX:
834 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300835 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530836 case OMAP_DSS_VIDEO1:
837 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530838 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530839 case OMAP_DSS_WB:
Archit Taneja9b372c22011-05-06 11:45:49 +0530840 return 0x0074 + i * 0x4;
841 default:
842 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300843 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530844 }
845}
846
847/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200848static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane_id plane, u16 i)
Archit Taneja9b372c22011-05-06 11:45:49 +0530849{
850 switch (plane) {
851 case OMAP_DSS_GFX:
852 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300853 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530854 case OMAP_DSS_VIDEO1:
855 return 0x0124 + i * 0x4;
856 case OMAP_DSS_VIDEO2:
857 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530858 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530859 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530860 return 0x0050 + i * 0x4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530861 default:
862 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300863 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530864 }
865}
866
Amber Jainab5ca072011-05-19 19:47:53 +0530867/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Jyri Sarha864050c2017-03-24 16:47:52 +0200868static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane_id plane, u16 i)
Amber Jainab5ca072011-05-19 19:47:53 +0530869{
870 switch (plane) {
871 case OMAP_DSS_GFX:
872 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300873 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530874 case OMAP_DSS_VIDEO1:
875 return 0x05CC + i * 0x4;
876 case OMAP_DSS_VIDEO2:
877 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530878 case OMAP_DSS_VIDEO3:
879 return 0x0470 + i * 0x4;
Archit Taneja7a155be2012-07-16 15:54:24 +0530880 case OMAP_DSS_WB:
881 return 0x02E0 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530882 default:
883 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300884 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530885 }
886}
887
Jyri Sarha864050c2017-03-24 16:47:52 +0200888static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane_id plane)
Archit Taneja9b372c22011-05-06 11:45:49 +0530889{
890 switch (plane) {
891 case OMAP_DSS_GFX:
892 return 0x01AC;
893 case OMAP_DSS_VIDEO1:
894 return 0x0174;
895 case OMAP_DSS_VIDEO2:
896 return 0x00E8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530897 case OMAP_DSS_VIDEO3:
898 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530899 default:
900 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300901 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530902 }
903}
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200904
Jyri Sarha864050c2017-03-24 16:47:52 +0200905static inline u16 DISPC_MFLAG_THRESHOLD_OFFSET(enum omap_plane_id plane)
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200906{
907 switch (plane) {
908 case OMAP_DSS_GFX:
909 return 0x0860;
910 case OMAP_DSS_VIDEO1:
911 return 0x0864;
912 case OMAP_DSS_VIDEO2:
913 return 0x0868;
914 case OMAP_DSS_VIDEO3:
915 return 0x086c;
Tomi Valkeinenc2c06332015-11-04 17:10:41 +0200916 case OMAP_DSS_WB:
917 return 0x0870;
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200918 default:
919 BUG();
920 return 0;
921 }
922}
Archit Taneja9b372c22011-05-06 11:45:49 +0530923#endif