blob: 222363c6e623f794402f68b98d419f5fc0d1f869 [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 Taneja9b372c22011-05-06 11:45:49 +053042
43/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053044#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053045 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053046#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053047 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053048#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
49 DISPC_BA0_UV_OFFSET(n))
50#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
51 DISPC_BA1_UV_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053052#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053053 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053054#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053055 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053056#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053057 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053058#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
59 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053060#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053061 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053062#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053063 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053064#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053065 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053066#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053067 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053068#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053069 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053070#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053071 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053072#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053073 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053074#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
75 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053076#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053077 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053078#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053079 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053080#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053081 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053082#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
83 DISPC_ACCU2_0_OFFSET(n))
84#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
85 DISPC_ACCU2_1_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053086#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053087 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053088#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053089 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053090#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
91 DISPC_FIR_COEF_H2_OFFSET(n, i))
92#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
93 DISPC_FIR_COEF_HV2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053094#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053095 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053096#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053097 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053098#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
99 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530100#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530101 DISPC_PRELOAD_OFFSET(n))
102
Chandrabhanu Mahapatradebd9072011-12-19 14:03:44 +0530103/* DISPC up/downsampling FIR filter coefficient structure */
104struct dispc_coef {
105 s8 hc4_vc22;
106 s8 hc3_vc2;
107 u8 hc2_vc1;
108 s8 hc1_vc0;
109 s8 hc0_vc00;
110};
111
112const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
113
Archit Taneja702d1442011-05-06 11:45:50 +0530114/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530115static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530116{
117 switch (channel) {
118 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530119 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530120 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530121 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530122 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530123 return 0x03AC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530124 case OMAP_DSS_CHANNEL_LCD3:
125 return 0x0814;
Archit Taneja702d1442011-05-06 11:45:50 +0530126 default:
127 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300128 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530129 }
130}
131
Archit Taneja55978cc2011-05-06 11:45:51 +0530132static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530133{
134 switch (channel) {
135 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530136 return 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530137 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530138 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530139 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530140 return 0x03B0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530141 case OMAP_DSS_CHANNEL_LCD3:
142 return 0x0818;
Archit Taneja702d1442011-05-06 11:45:50 +0530143 default:
144 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300145 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530146 }
147}
148
Archit Taneja55978cc2011-05-06 11:45:51 +0530149static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530150{
151 switch (channel) {
152 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530153 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530154 case OMAP_DSS_CHANNEL_DIGIT:
155 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300156 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530157 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530158 return 0x0400;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530159 case OMAP_DSS_CHANNEL_LCD3:
160 return 0x0840;
Archit Taneja702d1442011-05-06 11:45:50 +0530161 default:
162 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300163 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530164 }
165}
166
Archit Taneja55978cc2011-05-06 11:45:51 +0530167static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530168{
169 switch (channel) {
170 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530171 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530172 case OMAP_DSS_CHANNEL_DIGIT:
173 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300174 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530175 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530176 return 0x0404;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530177 case OMAP_DSS_CHANNEL_LCD3:
178 return 0x0844;
Archit Taneja702d1442011-05-06 11:45:50 +0530179 default:
180 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300181 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530182 }
183}
184
Archit Taneja55978cc2011-05-06 11:45:51 +0530185static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530186{
187 switch (channel) {
188 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530189 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530190 case OMAP_DSS_CHANNEL_DIGIT:
191 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300192 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530193 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530194 return 0x0408;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530195 case OMAP_DSS_CHANNEL_LCD3:
196 return 0x083C;
Archit Taneja702d1442011-05-06 11:45:50 +0530197 default:
198 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300199 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530200 }
201}
202
Archit Taneja55978cc2011-05-06 11:45:51 +0530203static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530204{
205 switch (channel) {
206 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530207 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530208 case OMAP_DSS_CHANNEL_DIGIT:
209 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300210 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530211 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530212 return 0x040C;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530213 case OMAP_DSS_CHANNEL_LCD3:
214 return 0x0838;
Archit Taneja702d1442011-05-06 11:45:50 +0530215 default:
216 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300217 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530218 }
219}
220
221/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530222static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530223{
224 switch (channel) {
225 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530226 return 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530227 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530228 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530229 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530230 return 0x03CC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530231 case OMAP_DSS_CHANNEL_LCD3:
232 return 0x0834;
Archit Taneja702d1442011-05-06 11:45:50 +0530233 default:
234 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300235 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530236 }
237}
238
Archit Taneja55978cc2011-05-06 11:45:51 +0530239static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530240{
241 switch (channel) {
242 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530243 return 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530244 case OMAP_DSS_CHANNEL_DIGIT:
245 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300246 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530247 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530248 return 0x03C0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530249 case OMAP_DSS_CHANNEL_LCD3:
250 return 0x0828;
Archit Taneja702d1442011-05-06 11:45:50 +0530251 default:
252 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300253 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530254 }
255}
256
Archit Taneja55978cc2011-05-06 11:45:51 +0530257static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530258{
259 switch (channel) {
260 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530261 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530262 case OMAP_DSS_CHANNEL_DIGIT:
263 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300264 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530265 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530266 return 0x03C4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530267 case OMAP_DSS_CHANNEL_LCD3:
268 return 0x082C;
Archit Taneja702d1442011-05-06 11:45:50 +0530269 default:
270 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300271 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530272 }
273}
274
Archit Taneja55978cc2011-05-06 11:45:51 +0530275static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530276{
277 switch (channel) {
278 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530279 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530280 case OMAP_DSS_CHANNEL_DIGIT:
281 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300282 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530283 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530284 return 0x03C8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530285 case OMAP_DSS_CHANNEL_LCD3:
286 return 0x0830;
Archit Taneja702d1442011-05-06 11:45:50 +0530287 default:
288 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300289 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530290 }
291}
292
Archit Taneja55978cc2011-05-06 11:45:51 +0530293static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530294{
295 switch (channel) {
296 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530297 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530298 case OMAP_DSS_CHANNEL_DIGIT:
299 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300300 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530301 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530302 return 0x03BC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530303 case OMAP_DSS_CHANNEL_LCD3:
304 return 0x0824;
Archit Taneja702d1442011-05-06 11:45:50 +0530305 default:
306 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300307 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530308 }
309}
310
Archit Taneja55978cc2011-05-06 11:45:51 +0530311static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530312{
313 switch (channel) {
314 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530315 return 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530316 case OMAP_DSS_CHANNEL_DIGIT:
317 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300318 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530319 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530320 return 0x03B8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530321 case OMAP_DSS_CHANNEL_LCD3:
322 return 0x0820;
Archit Taneja702d1442011-05-06 11:45:50 +0530323 default:
324 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300325 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530326 }
327}
328
Archit Taneja55978cc2011-05-06 11:45:51 +0530329static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530330{
331 switch (channel) {
332 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530333 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530334 case OMAP_DSS_CHANNEL_DIGIT:
335 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300336 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530337 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530338 return 0x03B4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530339 case OMAP_DSS_CHANNEL_LCD3:
340 return 0x081C;
Archit Taneja702d1442011-05-06 11:45:50 +0530341 default:
342 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300343 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530344 }
345}
346
Archit Taneja9b372c22011-05-06 11:45:49 +0530347/* DISPC overlay register base addresses */
348static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
349{
350 switch (plane) {
351 case OMAP_DSS_GFX:
352 return 0x0080;
353 case OMAP_DSS_VIDEO1:
354 return 0x00BC;
355 case OMAP_DSS_VIDEO2:
356 return 0x014C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530357 case OMAP_DSS_VIDEO3:
358 return 0x0300;
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300359 case OMAP_DSS_WB:
360 return 0x0500;
Archit Taneja9b372c22011-05-06 11:45:49 +0530361 default:
362 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300363 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530364 }
365}
366
367/* DISPC overlay register offsets */
368static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
369{
370 switch (plane) {
371 case OMAP_DSS_GFX:
372 case OMAP_DSS_VIDEO1:
373 case OMAP_DSS_VIDEO2:
374 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530375 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530376 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530377 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530378 default:
379 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300380 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530381 }
382}
383
384static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
385{
386 switch (plane) {
387 case OMAP_DSS_GFX:
388 case OMAP_DSS_VIDEO1:
389 case OMAP_DSS_VIDEO2:
390 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530391 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530392 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530393 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530394 default:
395 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300396 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530397 }
398}
399
Amber Jainab5ca072011-05-19 19:47:53 +0530400static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
401{
402 switch (plane) {
403 case OMAP_DSS_GFX:
404 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300405 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530406 case OMAP_DSS_VIDEO1:
407 return 0x0544;
408 case OMAP_DSS_VIDEO2:
409 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530410 case OMAP_DSS_VIDEO3:
411 return 0x0310;
Archit Taneja7a155be2012-07-16 15:54:24 +0530412 case OMAP_DSS_WB:
413 return 0x0118;
Amber Jainab5ca072011-05-19 19:47:53 +0530414 default:
415 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300416 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530417 }
418}
419
420static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
421{
422 switch (plane) {
423 case OMAP_DSS_GFX:
424 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300425 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530426 case OMAP_DSS_VIDEO1:
427 return 0x0548;
428 case OMAP_DSS_VIDEO2:
429 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530430 case OMAP_DSS_VIDEO3:
431 return 0x0314;
Archit Taneja7a155be2012-07-16 15:54:24 +0530432 case OMAP_DSS_WB:
433 return 0x011C;
Amber Jainab5ca072011-05-19 19:47:53 +0530434 default:
435 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300436 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530437 }
438}
439
Archit Taneja9b372c22011-05-06 11:45:49 +0530440static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
441{
442 switch (plane) {
443 case OMAP_DSS_GFX:
444 case OMAP_DSS_VIDEO1:
445 case OMAP_DSS_VIDEO2:
446 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530447 case OMAP_DSS_VIDEO3:
448 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530449 default:
450 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300451 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530452 }
453}
454
455static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
456{
457 switch (plane) {
458 case OMAP_DSS_GFX:
459 case OMAP_DSS_VIDEO1:
460 case OMAP_DSS_VIDEO2:
461 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530462 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530463 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530464 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530465 default:
466 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300467 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530468 }
469}
470
471static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
472{
473 switch (plane) {
474 case OMAP_DSS_GFX:
475 return 0x0020;
476 case OMAP_DSS_VIDEO1:
477 case OMAP_DSS_VIDEO2:
478 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530479 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530480 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530481 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530482 default:
483 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300484 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530485 }
486}
487
Amber Jainab5ca072011-05-19 19:47:53 +0530488static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
489{
490 switch (plane) {
491 case OMAP_DSS_GFX:
492 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300493 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530494 case OMAP_DSS_VIDEO1:
495 return 0x0568;
496 case OMAP_DSS_VIDEO2:
497 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530498 case OMAP_DSS_VIDEO3:
499 return 0x032C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530500 case OMAP_DSS_WB:
501 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530502 default:
503 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300504 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530505 }
506}
507
Archit Taneja9b372c22011-05-06 11:45:49 +0530508static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
509{
510 switch (plane) {
511 case OMAP_DSS_GFX:
512 return 0x0024;
513 case OMAP_DSS_VIDEO1:
514 case OMAP_DSS_VIDEO2:
515 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530516 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530517 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530518 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530519 default:
520 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300521 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530522 }
523}
524
525static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
526{
527 switch (plane) {
528 case OMAP_DSS_GFX:
529 return 0x0028;
530 case OMAP_DSS_VIDEO1:
531 case OMAP_DSS_VIDEO2:
532 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530533 case OMAP_DSS_VIDEO3:
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300534 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530535 return 0x0088;
Archit Taneja9b372c22011-05-06 11:45:49 +0530536 default:
537 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300538 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530539 }
540}
541
542static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
543{
544 switch (plane) {
545 case OMAP_DSS_GFX:
546 return 0x002C;
547 case OMAP_DSS_VIDEO1:
548 case OMAP_DSS_VIDEO2:
549 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530550 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530551 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530552 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530553 default:
554 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300555 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530556 }
557}
558
559static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
560{
561 switch (plane) {
562 case OMAP_DSS_GFX:
563 return 0x0030;
564 case OMAP_DSS_VIDEO1:
565 case OMAP_DSS_VIDEO2:
566 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530567 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530568 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530569 return 0x0098;
Archit Taneja9b372c22011-05-06 11:45:49 +0530570 default:
571 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300572 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530573 }
574}
575
576static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
577{
578 switch (plane) {
579 case OMAP_DSS_GFX:
580 return 0x0034;
581 case OMAP_DSS_VIDEO1:
582 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530583 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530584 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300585 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530586 default:
587 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300588 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530589 }
590}
591
592static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
593{
594 switch (plane) {
595 case OMAP_DSS_GFX:
596 return 0x0038;
597 case OMAP_DSS_VIDEO1:
598 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530599 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530600 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300601 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530602 default:
603 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300604 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530605 }
606}
607
608static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
609{
610 switch (plane) {
611 case OMAP_DSS_GFX:
612 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300613 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530614 case OMAP_DSS_VIDEO1:
615 case OMAP_DSS_VIDEO2:
616 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530617 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530618 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530619 return 0x0090;
Archit Taneja9b372c22011-05-06 11:45:49 +0530620 default:
621 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300622 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530623 }
624}
625
Amber Jainab5ca072011-05-19 19:47:53 +0530626static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
627{
628 switch (plane) {
629 case OMAP_DSS_GFX:
630 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300631 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530632 case OMAP_DSS_VIDEO1:
633 return 0x0580;
634 case OMAP_DSS_VIDEO2:
635 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530636 case OMAP_DSS_VIDEO3:
637 return 0x0424;
Archit Taneja7a155be2012-07-16 15:54:24 +0530638 case OMAP_DSS_WB:
639 return 0x290;
Amber Jainab5ca072011-05-19 19:47:53 +0530640 default:
641 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300642 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530643 }
644}
645
Archit Taneja9b372c22011-05-06 11:45:49 +0530646static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
647{
648 switch (plane) {
649 case OMAP_DSS_GFX:
650 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300651 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530652 case OMAP_DSS_VIDEO1:
653 case OMAP_DSS_VIDEO2:
654 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530655 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530656 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530657 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530658 default:
659 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300660 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530661 }
662}
663
664
665static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
666{
667 switch (plane) {
668 case OMAP_DSS_GFX:
669 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300670 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530671 case OMAP_DSS_VIDEO1:
672 case OMAP_DSS_VIDEO2:
673 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530674 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530675 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530676 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530677 default:
678 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300679 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530680 }
681}
682
Amber Jainab5ca072011-05-19 19:47:53 +0530683static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
684{
685 switch (plane) {
686 case OMAP_DSS_GFX:
687 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300688 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530689 case OMAP_DSS_VIDEO1:
690 return 0x0584;
691 case OMAP_DSS_VIDEO2:
692 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530693 case OMAP_DSS_VIDEO3:
694 return 0x0428;
Archit Taneja7a155be2012-07-16 15:54:24 +0530695 case OMAP_DSS_WB:
696 return 0x0294;
Amber Jainab5ca072011-05-19 19:47:53 +0530697 default:
698 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300699 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530700 }
701}
702
Archit Taneja9b372c22011-05-06 11:45:49 +0530703static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
704{
705 switch (plane) {
706 case OMAP_DSS_GFX:
707 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300708 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530709 case OMAP_DSS_VIDEO1:
710 case OMAP_DSS_VIDEO2:
711 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530712 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530713 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530714 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530715 default:
716 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300717 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530718 }
719}
720
Amber Jainab5ca072011-05-19 19:47:53 +0530721static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
722{
723 switch (plane) {
724 case OMAP_DSS_GFX:
725 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300726 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530727 case OMAP_DSS_VIDEO1:
728 return 0x0588;
729 case OMAP_DSS_VIDEO2:
730 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530731 case OMAP_DSS_VIDEO3:
732 return 0x042C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530733 case OMAP_DSS_WB:
734 return 0x0298;
Amber Jainab5ca072011-05-19 19:47:53 +0530735 default:
736 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300737 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530738 }
739}
740
Archit Taneja9b372c22011-05-06 11:45:49 +0530741/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
742static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
743{
744 switch (plane) {
745 case OMAP_DSS_GFX:
746 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300747 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530748 case OMAP_DSS_VIDEO1:
749 case OMAP_DSS_VIDEO2:
750 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530751 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530752 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530753 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530754 default:
755 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300756 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530757 }
758}
759
760/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Amber Jainab5ca072011-05-19 19:47:53 +0530761static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
762{
763 switch (plane) {
764 case OMAP_DSS_GFX:
765 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300766 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530767 case OMAP_DSS_VIDEO1:
768 return 0x058C + i * 0x8;
769 case OMAP_DSS_VIDEO2:
770 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530771 case OMAP_DSS_VIDEO3:
772 return 0x0430 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530773 case OMAP_DSS_WB:
774 return 0x02A0 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530775 default:
776 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300777 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530778 }
779}
780
781/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Archit Taneja9b372c22011-05-06 11:45:49 +0530782static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
783{
784 switch (plane) {
785 case OMAP_DSS_GFX:
786 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300787 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530788 case OMAP_DSS_VIDEO1:
789 case OMAP_DSS_VIDEO2:
790 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530791 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530792 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530793 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530794 default:
795 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300796 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530797 }
798}
799
Amber Jainab5ca072011-05-19 19:47:53 +0530800/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
801static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
802{
803 switch (plane) {
804 case OMAP_DSS_GFX:
805 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300806 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530807 case OMAP_DSS_VIDEO1:
808 return 0x0590 + i * 8;
809 case OMAP_DSS_VIDEO2:
810 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530811 case OMAP_DSS_VIDEO3:
812 return 0x0434 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530813 case OMAP_DSS_WB:
814 return 0x02A4 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530815 default:
816 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300817 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530818 }
819}
820
Archit Taneja9b372c22011-05-06 11:45:49 +0530821/* coef index i = {0, 1, 2, 3, 4,} */
822static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
823{
824 switch (plane) {
825 case OMAP_DSS_GFX:
826 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300827 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530828 case OMAP_DSS_VIDEO1:
829 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530830 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530831 case OMAP_DSS_WB:
Archit Taneja9b372c22011-05-06 11:45:49 +0530832 return 0x0074 + i * 0x4;
833 default:
834 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300835 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530836 }
837}
838
839/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
840static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
841{
842 switch (plane) {
843 case OMAP_DSS_GFX:
844 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300845 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530846 case OMAP_DSS_VIDEO1:
847 return 0x0124 + i * 0x4;
848 case OMAP_DSS_VIDEO2:
849 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530850 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530851 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530852 return 0x0050 + i * 0x4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530853 default:
854 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300855 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530856 }
857}
858
Amber Jainab5ca072011-05-19 19:47:53 +0530859/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
860static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
861{
862 switch (plane) {
863 case OMAP_DSS_GFX:
864 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300865 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530866 case OMAP_DSS_VIDEO1:
867 return 0x05CC + i * 0x4;
868 case OMAP_DSS_VIDEO2:
869 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530870 case OMAP_DSS_VIDEO3:
871 return 0x0470 + i * 0x4;
Archit Taneja7a155be2012-07-16 15:54:24 +0530872 case OMAP_DSS_WB:
873 return 0x02E0 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530874 default:
875 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300876 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530877 }
878}
879
Archit Taneja9b372c22011-05-06 11:45:49 +0530880static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
881{
882 switch (plane) {
883 case OMAP_DSS_GFX:
884 return 0x01AC;
885 case OMAP_DSS_VIDEO1:
886 return 0x0174;
887 case OMAP_DSS_VIDEO2:
888 return 0x00E8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530889 case OMAP_DSS_VIDEO3:
890 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530891 default:
892 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300893 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530894 }
895}
896#endif