blob: c06efc38983e6ee74d8562fcfb9debaef545c843 [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
Archit Taneja9b372c22011-05-06 11:45:49 +053039
40/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053041#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053042 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053043#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053044 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053045#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
46 DISPC_BA0_UV_OFFSET(n))
47#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
48 DISPC_BA1_UV_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053049#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053050 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053051#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053052 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053053#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053054 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053055#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
56 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053057#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053058 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053059#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053060 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053061#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053062 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053063#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053064 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053065#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053066 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053067#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053068 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053069#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053070 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053071#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
72 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053073#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053074 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053075#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053076 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053077#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053078 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053079#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
80 DISPC_ACCU2_0_OFFSET(n))
81#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
82 DISPC_ACCU2_1_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053083#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053084 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053085#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053086 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053087#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
88 DISPC_FIR_COEF_H2_OFFSET(n, i))
89#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
90 DISPC_FIR_COEF_HV2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053091#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053092 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053093#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053094 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053095#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
96 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053097#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053098 DISPC_PRELOAD_OFFSET(n))
99
Archit Taneja702d1442011-05-06 11:45:50 +0530100/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530101static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530102{
103 switch (channel) {
104 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530105 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530106 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530107 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530108 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530109 return 0x03AC;
Archit Taneja702d1442011-05-06 11:45:50 +0530110 default:
111 BUG();
112 }
113}
114
Archit Taneja55978cc2011-05-06 11:45:51 +0530115static inline u16 DISPC_TRANS_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 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530120 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530121 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530122 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530123 return 0x03B0;
Archit Taneja702d1442011-05-06 11:45:50 +0530124 default:
125 BUG();
126 }
127}
128
Archit Taneja55978cc2011-05-06 11:45:51 +0530129static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530130{
131 switch (channel) {
132 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530133 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530134 case OMAP_DSS_CHANNEL_DIGIT:
135 BUG();
136 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530137 return 0x0400;
Archit Taneja702d1442011-05-06 11:45:50 +0530138 default:
139 BUG();
140 }
141}
142
Archit Taneja55978cc2011-05-06 11:45:51 +0530143static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530144{
145 switch (channel) {
146 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530147 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530148 case OMAP_DSS_CHANNEL_DIGIT:
149 BUG();
150 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530151 return 0x0404;
Archit Taneja702d1442011-05-06 11:45:50 +0530152 default:
153 BUG();
154 }
155}
156
Archit Taneja55978cc2011-05-06 11:45:51 +0530157static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530158{
159 switch (channel) {
160 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530161 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530162 case OMAP_DSS_CHANNEL_DIGIT:
163 BUG();
164 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530165 return 0x0408;
Archit Taneja702d1442011-05-06 11:45:50 +0530166 default:
167 BUG();
168 }
169}
170
Archit Taneja55978cc2011-05-06 11:45:51 +0530171static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530172{
173 switch (channel) {
174 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530175 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530176 case OMAP_DSS_CHANNEL_DIGIT:
177 BUG();
178 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530179 return 0x040C;
Archit Taneja702d1442011-05-06 11:45:50 +0530180 default:
181 BUG();
182 }
183}
184
185/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530186static inline u16 DISPC_SIZE_MGR(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 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530191 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530192 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530193 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530194 return 0x03CC;
Archit Taneja702d1442011-05-06 11:45:50 +0530195 default:
196 BUG();
197 }
198}
199
Archit Taneja55978cc2011-05-06 11:45:51 +0530200static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530201{
202 switch (channel) {
203 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530204 return 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530205 case OMAP_DSS_CHANNEL_DIGIT:
206 BUG();
207 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530208 return 0x03C0;
Archit Taneja702d1442011-05-06 11:45:50 +0530209 default:
210 BUG();
211 }
212}
213
Archit Taneja55978cc2011-05-06 11:45:51 +0530214static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530215{
216 switch (channel) {
217 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530218 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530219 case OMAP_DSS_CHANNEL_DIGIT:
220 BUG();
221 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530222 return 0x03C4;
Archit Taneja702d1442011-05-06 11:45:50 +0530223 default:
224 BUG();
225 }
226}
227
Archit Taneja55978cc2011-05-06 11:45:51 +0530228static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530229{
230 switch (channel) {
231 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530232 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530233 case OMAP_DSS_CHANNEL_DIGIT:
234 BUG();
235 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530236 return 0x03C8;
Archit Taneja702d1442011-05-06 11:45:50 +0530237 default:
238 BUG();
239 }
240}
241
Archit Taneja55978cc2011-05-06 11:45:51 +0530242static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530243{
244 switch (channel) {
245 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530246 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530247 case OMAP_DSS_CHANNEL_DIGIT:
248 BUG();
249 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530250 return 0x03BC;
Archit Taneja702d1442011-05-06 11:45:50 +0530251 default:
252 BUG();
253 }
254}
255
Archit Taneja55978cc2011-05-06 11:45:51 +0530256static inline u16 DISPC_CPR_COEF_G(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 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530261 case OMAP_DSS_CHANNEL_DIGIT:
262 BUG();
263 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530264 return 0x03B8;
Archit Taneja702d1442011-05-06 11:45:50 +0530265 default:
266 BUG();
267 }
268}
269
Archit Taneja55978cc2011-05-06 11:45:51 +0530270static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530271{
272 switch (channel) {
273 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530274 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530275 case OMAP_DSS_CHANNEL_DIGIT:
276 BUG();
277 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530278 return 0x03B4;
Archit Taneja702d1442011-05-06 11:45:50 +0530279 default:
280 BUG();
281 }
282}
283
Archit Taneja9b372c22011-05-06 11:45:49 +0530284/* DISPC overlay register base addresses */
285static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
286{
287 switch (plane) {
288 case OMAP_DSS_GFX:
289 return 0x0080;
290 case OMAP_DSS_VIDEO1:
291 return 0x00BC;
292 case OMAP_DSS_VIDEO2:
293 return 0x014C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530294 case OMAP_DSS_VIDEO3:
295 return 0x0300;
Archit Taneja9b372c22011-05-06 11:45:49 +0530296 default:
297 BUG();
298 }
299}
300
301/* DISPC overlay register offsets */
302static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
303{
304 switch (plane) {
305 case OMAP_DSS_GFX:
306 case OMAP_DSS_VIDEO1:
307 case OMAP_DSS_VIDEO2:
308 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530309 case OMAP_DSS_VIDEO3:
310 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530311 default:
312 BUG();
313 }
314}
315
316static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
317{
318 switch (plane) {
319 case OMAP_DSS_GFX:
320 case OMAP_DSS_VIDEO1:
321 case OMAP_DSS_VIDEO2:
322 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530323 case OMAP_DSS_VIDEO3:
324 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530325 default:
326 BUG();
327 }
328}
329
Amber Jainab5ca072011-05-19 19:47:53 +0530330static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
331{
332 switch (plane) {
333 case OMAP_DSS_GFX:
334 BUG();
335 case OMAP_DSS_VIDEO1:
336 return 0x0544;
337 case OMAP_DSS_VIDEO2:
338 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530339 case OMAP_DSS_VIDEO3:
340 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530341 default:
342 BUG();
343 }
344}
345
346static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
347{
348 switch (plane) {
349 case OMAP_DSS_GFX:
350 BUG();
351 case OMAP_DSS_VIDEO1:
352 return 0x0548;
353 case OMAP_DSS_VIDEO2:
354 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530355 case OMAP_DSS_VIDEO3:
356 return 0x0314;
Amber Jainab5ca072011-05-19 19:47:53 +0530357 default:
358 BUG();
359 }
360}
361
Archit Taneja9b372c22011-05-06 11:45:49 +0530362static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
363{
364 switch (plane) {
365 case OMAP_DSS_GFX:
366 case OMAP_DSS_VIDEO1:
367 case OMAP_DSS_VIDEO2:
368 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530369 case OMAP_DSS_VIDEO3:
370 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530371 default:
372 BUG();
373 }
374}
375
376static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
377{
378 switch (plane) {
379 case OMAP_DSS_GFX:
380 case OMAP_DSS_VIDEO1:
381 case OMAP_DSS_VIDEO2:
382 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530383 case OMAP_DSS_VIDEO3:
384 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530385 default:
386 BUG();
387 }
388}
389
390static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
391{
392 switch (plane) {
393 case OMAP_DSS_GFX:
394 return 0x0020;
395 case OMAP_DSS_VIDEO1:
396 case OMAP_DSS_VIDEO2:
397 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530398 case OMAP_DSS_VIDEO3:
399 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530400 default:
401 BUG();
402 }
403}
404
Amber Jainab5ca072011-05-19 19:47:53 +0530405static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
406{
407 switch (plane) {
408 case OMAP_DSS_GFX:
409 BUG();
410 case OMAP_DSS_VIDEO1:
411 return 0x0568;
412 case OMAP_DSS_VIDEO2:
413 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530414 case OMAP_DSS_VIDEO3:
415 return 0x032C;
Amber Jainab5ca072011-05-19 19:47:53 +0530416 default:
417 BUG();
418 }
419}
420
Archit Taneja9b372c22011-05-06 11:45:49 +0530421static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
422{
423 switch (plane) {
424 case OMAP_DSS_GFX:
425 return 0x0024;
426 case OMAP_DSS_VIDEO1:
427 case OMAP_DSS_VIDEO2:
428 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530429 case OMAP_DSS_VIDEO3:
430 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530431 default:
432 BUG();
433 }
434}
435
436static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
437{
438 switch (plane) {
439 case OMAP_DSS_GFX:
440 return 0x0028;
441 case OMAP_DSS_VIDEO1:
442 case OMAP_DSS_VIDEO2:
443 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530444 case OMAP_DSS_VIDEO3:
445 return 0x0088;
Archit Taneja9b372c22011-05-06 11:45:49 +0530446 default:
447 BUG();
448 }
449}
450
451static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
452{
453 switch (plane) {
454 case OMAP_DSS_GFX:
455 return 0x002C;
456 case OMAP_DSS_VIDEO1:
457 case OMAP_DSS_VIDEO2:
458 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530459 case OMAP_DSS_VIDEO3:
460 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530461 default:
462 BUG();
463 }
464}
465
466static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
467{
468 switch (plane) {
469 case OMAP_DSS_GFX:
470 return 0x0030;
471 case OMAP_DSS_VIDEO1:
472 case OMAP_DSS_VIDEO2:
473 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530474 case OMAP_DSS_VIDEO3:
475 return 0x0098;
Archit Taneja9b372c22011-05-06 11:45:49 +0530476 default:
477 BUG();
478 }
479}
480
481static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
482{
483 switch (plane) {
484 case OMAP_DSS_GFX:
485 return 0x0034;
486 case OMAP_DSS_VIDEO1:
487 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530488 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530489 BUG();
490 default:
491 BUG();
492 }
493}
494
495static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
496{
497 switch (plane) {
498 case OMAP_DSS_GFX:
499 return 0x0038;
500 case OMAP_DSS_VIDEO1:
501 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530502 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530503 BUG();
504 default:
505 BUG();
506 }
507}
508
509static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
510{
511 switch (plane) {
512 case OMAP_DSS_GFX:
513 BUG();
514 case OMAP_DSS_VIDEO1:
515 case OMAP_DSS_VIDEO2:
516 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530517 case OMAP_DSS_VIDEO3:
518 return 0x0090;
Archit Taneja9b372c22011-05-06 11:45:49 +0530519 default:
520 BUG();
521 }
522}
523
Amber Jainab5ca072011-05-19 19:47:53 +0530524static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
525{
526 switch (plane) {
527 case OMAP_DSS_GFX:
528 BUG();
529 case OMAP_DSS_VIDEO1:
530 return 0x0580;
531 case OMAP_DSS_VIDEO2:
532 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530533 case OMAP_DSS_VIDEO3:
534 return 0x0424;
Amber Jainab5ca072011-05-19 19:47:53 +0530535 default:
536 BUG();
537 }
538}
539
Archit Taneja9b372c22011-05-06 11:45:49 +0530540static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
541{
542 switch (plane) {
543 case OMAP_DSS_GFX:
544 BUG();
545 case OMAP_DSS_VIDEO1:
546 case OMAP_DSS_VIDEO2:
547 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530548 case OMAP_DSS_VIDEO3:
549 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530550 default:
551 BUG();
552 }
553}
554
555
556static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
557{
558 switch (plane) {
559 case OMAP_DSS_GFX:
560 BUG();
561 case OMAP_DSS_VIDEO1:
562 case OMAP_DSS_VIDEO2:
563 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530564 case OMAP_DSS_VIDEO3:
565 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530566 default:
567 BUG();
568 }
569}
570
Amber Jainab5ca072011-05-19 19:47:53 +0530571static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
572{
573 switch (plane) {
574 case OMAP_DSS_GFX:
575 BUG();
576 case OMAP_DSS_VIDEO1:
577 return 0x0584;
578 case OMAP_DSS_VIDEO2:
579 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530580 case OMAP_DSS_VIDEO3:
581 return 0x0428;
Amber Jainab5ca072011-05-19 19:47:53 +0530582 default:
583 BUG();
584 }
585}
586
Archit Taneja9b372c22011-05-06 11:45:49 +0530587static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
588{
589 switch (plane) {
590 case OMAP_DSS_GFX:
591 BUG();
592 case OMAP_DSS_VIDEO1:
593 case OMAP_DSS_VIDEO2:
594 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530595 case OMAP_DSS_VIDEO3:
596 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530597 default:
598 BUG();
599 }
600}
601
Amber Jainab5ca072011-05-19 19:47:53 +0530602static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
603{
604 switch (plane) {
605 case OMAP_DSS_GFX:
606 BUG();
607 case OMAP_DSS_VIDEO1:
608 return 0x0588;
609 case OMAP_DSS_VIDEO2:
610 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530611 case OMAP_DSS_VIDEO3:
612 return 0x042C;
Amber Jainab5ca072011-05-19 19:47:53 +0530613 default:
614 BUG();
615 }
616}
617
Archit Taneja9b372c22011-05-06 11:45:49 +0530618/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
619static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
620{
621 switch (plane) {
622 case OMAP_DSS_GFX:
623 BUG();
624 case OMAP_DSS_VIDEO1:
625 case OMAP_DSS_VIDEO2:
626 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530627 case OMAP_DSS_VIDEO3:
628 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530629 default:
630 BUG();
631 }
632}
633
634/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Amber Jainab5ca072011-05-19 19:47:53 +0530635static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
636{
637 switch (plane) {
638 case OMAP_DSS_GFX:
639 BUG();
640 case OMAP_DSS_VIDEO1:
641 return 0x058C + i * 0x8;
642 case OMAP_DSS_VIDEO2:
643 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530644 case OMAP_DSS_VIDEO3:
645 return 0x0430 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530646 default:
647 BUG();
648 }
649}
650
651/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Archit Taneja9b372c22011-05-06 11:45:49 +0530652static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
653{
654 switch (plane) {
655 case OMAP_DSS_GFX:
656 BUG();
657 case OMAP_DSS_VIDEO1:
658 case OMAP_DSS_VIDEO2:
659 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530660 case OMAP_DSS_VIDEO3:
661 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530662 default:
663 BUG();
664 }
665}
666
Amber Jainab5ca072011-05-19 19:47:53 +0530667/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
668static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
669{
670 switch (plane) {
671 case OMAP_DSS_GFX:
672 BUG();
673 case OMAP_DSS_VIDEO1:
674 return 0x0590 + i * 8;
675 case OMAP_DSS_VIDEO2:
676 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530677 case OMAP_DSS_VIDEO3:
678 return 0x0434 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530679 default:
680 BUG();
681 }
682}
683
Archit Taneja9b372c22011-05-06 11:45:49 +0530684/* coef index i = {0, 1, 2, 3, 4,} */
685static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
686{
687 switch (plane) {
688 case OMAP_DSS_GFX:
689 BUG();
690 case OMAP_DSS_VIDEO1:
691 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530692 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530693 return 0x0074 + i * 0x4;
694 default:
695 BUG();
696 }
697}
698
699/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
700static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
701{
702 switch (plane) {
703 case OMAP_DSS_GFX:
704 BUG();
705 case OMAP_DSS_VIDEO1:
706 return 0x0124 + i * 0x4;
707 case OMAP_DSS_VIDEO2:
708 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530709 case OMAP_DSS_VIDEO3:
710 return 0x0050 + i * 0x4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530711 default:
712 BUG();
713 }
714}
715
Amber Jainab5ca072011-05-19 19:47:53 +0530716/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
717static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
718{
719 switch (plane) {
720 case OMAP_DSS_GFX:
721 BUG();
722 case OMAP_DSS_VIDEO1:
723 return 0x05CC + i * 0x4;
724 case OMAP_DSS_VIDEO2:
725 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530726 case OMAP_DSS_VIDEO3:
727 return 0x0470 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530728 default:
729 BUG();
730 }
731}
732
Archit Taneja9b372c22011-05-06 11:45:49 +0530733static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
734{
735 switch (plane) {
736 case OMAP_DSS_GFX:
737 return 0x01AC;
738 case OMAP_DSS_VIDEO1:
739 return 0x0174;
740 case OMAP_DSS_VIDEO2:
741 return 0x00E8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530742 case OMAP_DSS_VIDEO3:
743 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530744 default:
745 BUG();
746 }
747}
748#endif