blob: de4863d21ab78b7683d490628ef9bc5a7f1f335b [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
Archit Taneja9b372c22011-05-06 11:45:49 +053043
44/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053045#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053046 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053047#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053048 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053049#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
50 DISPC_BA0_UV_OFFSET(n))
51#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
52 DISPC_BA1_UV_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053053#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053054 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053055#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053056 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053057#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053058 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053059#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
60 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053061#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053062 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053063#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053064 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053065#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053066 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053067#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053068 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053069#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053070 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053071#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053072 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053073#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053074 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053075#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
76 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053077#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053078 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053079#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053080 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053081#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053082 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053083#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
84 DISPC_ACCU2_0_OFFSET(n))
85#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
86 DISPC_ACCU2_1_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053087#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053088 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053089#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053090 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053091#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
92 DISPC_FIR_COEF_H2_OFFSET(n, i))
93#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
94 DISPC_FIR_COEF_HV2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053095#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053096 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053097#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053098 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053099#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
100 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530101#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530102 DISPC_PRELOAD_OFFSET(n))
103
Chandrabhanu Mahapatradebd9072011-12-19 14:03:44 +0530104/* DISPC up/downsampling FIR filter coefficient structure */
105struct dispc_coef {
106 s8 hc4_vc22;
107 s8 hc3_vc2;
108 u8 hc2_vc1;
109 s8 hc1_vc0;
110 s8 hc0_vc00;
111};
112
113const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
114
Archit Taneja702d1442011-05-06 11:45:50 +0530115/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530116static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530117{
118 switch (channel) {
119 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530120 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530121 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530122 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530123 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530124 return 0x03AC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530125 case OMAP_DSS_CHANNEL_LCD3:
126 return 0x0814;
Archit Taneja702d1442011-05-06 11:45:50 +0530127 default:
128 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300129 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530130 }
131}
132
Archit Taneja55978cc2011-05-06 11:45:51 +0530133static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530134{
135 switch (channel) {
136 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530137 return 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530138 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530139 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530140 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530141 return 0x03B0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530142 case OMAP_DSS_CHANNEL_LCD3:
143 return 0x0818;
Archit Taneja702d1442011-05-06 11:45:50 +0530144 default:
145 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300146 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530147 }
148}
149
Archit Taneja55978cc2011-05-06 11:45:51 +0530150static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530151{
152 switch (channel) {
153 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530154 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530155 case OMAP_DSS_CHANNEL_DIGIT:
156 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300157 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530158 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530159 return 0x0400;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530160 case OMAP_DSS_CHANNEL_LCD3:
161 return 0x0840;
Archit Taneja702d1442011-05-06 11:45:50 +0530162 default:
163 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300164 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530165 }
166}
167
Archit Taneja55978cc2011-05-06 11:45:51 +0530168static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530169{
170 switch (channel) {
171 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530172 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530173 case OMAP_DSS_CHANNEL_DIGIT:
174 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300175 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530176 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530177 return 0x0404;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530178 case OMAP_DSS_CHANNEL_LCD3:
179 return 0x0844;
Archit Taneja702d1442011-05-06 11:45:50 +0530180 default:
181 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300182 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530183 }
184}
185
Archit Taneja55978cc2011-05-06 11:45:51 +0530186static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530187{
188 switch (channel) {
189 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530190 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530191 case OMAP_DSS_CHANNEL_DIGIT:
192 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300193 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530194 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530195 return 0x0408;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530196 case OMAP_DSS_CHANNEL_LCD3:
197 return 0x083C;
Archit Taneja702d1442011-05-06 11:45:50 +0530198 default:
199 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300200 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530201 }
202}
203
Archit Taneja55978cc2011-05-06 11:45:51 +0530204static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530205{
206 switch (channel) {
207 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530208 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530209 case OMAP_DSS_CHANNEL_DIGIT:
210 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300211 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530212 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530213 return 0x040C;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530214 case OMAP_DSS_CHANNEL_LCD3:
215 return 0x0838;
Archit Taneja702d1442011-05-06 11:45:50 +0530216 default:
217 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300218 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530219 }
220}
221
222/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530223static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530224{
225 switch (channel) {
226 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530227 return 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530228 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530229 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530230 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530231 return 0x03CC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530232 case OMAP_DSS_CHANNEL_LCD3:
233 return 0x0834;
Archit Taneja702d1442011-05-06 11:45:50 +0530234 default:
235 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300236 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530237 }
238}
239
Archit Taneja55978cc2011-05-06 11:45:51 +0530240static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530241{
242 switch (channel) {
243 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530244 return 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530245 case OMAP_DSS_CHANNEL_DIGIT:
246 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300247 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530248 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530249 return 0x03C0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530250 case OMAP_DSS_CHANNEL_LCD3:
251 return 0x0828;
Archit Taneja702d1442011-05-06 11:45:50 +0530252 default:
253 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300254 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530255 }
256}
257
Archit Taneja55978cc2011-05-06 11:45:51 +0530258static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530259{
260 switch (channel) {
261 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530262 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530263 case OMAP_DSS_CHANNEL_DIGIT:
264 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300265 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530266 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530267 return 0x03C4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530268 case OMAP_DSS_CHANNEL_LCD3:
269 return 0x082C;
Archit Taneja702d1442011-05-06 11:45:50 +0530270 default:
271 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300272 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530273 }
274}
275
Archit Taneja55978cc2011-05-06 11:45:51 +0530276static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530277{
278 switch (channel) {
279 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530280 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530281 case OMAP_DSS_CHANNEL_DIGIT:
282 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300283 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530284 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530285 return 0x03C8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530286 case OMAP_DSS_CHANNEL_LCD3:
287 return 0x0830;
Archit Taneja702d1442011-05-06 11:45:50 +0530288 default:
289 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300290 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530291 }
292}
293
Archit Taneja55978cc2011-05-06 11:45:51 +0530294static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530295{
296 switch (channel) {
297 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530298 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530299 case OMAP_DSS_CHANNEL_DIGIT:
300 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300301 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530302 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530303 return 0x03BC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530304 case OMAP_DSS_CHANNEL_LCD3:
305 return 0x0824;
Archit Taneja702d1442011-05-06 11:45:50 +0530306 default:
307 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300308 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530309 }
310}
311
Archit Taneja55978cc2011-05-06 11:45:51 +0530312static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530313{
314 switch (channel) {
315 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530316 return 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530317 case OMAP_DSS_CHANNEL_DIGIT:
318 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300319 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530320 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530321 return 0x03B8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530322 case OMAP_DSS_CHANNEL_LCD3:
323 return 0x0820;
Archit Taneja702d1442011-05-06 11:45:50 +0530324 default:
325 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300326 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530327 }
328}
329
Archit Taneja55978cc2011-05-06 11:45:51 +0530330static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530331{
332 switch (channel) {
333 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530334 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530335 case OMAP_DSS_CHANNEL_DIGIT:
336 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300337 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530338 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530339 return 0x03B4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530340 case OMAP_DSS_CHANNEL_LCD3:
341 return 0x081C;
Archit Taneja702d1442011-05-06 11:45:50 +0530342 default:
343 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300344 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530345 }
346}
347
Archit Taneja9b372c22011-05-06 11:45:49 +0530348/* DISPC overlay register base addresses */
349static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
350{
351 switch (plane) {
352 case OMAP_DSS_GFX:
353 return 0x0080;
354 case OMAP_DSS_VIDEO1:
355 return 0x00BC;
356 case OMAP_DSS_VIDEO2:
357 return 0x014C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530358 case OMAP_DSS_VIDEO3:
359 return 0x0300;
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300360 case OMAP_DSS_WB:
361 return 0x0500;
Archit Taneja9b372c22011-05-06 11:45:49 +0530362 default:
363 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300364 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530365 }
366}
367
368/* DISPC overlay register offsets */
369static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
370{
371 switch (plane) {
372 case OMAP_DSS_GFX:
373 case OMAP_DSS_VIDEO1:
374 case OMAP_DSS_VIDEO2:
375 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530376 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530377 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530378 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530379 default:
380 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300381 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530382 }
383}
384
385static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
386{
387 switch (plane) {
388 case OMAP_DSS_GFX:
389 case OMAP_DSS_VIDEO1:
390 case OMAP_DSS_VIDEO2:
391 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530392 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530393 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530394 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530395 default:
396 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300397 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530398 }
399}
400
Amber Jainab5ca072011-05-19 19:47:53 +0530401static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
402{
403 switch (plane) {
404 case OMAP_DSS_GFX:
405 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300406 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530407 case OMAP_DSS_VIDEO1:
408 return 0x0544;
409 case OMAP_DSS_VIDEO2:
410 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530411 case OMAP_DSS_VIDEO3:
412 return 0x0310;
Archit Taneja7a155be2012-07-16 15:54:24 +0530413 case OMAP_DSS_WB:
414 return 0x0118;
Amber Jainab5ca072011-05-19 19:47:53 +0530415 default:
416 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300417 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530418 }
419}
420
421static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
422{
423 switch (plane) {
424 case OMAP_DSS_GFX:
425 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300426 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530427 case OMAP_DSS_VIDEO1:
428 return 0x0548;
429 case OMAP_DSS_VIDEO2:
430 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530431 case OMAP_DSS_VIDEO3:
432 return 0x0314;
Archit Taneja7a155be2012-07-16 15:54:24 +0530433 case OMAP_DSS_WB:
434 return 0x011C;
Amber Jainab5ca072011-05-19 19:47:53 +0530435 default:
436 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300437 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530438 }
439}
440
Archit Taneja9b372c22011-05-06 11:45:49 +0530441static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
442{
443 switch (plane) {
444 case OMAP_DSS_GFX:
445 case OMAP_DSS_VIDEO1:
446 case OMAP_DSS_VIDEO2:
447 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530448 case OMAP_DSS_VIDEO3:
449 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530450 default:
451 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300452 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530453 }
454}
455
456static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
457{
458 switch (plane) {
459 case OMAP_DSS_GFX:
460 case OMAP_DSS_VIDEO1:
461 case OMAP_DSS_VIDEO2:
462 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530463 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530464 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530465 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530466 default:
467 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300468 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530469 }
470}
471
472static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
473{
474 switch (plane) {
475 case OMAP_DSS_GFX:
476 return 0x0020;
477 case OMAP_DSS_VIDEO1:
478 case OMAP_DSS_VIDEO2:
479 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530480 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530481 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530482 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530483 default:
484 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300485 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530486 }
487}
488
Amber Jainab5ca072011-05-19 19:47:53 +0530489static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
490{
491 switch (plane) {
492 case OMAP_DSS_GFX:
493 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300494 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530495 case OMAP_DSS_VIDEO1:
496 return 0x0568;
497 case OMAP_DSS_VIDEO2:
498 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530499 case OMAP_DSS_VIDEO3:
500 return 0x032C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530501 case OMAP_DSS_WB:
502 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530503 default:
504 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300505 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530506 }
507}
508
Archit Taneja9b372c22011-05-06 11:45:49 +0530509static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
510{
511 switch (plane) {
512 case OMAP_DSS_GFX:
513 return 0x0024;
514 case OMAP_DSS_VIDEO1:
515 case OMAP_DSS_VIDEO2:
516 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530517 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530518 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530519 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530520 default:
521 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300522 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530523 }
524}
525
526static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
527{
528 switch (plane) {
529 case OMAP_DSS_GFX:
530 return 0x0028;
531 case OMAP_DSS_VIDEO1:
532 case OMAP_DSS_VIDEO2:
533 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530534 case OMAP_DSS_VIDEO3:
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300535 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530536 return 0x0088;
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_ROW_INC_OFFSET(enum omap_plane plane)
544{
545 switch (plane) {
546 case OMAP_DSS_GFX:
547 return 0x002C;
548 case OMAP_DSS_VIDEO1:
549 case OMAP_DSS_VIDEO2:
550 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530551 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530552 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530553 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530554 default:
555 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300556 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530557 }
558}
559
560static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
561{
562 switch (plane) {
563 case OMAP_DSS_GFX:
564 return 0x0030;
565 case OMAP_DSS_VIDEO1:
566 case OMAP_DSS_VIDEO2:
567 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530568 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530569 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530570 return 0x0098;
Archit Taneja9b372c22011-05-06 11:45:49 +0530571 default:
572 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300573 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530574 }
575}
576
577static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
578{
579 switch (plane) {
580 case OMAP_DSS_GFX:
581 return 0x0034;
582 case OMAP_DSS_VIDEO1:
583 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530584 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530585 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300586 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530587 default:
588 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300589 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530590 }
591}
592
593static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
594{
595 switch (plane) {
596 case OMAP_DSS_GFX:
597 return 0x0038;
598 case OMAP_DSS_VIDEO1:
599 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530600 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530601 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300602 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530603 default:
604 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300605 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530606 }
607}
608
609static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
610{
611 switch (plane) {
612 case OMAP_DSS_GFX:
613 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300614 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530615 case OMAP_DSS_VIDEO1:
616 case OMAP_DSS_VIDEO2:
617 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530618 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530619 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530620 return 0x0090;
Archit Taneja9b372c22011-05-06 11:45:49 +0530621 default:
622 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300623 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530624 }
625}
626
Amber Jainab5ca072011-05-19 19:47:53 +0530627static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
628{
629 switch (plane) {
630 case OMAP_DSS_GFX:
631 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300632 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530633 case OMAP_DSS_VIDEO1:
634 return 0x0580;
635 case OMAP_DSS_VIDEO2:
636 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530637 case OMAP_DSS_VIDEO3:
638 return 0x0424;
Archit Taneja7a155be2012-07-16 15:54:24 +0530639 case OMAP_DSS_WB:
640 return 0x290;
Amber Jainab5ca072011-05-19 19:47:53 +0530641 default:
642 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300643 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530644 }
645}
646
Archit Taneja9b372c22011-05-06 11:45:49 +0530647static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
648{
649 switch (plane) {
650 case OMAP_DSS_GFX:
651 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300652 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530653 case OMAP_DSS_VIDEO1:
654 case OMAP_DSS_VIDEO2:
655 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530656 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530657 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530658 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530659 default:
660 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300661 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530662 }
663}
664
665
666static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
667{
668 switch (plane) {
669 case OMAP_DSS_GFX:
670 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300671 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530672 case OMAP_DSS_VIDEO1:
673 case OMAP_DSS_VIDEO2:
674 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530675 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530676 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530677 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530678 default:
679 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300680 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530681 }
682}
683
Amber Jainab5ca072011-05-19 19:47:53 +0530684static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
685{
686 switch (plane) {
687 case OMAP_DSS_GFX:
688 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300689 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530690 case OMAP_DSS_VIDEO1:
691 return 0x0584;
692 case OMAP_DSS_VIDEO2:
693 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530694 case OMAP_DSS_VIDEO3:
695 return 0x0428;
Archit Taneja7a155be2012-07-16 15:54:24 +0530696 case OMAP_DSS_WB:
697 return 0x0294;
Amber Jainab5ca072011-05-19 19:47:53 +0530698 default:
699 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300700 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530701 }
702}
703
Archit Taneja9b372c22011-05-06 11:45:49 +0530704static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
705{
706 switch (plane) {
707 case OMAP_DSS_GFX:
708 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300709 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530710 case OMAP_DSS_VIDEO1:
711 case OMAP_DSS_VIDEO2:
712 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530713 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530714 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530715 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530716 default:
717 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300718 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530719 }
720}
721
Amber Jainab5ca072011-05-19 19:47:53 +0530722static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
723{
724 switch (plane) {
725 case OMAP_DSS_GFX:
726 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300727 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530728 case OMAP_DSS_VIDEO1:
729 return 0x0588;
730 case OMAP_DSS_VIDEO2:
731 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530732 case OMAP_DSS_VIDEO3:
733 return 0x042C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530734 case OMAP_DSS_WB:
735 return 0x0298;
Amber Jainab5ca072011-05-19 19:47:53 +0530736 default:
737 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300738 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530739 }
740}
741
Archit Taneja9b372c22011-05-06 11:45:49 +0530742/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
743static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
744{
745 switch (plane) {
746 case OMAP_DSS_GFX:
747 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300748 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530749 case OMAP_DSS_VIDEO1:
750 case OMAP_DSS_VIDEO2:
751 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530752 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530753 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530754 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530755 default:
756 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300757 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530758 }
759}
760
761/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Amber Jainab5ca072011-05-19 19:47:53 +0530762static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
763{
764 switch (plane) {
765 case OMAP_DSS_GFX:
766 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300767 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530768 case OMAP_DSS_VIDEO1:
769 return 0x058C + i * 0x8;
770 case OMAP_DSS_VIDEO2:
771 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530772 case OMAP_DSS_VIDEO3:
773 return 0x0430 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530774 case OMAP_DSS_WB:
775 return 0x02A0 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530776 default:
777 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300778 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530779 }
780}
781
782/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Archit Taneja9b372c22011-05-06 11:45:49 +0530783static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
784{
785 switch (plane) {
786 case OMAP_DSS_GFX:
787 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300788 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530789 case OMAP_DSS_VIDEO1:
790 case OMAP_DSS_VIDEO2:
791 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530792 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530793 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530794 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530795 default:
796 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300797 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530798 }
799}
800
Amber Jainab5ca072011-05-19 19:47:53 +0530801/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
802static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
803{
804 switch (plane) {
805 case OMAP_DSS_GFX:
806 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300807 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530808 case OMAP_DSS_VIDEO1:
809 return 0x0590 + i * 8;
810 case OMAP_DSS_VIDEO2:
811 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530812 case OMAP_DSS_VIDEO3:
813 return 0x0434 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530814 case OMAP_DSS_WB:
815 return 0x02A4 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530816 default:
817 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300818 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530819 }
820}
821
Archit Taneja9b372c22011-05-06 11:45:49 +0530822/* coef index i = {0, 1, 2, 3, 4,} */
823static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
824{
825 switch (plane) {
826 case OMAP_DSS_GFX:
827 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300828 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530829 case OMAP_DSS_VIDEO1:
830 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530831 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530832 case OMAP_DSS_WB:
Archit Taneja9b372c22011-05-06 11:45:49 +0530833 return 0x0074 + i * 0x4;
834 default:
835 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300836 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530837 }
838}
839
840/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
841static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
842{
843 switch (plane) {
844 case OMAP_DSS_GFX:
845 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300846 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530847 case OMAP_DSS_VIDEO1:
848 return 0x0124 + i * 0x4;
849 case OMAP_DSS_VIDEO2:
850 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530851 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530852 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530853 return 0x0050 + i * 0x4;
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
Amber Jainab5ca072011-05-19 19:47:53 +0530860/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
861static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
862{
863 switch (plane) {
864 case OMAP_DSS_GFX:
865 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300866 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530867 case OMAP_DSS_VIDEO1:
868 return 0x05CC + i * 0x4;
869 case OMAP_DSS_VIDEO2:
870 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530871 case OMAP_DSS_VIDEO3:
872 return 0x0470 + i * 0x4;
Archit Taneja7a155be2012-07-16 15:54:24 +0530873 case OMAP_DSS_WB:
874 return 0x02E0 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530875 default:
876 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300877 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530878 }
879}
880
Archit Taneja9b372c22011-05-06 11:45:49 +0530881static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
882{
883 switch (plane) {
884 case OMAP_DSS_GFX:
885 return 0x01AC;
886 case OMAP_DSS_VIDEO1:
887 return 0x0174;
888 case OMAP_DSS_VIDEO2:
889 return 0x00E8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530890 case OMAP_DSS_VIDEO3:
891 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530892 default:
893 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300894 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530895 }
896}
897#endif