blob: 92d8a9be86fc640a5efae0541dd410166a03550f [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
Chandrabhanu Mahapatrae86d4562012-06-29 10:43:13 +053039#define DISPC_CONTROL3 0x0848
40#define DISPC_CONFIG3 0x084C
Archit Taneja9b372c22011-05-06 11:45:49 +053041
42/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053043#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053044 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053045#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053046 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053047#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
48 DISPC_BA0_UV_OFFSET(n))
49#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
50 DISPC_BA1_UV_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053051#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053052 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053053#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053054 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053055#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053056 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053057#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
58 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053059#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053060 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053061#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053062 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053063#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053064 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053065#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053066 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053067#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053068 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053069#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053070 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053071#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053072 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053073#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
74 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053075#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053076 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053077#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053078 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053079#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053080 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053081#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
82 DISPC_ACCU2_0_OFFSET(n))
83#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
84 DISPC_ACCU2_1_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053085#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053086 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053087#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053088 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053089#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
90 DISPC_FIR_COEF_H2_OFFSET(n, i))
91#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
92 DISPC_FIR_COEF_HV2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053093#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053094 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053095#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053096 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053097#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
98 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053099#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530100 DISPC_PRELOAD_OFFSET(n))
101
Chandrabhanu Mahapatradebd9072011-12-19 14:03:44 +0530102/* DISPC up/downsampling FIR filter coefficient structure */
103struct dispc_coef {
104 s8 hc4_vc22;
105 s8 hc3_vc2;
106 u8 hc2_vc1;
107 s8 hc1_vc0;
108 s8 hc0_vc00;
109};
110
111const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
112
Archit Taneja702d1442011-05-06 11:45:50 +0530113/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530114static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530115{
116 switch (channel) {
117 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530118 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530119 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530120 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530121 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530122 return 0x03AC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530123 case OMAP_DSS_CHANNEL_LCD3:
124 return 0x0814;
Archit Taneja702d1442011-05-06 11:45:50 +0530125 default:
126 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300127 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530128 }
129}
130
Archit Taneja55978cc2011-05-06 11:45:51 +0530131static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530132{
133 switch (channel) {
134 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530135 return 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530136 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530137 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530138 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530139 return 0x03B0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530140 case OMAP_DSS_CHANNEL_LCD3:
141 return 0x0818;
Archit Taneja702d1442011-05-06 11:45:50 +0530142 default:
143 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300144 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530145 }
146}
147
Archit Taneja55978cc2011-05-06 11:45:51 +0530148static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530149{
150 switch (channel) {
151 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530152 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530153 case OMAP_DSS_CHANNEL_DIGIT:
154 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300155 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530156 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530157 return 0x0400;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530158 case OMAP_DSS_CHANNEL_LCD3:
159 return 0x0840;
Archit Taneja702d1442011-05-06 11:45:50 +0530160 default:
161 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300162 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530163 }
164}
165
Archit Taneja55978cc2011-05-06 11:45:51 +0530166static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530167{
168 switch (channel) {
169 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530170 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530171 case OMAP_DSS_CHANNEL_DIGIT:
172 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300173 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530174 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530175 return 0x0404;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530176 case OMAP_DSS_CHANNEL_LCD3:
177 return 0x0844;
Archit Taneja702d1442011-05-06 11:45:50 +0530178 default:
179 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300180 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530181 }
182}
183
Archit Taneja55978cc2011-05-06 11:45:51 +0530184static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530185{
186 switch (channel) {
187 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530188 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530189 case OMAP_DSS_CHANNEL_DIGIT:
190 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300191 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530192 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530193 return 0x0408;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530194 case OMAP_DSS_CHANNEL_LCD3:
195 return 0x083C;
Archit Taneja702d1442011-05-06 11:45:50 +0530196 default:
197 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300198 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530199 }
200}
201
Archit Taneja55978cc2011-05-06 11:45:51 +0530202static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530203{
204 switch (channel) {
205 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530206 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530207 case OMAP_DSS_CHANNEL_DIGIT:
208 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300209 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530210 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530211 return 0x040C;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530212 case OMAP_DSS_CHANNEL_LCD3:
213 return 0x0838;
Archit Taneja702d1442011-05-06 11:45:50 +0530214 default:
215 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300216 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530217 }
218}
219
220/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530221static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530222{
223 switch (channel) {
224 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530225 return 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530226 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530227 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530228 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530229 return 0x03CC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530230 case OMAP_DSS_CHANNEL_LCD3:
231 return 0x0834;
Archit Taneja702d1442011-05-06 11:45:50 +0530232 default:
233 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300234 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530235 }
236}
237
Archit Taneja55978cc2011-05-06 11:45:51 +0530238static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530239{
240 switch (channel) {
241 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530242 return 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530243 case OMAP_DSS_CHANNEL_DIGIT:
244 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300245 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530246 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530247 return 0x03C0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530248 case OMAP_DSS_CHANNEL_LCD3:
249 return 0x0828;
Archit Taneja702d1442011-05-06 11:45:50 +0530250 default:
251 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300252 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530253 }
254}
255
Archit Taneja55978cc2011-05-06 11:45:51 +0530256static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530257{
258 switch (channel) {
259 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530260 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530261 case OMAP_DSS_CHANNEL_DIGIT:
262 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300263 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530264 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530265 return 0x03C4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530266 case OMAP_DSS_CHANNEL_LCD3:
267 return 0x082C;
Archit Taneja702d1442011-05-06 11:45:50 +0530268 default:
269 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300270 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530271 }
272}
273
Archit Taneja55978cc2011-05-06 11:45:51 +0530274static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530275{
276 switch (channel) {
277 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530278 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530279 case OMAP_DSS_CHANNEL_DIGIT:
280 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300281 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530282 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530283 return 0x03C8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530284 case OMAP_DSS_CHANNEL_LCD3:
285 return 0x0830;
Archit Taneja702d1442011-05-06 11:45:50 +0530286 default:
287 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300288 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530289 }
290}
291
Archit Taneja55978cc2011-05-06 11:45:51 +0530292static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530293{
294 switch (channel) {
295 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530296 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530297 case OMAP_DSS_CHANNEL_DIGIT:
298 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300299 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530300 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530301 return 0x03BC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530302 case OMAP_DSS_CHANNEL_LCD3:
303 return 0x0824;
Archit Taneja702d1442011-05-06 11:45:50 +0530304 default:
305 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300306 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530307 }
308}
309
Archit Taneja55978cc2011-05-06 11:45:51 +0530310static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530311{
312 switch (channel) {
313 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530314 return 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530315 case OMAP_DSS_CHANNEL_DIGIT:
316 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300317 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530318 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530319 return 0x03B8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530320 case OMAP_DSS_CHANNEL_LCD3:
321 return 0x0820;
Archit Taneja702d1442011-05-06 11:45:50 +0530322 default:
323 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300324 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530325 }
326}
327
Archit Taneja55978cc2011-05-06 11:45:51 +0530328static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530329{
330 switch (channel) {
331 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530332 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530333 case OMAP_DSS_CHANNEL_DIGIT:
334 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300335 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530336 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530337 return 0x03B4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530338 case OMAP_DSS_CHANNEL_LCD3:
339 return 0x081C;
Archit Taneja702d1442011-05-06 11:45:50 +0530340 default:
341 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300342 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530343 }
344}
345
Archit Taneja9b372c22011-05-06 11:45:49 +0530346/* DISPC overlay register base addresses */
347static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
348{
349 switch (plane) {
350 case OMAP_DSS_GFX:
351 return 0x0080;
352 case OMAP_DSS_VIDEO1:
353 return 0x00BC;
354 case OMAP_DSS_VIDEO2:
355 return 0x014C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530356 case OMAP_DSS_VIDEO3:
357 return 0x0300;
Archit Taneja9b372c22011-05-06 11:45:49 +0530358 default:
359 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300360 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530361 }
362}
363
364/* DISPC overlay register offsets */
365static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
366{
367 switch (plane) {
368 case OMAP_DSS_GFX:
369 case OMAP_DSS_VIDEO1:
370 case OMAP_DSS_VIDEO2:
371 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530372 case OMAP_DSS_VIDEO3:
373 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530374 default:
375 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300376 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530377 }
378}
379
380static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
381{
382 switch (plane) {
383 case OMAP_DSS_GFX:
384 case OMAP_DSS_VIDEO1:
385 case OMAP_DSS_VIDEO2:
386 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530387 case OMAP_DSS_VIDEO3:
388 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530389 default:
390 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300391 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530392 }
393}
394
Amber Jainab5ca072011-05-19 19:47:53 +0530395static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
396{
397 switch (plane) {
398 case OMAP_DSS_GFX:
399 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300400 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530401 case OMAP_DSS_VIDEO1:
402 return 0x0544;
403 case OMAP_DSS_VIDEO2:
404 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530405 case OMAP_DSS_VIDEO3:
406 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530407 default:
408 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300409 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530410 }
411}
412
413static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
414{
415 switch (plane) {
416 case OMAP_DSS_GFX:
417 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300418 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530419 case OMAP_DSS_VIDEO1:
420 return 0x0548;
421 case OMAP_DSS_VIDEO2:
422 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530423 case OMAP_DSS_VIDEO3:
424 return 0x0314;
Amber Jainab5ca072011-05-19 19:47:53 +0530425 default:
426 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300427 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530428 }
429}
430
Archit Taneja9b372c22011-05-06 11:45:49 +0530431static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
432{
433 switch (plane) {
434 case OMAP_DSS_GFX:
435 case OMAP_DSS_VIDEO1:
436 case OMAP_DSS_VIDEO2:
437 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530438 case OMAP_DSS_VIDEO3:
439 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530440 default:
441 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300442 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530443 }
444}
445
446static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
447{
448 switch (plane) {
449 case OMAP_DSS_GFX:
450 case OMAP_DSS_VIDEO1:
451 case OMAP_DSS_VIDEO2:
452 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530453 case OMAP_DSS_VIDEO3:
454 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530455 default:
456 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300457 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530458 }
459}
460
461static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
462{
463 switch (plane) {
464 case OMAP_DSS_GFX:
465 return 0x0020;
466 case OMAP_DSS_VIDEO1:
467 case OMAP_DSS_VIDEO2:
468 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530469 case OMAP_DSS_VIDEO3:
470 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530471 default:
472 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300473 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530474 }
475}
476
Amber Jainab5ca072011-05-19 19:47:53 +0530477static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
478{
479 switch (plane) {
480 case OMAP_DSS_GFX:
481 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300482 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530483 case OMAP_DSS_VIDEO1:
484 return 0x0568;
485 case OMAP_DSS_VIDEO2:
486 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530487 case OMAP_DSS_VIDEO3:
488 return 0x032C;
Amber Jainab5ca072011-05-19 19:47:53 +0530489 default:
490 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300491 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530492 }
493}
494
Archit Taneja9b372c22011-05-06 11:45:49 +0530495static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
496{
497 switch (plane) {
498 case OMAP_DSS_GFX:
499 return 0x0024;
500 case OMAP_DSS_VIDEO1:
501 case OMAP_DSS_VIDEO2:
502 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530503 case OMAP_DSS_VIDEO3:
504 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530505 default:
506 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300507 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530508 }
509}
510
511static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
512{
513 switch (plane) {
514 case OMAP_DSS_GFX:
515 return 0x0028;
516 case OMAP_DSS_VIDEO1:
517 case OMAP_DSS_VIDEO2:
518 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530519 case OMAP_DSS_VIDEO3:
520 return 0x0088;
Archit Taneja9b372c22011-05-06 11:45:49 +0530521 default:
522 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300523 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530524 }
525}
526
527static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
528{
529 switch (plane) {
530 case OMAP_DSS_GFX:
531 return 0x002C;
532 case OMAP_DSS_VIDEO1:
533 case OMAP_DSS_VIDEO2:
534 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530535 case OMAP_DSS_VIDEO3:
536 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530537 default:
538 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300539 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530540 }
541}
542
543static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
544{
545 switch (plane) {
546 case OMAP_DSS_GFX:
547 return 0x0030;
548 case OMAP_DSS_VIDEO1:
549 case OMAP_DSS_VIDEO2:
550 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530551 case OMAP_DSS_VIDEO3:
552 return 0x0098;
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_WINDOW_SKIP_OFFSET(enum omap_plane plane)
560{
561 switch (plane) {
562 case OMAP_DSS_GFX:
563 return 0x0034;
564 case OMAP_DSS_VIDEO1:
565 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530566 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530567 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300568 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530569 default:
570 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300571 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530572 }
573}
574
575static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
576{
577 switch (plane) {
578 case OMAP_DSS_GFX:
579 return 0x0038;
580 case OMAP_DSS_VIDEO1:
581 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530582 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530583 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300584 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530585 default:
586 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300587 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530588 }
589}
590
591static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
592{
593 switch (plane) {
594 case OMAP_DSS_GFX:
595 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300596 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530597 case OMAP_DSS_VIDEO1:
598 case OMAP_DSS_VIDEO2:
599 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530600 case OMAP_DSS_VIDEO3:
601 return 0x0090;
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
Amber Jainab5ca072011-05-19 19:47:53 +0530608static inline u16 DISPC_FIR2_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;
Amber Jainab5ca072011-05-19 19:47:53 +0530614 case OMAP_DSS_VIDEO1:
615 return 0x0580;
616 case OMAP_DSS_VIDEO2:
617 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530618 case OMAP_DSS_VIDEO3:
619 return 0x0424;
Amber Jainab5ca072011-05-19 19:47:53 +0530620 default:
621 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300622 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530623 }
624}
625
Archit Taneja9b372c22011-05-06 11:45:49 +0530626static inline u16 DISPC_PIC_SIZE_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;
Archit Taneja9b372c22011-05-06 11:45:49 +0530632 case OMAP_DSS_VIDEO1:
633 case OMAP_DSS_VIDEO2:
634 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530635 case OMAP_DSS_VIDEO3:
636 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530637 default:
638 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300639 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530640 }
641}
642
643
644static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
645{
646 switch (plane) {
647 case OMAP_DSS_GFX:
648 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300649 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530650 case OMAP_DSS_VIDEO1:
651 case OMAP_DSS_VIDEO2:
652 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530653 case OMAP_DSS_VIDEO3:
654 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530655 default:
656 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300657 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530658 }
659}
660
Amber Jainab5ca072011-05-19 19:47:53 +0530661static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
662{
663 switch (plane) {
664 case OMAP_DSS_GFX:
665 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300666 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530667 case OMAP_DSS_VIDEO1:
668 return 0x0584;
669 case OMAP_DSS_VIDEO2:
670 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530671 case OMAP_DSS_VIDEO3:
672 return 0x0428;
Amber Jainab5ca072011-05-19 19:47:53 +0530673 default:
674 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300675 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530676 }
677}
678
Archit Taneja9b372c22011-05-06 11:45:49 +0530679static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
680{
681 switch (plane) {
682 case OMAP_DSS_GFX:
683 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300684 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530685 case OMAP_DSS_VIDEO1:
686 case OMAP_DSS_VIDEO2:
687 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530688 case OMAP_DSS_VIDEO3:
689 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530690 default:
691 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300692 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530693 }
694}
695
Amber Jainab5ca072011-05-19 19:47:53 +0530696static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
697{
698 switch (plane) {
699 case OMAP_DSS_GFX:
700 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300701 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530702 case OMAP_DSS_VIDEO1:
703 return 0x0588;
704 case OMAP_DSS_VIDEO2:
705 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530706 case OMAP_DSS_VIDEO3:
707 return 0x042C;
Amber Jainab5ca072011-05-19 19:47:53 +0530708 default:
709 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300710 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530711 }
712}
713
Archit Taneja9b372c22011-05-06 11:45:49 +0530714/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
715static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
716{
717 switch (plane) {
718 case OMAP_DSS_GFX:
719 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300720 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530721 case OMAP_DSS_VIDEO1:
722 case OMAP_DSS_VIDEO2:
723 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530724 case OMAP_DSS_VIDEO3:
725 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530726 default:
727 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300728 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530729 }
730}
731
732/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Amber Jainab5ca072011-05-19 19:47:53 +0530733static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
734{
735 switch (plane) {
736 case OMAP_DSS_GFX:
737 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300738 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530739 case OMAP_DSS_VIDEO1:
740 return 0x058C + i * 0x8;
741 case OMAP_DSS_VIDEO2:
742 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530743 case OMAP_DSS_VIDEO3:
744 return 0x0430 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530745 default:
746 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300747 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530748 }
749}
750
751/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Archit Taneja9b372c22011-05-06 11:45:49 +0530752static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
753{
754 switch (plane) {
755 case OMAP_DSS_GFX:
756 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300757 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530758 case OMAP_DSS_VIDEO1:
759 case OMAP_DSS_VIDEO2:
760 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530761 case OMAP_DSS_VIDEO3:
762 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530763 default:
764 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300765 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530766 }
767}
768
Amber Jainab5ca072011-05-19 19:47:53 +0530769/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
770static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
771{
772 switch (plane) {
773 case OMAP_DSS_GFX:
774 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300775 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530776 case OMAP_DSS_VIDEO1:
777 return 0x0590 + i * 8;
778 case OMAP_DSS_VIDEO2:
779 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530780 case OMAP_DSS_VIDEO3:
781 return 0x0434 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530782 default:
783 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300784 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530785 }
786}
787
Archit Taneja9b372c22011-05-06 11:45:49 +0530788/* coef index i = {0, 1, 2, 3, 4,} */
789static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
790{
791 switch (plane) {
792 case OMAP_DSS_GFX:
793 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300794 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530795 case OMAP_DSS_VIDEO1:
796 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530797 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530798 return 0x0074 + i * 0x4;
799 default:
800 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300801 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530802 }
803}
804
805/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
806static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
807{
808 switch (plane) {
809 case OMAP_DSS_GFX:
810 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300811 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530812 case OMAP_DSS_VIDEO1:
813 return 0x0124 + i * 0x4;
814 case OMAP_DSS_VIDEO2:
815 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530816 case OMAP_DSS_VIDEO3:
817 return 0x0050 + i * 0x4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530818 default:
819 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300820 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530821 }
822}
823
Amber Jainab5ca072011-05-19 19:47:53 +0530824/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
825static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
826{
827 switch (plane) {
828 case OMAP_DSS_GFX:
829 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300830 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530831 case OMAP_DSS_VIDEO1:
832 return 0x05CC + i * 0x4;
833 case OMAP_DSS_VIDEO2:
834 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530835 case OMAP_DSS_VIDEO3:
836 return 0x0470 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530837 default:
838 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300839 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530840 }
841}
842
Archit Taneja9b372c22011-05-06 11:45:49 +0530843static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
844{
845 switch (plane) {
846 case OMAP_DSS_GFX:
847 return 0x01AC;
848 case OMAP_DSS_VIDEO1:
849 return 0x0174;
850 case OMAP_DSS_VIDEO2:
851 return 0x00E8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530852 case OMAP_DSS_VIDEO3:
853 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530854 default:
855 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300856 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530857 }
858}
859#endif