blob: 483744223dd1a34bb06a08777c3886d721d963d3 [file] [log] [blame]
Archit Taneja9b372c22011-05-06 11:45:49 +05301/*
2 * linux/drivers/video/omap2/dss/dispc.h
3 *
4 * Copyright (C) 2011 Texas Instruments
5 * Author: Archit Taneja <archit@ti.com>
6 *
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 2 as published by
10 * the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef __OMAP2_DISPC_REG_H
22#define __OMAP2_DISPC_REG_H
23
Archit Taneja702d1442011-05-06 11:45:50 +053024/* DISPC common registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053025#define DISPC_REVISION 0x0000
26#define DISPC_SYSCONFIG 0x0010
27#define DISPC_SYSSTATUS 0x0014
28#define DISPC_IRQSTATUS 0x0018
29#define DISPC_IRQENABLE 0x001C
30#define DISPC_CONTROL 0x0040
31#define DISPC_CONFIG 0x0044
32#define DISPC_CAPABLE 0x0048
33#define DISPC_LINE_STATUS 0x005C
34#define DISPC_LINE_NUMBER 0x0060
35#define DISPC_GLOBAL_ALPHA 0x0074
36#define DISPC_CONTROL2 0x0238
37#define DISPC_CONFIG2 0x0620
38#define DISPC_DIVISOR 0x0804
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +030039#define DISPC_GLOBAL_BUFFER 0x0800
Chandrabhanu Mahapatrae86d4562012-06-29 10:43:13 +053040#define DISPC_CONTROL3 0x0848
41#define DISPC_CONFIG3 0x084C
Archit Tanejad0df9a22013-03-26 19:15:25 +053042#define DISPC_MSTANDBY_CTRL 0x0858
Tomi Valkeinen29fceee2013-11-14 11:38:25 +020043#define DISPC_GLOBAL_MFLAG_ATTRIBUTE 0x085C
Archit Taneja9b372c22011-05-06 11:45:49 +053044
45/* DISPC overlay registers */
Archit Taneja55978cc2011-05-06 11:45:51 +053046#define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053047 DISPC_BA0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053048#define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053049 DISPC_BA1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053050#define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \
51 DISPC_BA0_UV_OFFSET(n))
52#define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \
53 DISPC_BA1_UV_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053054#define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053055 DISPC_POS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053056#define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053057 DISPC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053058#define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053059 DISPC_ATTR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053060#define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \
61 DISPC_ATTR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053062#define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053063 DISPC_FIFO_THRESH_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053064#define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053065 DISPC_FIFO_SIZE_STATUS_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053066#define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053067 DISPC_ROW_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053068#define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053069 DISPC_PIX_INC_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053070#define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053071 DISPC_WINDOW_SKIP_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053072#define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053073 DISPC_TABLE_BA_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053074#define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053075 DISPC_FIR_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053076#define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \
77 DISPC_FIR2_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053078#define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053079 DISPC_PIC_SIZE_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053080#define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053081 DISPC_ACCU0_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053082#define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053083 DISPC_ACCU1_OFFSET(n))
Amber Jainab5ca072011-05-19 19:47:53 +053084#define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \
85 DISPC_ACCU2_0_OFFSET(n))
86#define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \
87 DISPC_ACCU2_1_OFFSET(n))
Archit Taneja55978cc2011-05-06 11:45:51 +053088#define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053089 DISPC_FIR_COEF_H_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053090#define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053091 DISPC_FIR_COEF_HV_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +053092#define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \
93 DISPC_FIR_COEF_H2_OFFSET(n, i))
94#define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \
95 DISPC_FIR_COEF_HV2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053096#define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053097 DISPC_CONV_COEF_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +053098#define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +053099 DISPC_FIR_COEF_V_OFFSET(n, i))
Amber Jainab5ca072011-05-19 19:47:53 +0530100#define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \
101 DISPC_FIR_COEF_V2_OFFSET(n, i))
Archit Taneja55978cc2011-05-06 11:45:51 +0530102#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
Archit Taneja9b372c22011-05-06 11:45:49 +0530103 DISPC_PRELOAD_OFFSET(n))
Tomi Valkeinen26450d42014-09-29 20:46:15 +0000104#define DISPC_OVL_MFLAG_THRESHOLD(n) DISPC_MFLAG_THRESHOLD_OFFSET(n)
Archit Taneja9b372c22011-05-06 11:45:49 +0530105
Chandrabhanu Mahapatradebd9072011-12-19 14:03:44 +0530106/* DISPC up/downsampling FIR filter coefficient structure */
107struct dispc_coef {
108 s8 hc4_vc22;
109 s8 hc3_vc2;
110 u8 hc2_vc1;
111 s8 hc1_vc0;
112 s8 hc0_vc00;
113};
114
115const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps);
116
Archit Taneja702d1442011-05-06 11:45:50 +0530117/* DISPC manager/channel specific registers */
Archit Taneja55978cc2011-05-06 11:45:51 +0530118static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530119{
120 switch (channel) {
121 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530122 return 0x004C;
Archit Taneja702d1442011-05-06 11:45:50 +0530123 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530124 return 0x0050;
Archit Taneja702d1442011-05-06 11:45:50 +0530125 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530126 return 0x03AC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530127 case OMAP_DSS_CHANNEL_LCD3:
128 return 0x0814;
Archit Taneja702d1442011-05-06 11:45:50 +0530129 default:
130 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300131 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530132 }
133}
134
Archit Taneja55978cc2011-05-06 11:45:51 +0530135static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530136{
137 switch (channel) {
138 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530139 return 0x0054;
Archit Taneja702d1442011-05-06 11:45:50 +0530140 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530141 return 0x0058;
Archit Taneja702d1442011-05-06 11:45:50 +0530142 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530143 return 0x03B0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530144 case OMAP_DSS_CHANNEL_LCD3:
145 return 0x0818;
Archit Taneja702d1442011-05-06 11:45:50 +0530146 default:
147 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300148 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530149 }
150}
151
Archit Taneja55978cc2011-05-06 11:45:51 +0530152static inline u16 DISPC_TIMING_H(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530153{
154 switch (channel) {
155 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530156 return 0x0064;
Archit Taneja702d1442011-05-06 11:45:50 +0530157 case OMAP_DSS_CHANNEL_DIGIT:
158 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300159 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530160 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530161 return 0x0400;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530162 case OMAP_DSS_CHANNEL_LCD3:
163 return 0x0840;
Archit Taneja702d1442011-05-06 11:45:50 +0530164 default:
165 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300166 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530167 }
168}
169
Archit Taneja55978cc2011-05-06 11:45:51 +0530170static inline u16 DISPC_TIMING_V(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530171{
172 switch (channel) {
173 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530174 return 0x0068;
Archit Taneja702d1442011-05-06 11:45:50 +0530175 case OMAP_DSS_CHANNEL_DIGIT:
176 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300177 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530178 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530179 return 0x0404;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530180 case OMAP_DSS_CHANNEL_LCD3:
181 return 0x0844;
Archit Taneja702d1442011-05-06 11:45:50 +0530182 default:
183 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300184 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530185 }
186}
187
Archit Taneja55978cc2011-05-06 11:45:51 +0530188static inline u16 DISPC_POL_FREQ(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530189{
190 switch (channel) {
191 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530192 return 0x006C;
Archit Taneja702d1442011-05-06 11:45:50 +0530193 case OMAP_DSS_CHANNEL_DIGIT:
194 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300195 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530196 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530197 return 0x0408;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530198 case OMAP_DSS_CHANNEL_LCD3:
199 return 0x083C;
Archit Taneja702d1442011-05-06 11:45:50 +0530200 default:
201 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300202 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530203 }
204}
205
Archit Taneja55978cc2011-05-06 11:45:51 +0530206static inline u16 DISPC_DIVISORo(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530207{
208 switch (channel) {
209 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530210 return 0x0070;
Archit Taneja702d1442011-05-06 11:45:50 +0530211 case OMAP_DSS_CHANNEL_DIGIT:
212 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300213 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530214 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530215 return 0x040C;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530216 case OMAP_DSS_CHANNEL_LCD3:
217 return 0x0838;
Archit Taneja702d1442011-05-06 11:45:50 +0530218 default:
219 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300220 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530221 }
222}
223
224/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
Archit Taneja55978cc2011-05-06 11:45:51 +0530225static inline u16 DISPC_SIZE_MGR(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530226{
227 switch (channel) {
228 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530229 return 0x007C;
Archit Taneja702d1442011-05-06 11:45:50 +0530230 case OMAP_DSS_CHANNEL_DIGIT:
Archit Taneja55978cc2011-05-06 11:45:51 +0530231 return 0x0078;
Archit Taneja702d1442011-05-06 11:45:50 +0530232 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530233 return 0x03CC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530234 case OMAP_DSS_CHANNEL_LCD3:
235 return 0x0834;
Archit Taneja702d1442011-05-06 11:45:50 +0530236 default:
237 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300238 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530239 }
240}
241
Archit Taneja55978cc2011-05-06 11:45:51 +0530242static inline u16 DISPC_DATA_CYCLE1(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 0x01D4;
Archit Taneja702d1442011-05-06 11:45:50 +0530247 case OMAP_DSS_CHANNEL_DIGIT:
248 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300249 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530250 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530251 return 0x03C0;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530252 case OMAP_DSS_CHANNEL_LCD3:
253 return 0x0828;
Archit Taneja702d1442011-05-06 11:45:50 +0530254 default:
255 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300256 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530257 }
258}
259
Archit Taneja55978cc2011-05-06 11:45:51 +0530260static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530261{
262 switch (channel) {
263 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530264 return 0x01D8;
Archit Taneja702d1442011-05-06 11:45:50 +0530265 case OMAP_DSS_CHANNEL_DIGIT:
266 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300267 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530268 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530269 return 0x03C4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530270 case OMAP_DSS_CHANNEL_LCD3:
271 return 0x082C;
Archit Taneja702d1442011-05-06 11:45:50 +0530272 default:
273 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300274 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530275 }
276}
277
Archit Taneja55978cc2011-05-06 11:45:51 +0530278static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530279{
280 switch (channel) {
281 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530282 return 0x01DC;
Archit Taneja702d1442011-05-06 11:45:50 +0530283 case OMAP_DSS_CHANNEL_DIGIT:
284 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300285 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530286 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530287 return 0x03C8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530288 case OMAP_DSS_CHANNEL_LCD3:
289 return 0x0830;
Archit Taneja702d1442011-05-06 11:45:50 +0530290 default:
291 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300292 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530293 }
294}
295
Archit Taneja55978cc2011-05-06 11:45:51 +0530296static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530297{
298 switch (channel) {
299 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530300 return 0x0220;
Archit Taneja702d1442011-05-06 11:45:50 +0530301 case OMAP_DSS_CHANNEL_DIGIT:
302 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300303 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530304 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530305 return 0x03BC;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530306 case OMAP_DSS_CHANNEL_LCD3:
307 return 0x0824;
Archit Taneja702d1442011-05-06 11:45:50 +0530308 default:
309 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300310 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530311 }
312}
313
Archit Taneja55978cc2011-05-06 11:45:51 +0530314static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530315{
316 switch (channel) {
317 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530318 return 0x0224;
Archit Taneja702d1442011-05-06 11:45:50 +0530319 case OMAP_DSS_CHANNEL_DIGIT:
320 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300321 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530322 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530323 return 0x03B8;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530324 case OMAP_DSS_CHANNEL_LCD3:
325 return 0x0820;
Archit Taneja702d1442011-05-06 11:45:50 +0530326 default:
327 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300328 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530329 }
330}
331
Archit Taneja55978cc2011-05-06 11:45:51 +0530332static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel)
Archit Taneja702d1442011-05-06 11:45:50 +0530333{
334 switch (channel) {
335 case OMAP_DSS_CHANNEL_LCD:
Archit Taneja55978cc2011-05-06 11:45:51 +0530336 return 0x0228;
Archit Taneja702d1442011-05-06 11:45:50 +0530337 case OMAP_DSS_CHANNEL_DIGIT:
338 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300339 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530340 case OMAP_DSS_CHANNEL_LCD2:
Archit Taneja55978cc2011-05-06 11:45:51 +0530341 return 0x03B4;
Chandrabhanu Mahapatraff6331e2012-06-19 15:08:16 +0530342 case OMAP_DSS_CHANNEL_LCD3:
343 return 0x081C;
Archit Taneja702d1442011-05-06 11:45:50 +0530344 default:
345 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300346 return 0;
Archit Taneja702d1442011-05-06 11:45:50 +0530347 }
348}
349
Archit Taneja9b372c22011-05-06 11:45:49 +0530350/* DISPC overlay register base addresses */
351static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
352{
353 switch (plane) {
354 case OMAP_DSS_GFX:
355 return 0x0080;
356 case OMAP_DSS_VIDEO1:
357 return 0x00BC;
358 case OMAP_DSS_VIDEO2:
359 return 0x014C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530360 case OMAP_DSS_VIDEO3:
361 return 0x0300;
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300362 case OMAP_DSS_WB:
363 return 0x0500;
Archit Taneja9b372c22011-05-06 11:45:49 +0530364 default:
365 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300366 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530367 }
368}
369
370/* DISPC overlay register offsets */
371static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
372{
373 switch (plane) {
374 case OMAP_DSS_GFX:
375 case OMAP_DSS_VIDEO1:
376 case OMAP_DSS_VIDEO2:
377 return 0x0000;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530378 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530379 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530380 return 0x0008;
Archit Taneja9b372c22011-05-06 11:45:49 +0530381 default:
382 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300383 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530384 }
385}
386
387static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
388{
389 switch (plane) {
390 case OMAP_DSS_GFX:
391 case OMAP_DSS_VIDEO1:
392 case OMAP_DSS_VIDEO2:
393 return 0x0004;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530394 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530395 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530396 return 0x000C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530397 default:
398 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300399 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530400 }
401}
402
Amber Jainab5ca072011-05-19 19:47:53 +0530403static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
404{
405 switch (plane) {
406 case OMAP_DSS_GFX:
407 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300408 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530409 case OMAP_DSS_VIDEO1:
410 return 0x0544;
411 case OMAP_DSS_VIDEO2:
412 return 0x04BC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530413 case OMAP_DSS_VIDEO3:
414 return 0x0310;
Archit Taneja7a155be2012-07-16 15:54:24 +0530415 case OMAP_DSS_WB:
416 return 0x0118;
Amber Jainab5ca072011-05-19 19:47:53 +0530417 default:
418 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300419 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530420 }
421}
422
423static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
424{
425 switch (plane) {
426 case OMAP_DSS_GFX:
427 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300428 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530429 case OMAP_DSS_VIDEO1:
430 return 0x0548;
431 case OMAP_DSS_VIDEO2:
432 return 0x04C0;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530433 case OMAP_DSS_VIDEO3:
434 return 0x0314;
Archit Taneja7a155be2012-07-16 15:54:24 +0530435 case OMAP_DSS_WB:
436 return 0x011C;
Amber Jainab5ca072011-05-19 19:47:53 +0530437 default:
438 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300439 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530440 }
441}
442
Archit Taneja9b372c22011-05-06 11:45:49 +0530443static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
444{
445 switch (plane) {
446 case OMAP_DSS_GFX:
447 case OMAP_DSS_VIDEO1:
448 case OMAP_DSS_VIDEO2:
449 return 0x0008;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530450 case OMAP_DSS_VIDEO3:
451 return 0x009C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530452 default:
453 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300454 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530455 }
456}
457
458static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
459{
460 switch (plane) {
461 case OMAP_DSS_GFX:
462 case OMAP_DSS_VIDEO1:
463 case OMAP_DSS_VIDEO2:
464 return 0x000C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530465 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530466 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530467 return 0x00A8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530468 default:
469 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300470 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530471 }
472}
473
474static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
475{
476 switch (plane) {
477 case OMAP_DSS_GFX:
478 return 0x0020;
479 case OMAP_DSS_VIDEO1:
480 case OMAP_DSS_VIDEO2:
481 return 0x0010;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530482 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530483 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530484 return 0x0070;
Archit Taneja9b372c22011-05-06 11:45:49 +0530485 default:
486 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300487 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530488 }
489}
490
Amber Jainab5ca072011-05-19 19:47:53 +0530491static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
492{
493 switch (plane) {
494 case OMAP_DSS_GFX:
495 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300496 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530497 case OMAP_DSS_VIDEO1:
498 return 0x0568;
499 case OMAP_DSS_VIDEO2:
500 return 0x04DC;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530501 case OMAP_DSS_VIDEO3:
502 return 0x032C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530503 case OMAP_DSS_WB:
504 return 0x0310;
Amber Jainab5ca072011-05-19 19:47:53 +0530505 default:
506 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300507 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530508 }
509}
510
Archit Taneja9b372c22011-05-06 11:45:49 +0530511static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
512{
513 switch (plane) {
514 case OMAP_DSS_GFX:
515 return 0x0024;
516 case OMAP_DSS_VIDEO1:
517 case OMAP_DSS_VIDEO2:
518 return 0x0014;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530519 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530520 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530521 return 0x008C;
Archit Taneja9b372c22011-05-06 11:45:49 +0530522 default:
523 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300524 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530525 }
526}
527
528static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
529{
530 switch (plane) {
531 case OMAP_DSS_GFX:
532 return 0x0028;
533 case OMAP_DSS_VIDEO1:
534 case OMAP_DSS_VIDEO2:
535 return 0x0018;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530536 case OMAP_DSS_VIDEO3:
Tomi Valkeinen66a0f9e2012-08-22 16:57:02 +0300537 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530538 return 0x0088;
Archit Taneja9b372c22011-05-06 11:45:49 +0530539 default:
540 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300541 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530542 }
543}
544
545static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
546{
547 switch (plane) {
548 case OMAP_DSS_GFX:
549 return 0x002C;
550 case OMAP_DSS_VIDEO1:
551 case OMAP_DSS_VIDEO2:
552 return 0x001C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530553 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530554 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530555 return 0x00A4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530556 default:
557 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300558 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530559 }
560}
561
562static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
563{
564 switch (plane) {
565 case OMAP_DSS_GFX:
566 return 0x0030;
567 case OMAP_DSS_VIDEO1:
568 case OMAP_DSS_VIDEO2:
569 return 0x0020;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530570 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530571 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530572 return 0x0098;
Archit Taneja9b372c22011-05-06 11:45:49 +0530573 default:
574 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300575 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530576 }
577}
578
579static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
580{
581 switch (plane) {
582 case OMAP_DSS_GFX:
583 return 0x0034;
584 case OMAP_DSS_VIDEO1:
585 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530586 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530587 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300588 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530589 default:
590 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300591 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530592 }
593}
594
595static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
596{
597 switch (plane) {
598 case OMAP_DSS_GFX:
599 return 0x0038;
600 case OMAP_DSS_VIDEO1:
601 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530602 case OMAP_DSS_VIDEO3:
Archit Taneja9b372c22011-05-06 11:45:49 +0530603 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300604 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530605 default:
606 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300607 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530608 }
609}
610
611static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
612{
613 switch (plane) {
614 case OMAP_DSS_GFX:
615 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300616 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530617 case OMAP_DSS_VIDEO1:
618 case OMAP_DSS_VIDEO2:
619 return 0x0024;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530620 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530621 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530622 return 0x0090;
Archit Taneja9b372c22011-05-06 11:45:49 +0530623 default:
624 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300625 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530626 }
627}
628
Amber Jainab5ca072011-05-19 19:47:53 +0530629static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
630{
631 switch (plane) {
632 case OMAP_DSS_GFX:
633 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300634 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530635 case OMAP_DSS_VIDEO1:
636 return 0x0580;
637 case OMAP_DSS_VIDEO2:
638 return 0x055C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530639 case OMAP_DSS_VIDEO3:
640 return 0x0424;
Archit Taneja7a155be2012-07-16 15:54:24 +0530641 case OMAP_DSS_WB:
642 return 0x290;
Amber Jainab5ca072011-05-19 19:47:53 +0530643 default:
644 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300645 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530646 }
647}
648
Archit Taneja9b372c22011-05-06 11:45:49 +0530649static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
650{
651 switch (plane) {
652 case OMAP_DSS_GFX:
653 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300654 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530655 case OMAP_DSS_VIDEO1:
656 case OMAP_DSS_VIDEO2:
657 return 0x0028;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530658 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530659 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530660 return 0x0094;
Archit Taneja9b372c22011-05-06 11:45:49 +0530661 default:
662 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300663 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530664 }
665}
666
667
668static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
669{
670 switch (plane) {
671 case OMAP_DSS_GFX:
672 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300673 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530674 case OMAP_DSS_VIDEO1:
675 case OMAP_DSS_VIDEO2:
676 return 0x002C;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530677 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530678 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530679 return 0x0000;
Archit Taneja9b372c22011-05-06 11:45:49 +0530680 default:
681 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300682 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530683 }
684}
685
Amber Jainab5ca072011-05-19 19:47:53 +0530686static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
687{
688 switch (plane) {
689 case OMAP_DSS_GFX:
690 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300691 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530692 case OMAP_DSS_VIDEO1:
693 return 0x0584;
694 case OMAP_DSS_VIDEO2:
695 return 0x0560;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530696 case OMAP_DSS_VIDEO3:
697 return 0x0428;
Archit Taneja7a155be2012-07-16 15:54:24 +0530698 case OMAP_DSS_WB:
699 return 0x0294;
Amber Jainab5ca072011-05-19 19:47:53 +0530700 default:
701 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300702 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530703 }
704}
705
Archit Taneja9b372c22011-05-06 11:45:49 +0530706static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
707{
708 switch (plane) {
709 case OMAP_DSS_GFX:
710 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300711 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530712 case OMAP_DSS_VIDEO1:
713 case OMAP_DSS_VIDEO2:
714 return 0x0030;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530715 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530716 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530717 return 0x0004;
Archit Taneja9b372c22011-05-06 11:45:49 +0530718 default:
719 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300720 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530721 }
722}
723
Amber Jainab5ca072011-05-19 19:47:53 +0530724static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
725{
726 switch (plane) {
727 case OMAP_DSS_GFX:
728 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300729 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530730 case OMAP_DSS_VIDEO1:
731 return 0x0588;
732 case OMAP_DSS_VIDEO2:
733 return 0x0564;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530734 case OMAP_DSS_VIDEO3:
735 return 0x042C;
Archit Taneja7a155be2012-07-16 15:54:24 +0530736 case OMAP_DSS_WB:
737 return 0x0298;
Amber Jainab5ca072011-05-19 19:47:53 +0530738 default:
739 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300740 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530741 }
742}
743
Archit Taneja9b372c22011-05-06 11:45:49 +0530744/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
745static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
746{
747 switch (plane) {
748 case OMAP_DSS_GFX:
749 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300750 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530751 case OMAP_DSS_VIDEO1:
752 case OMAP_DSS_VIDEO2:
753 return 0x0034 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530754 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530755 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530756 return 0x0010 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530757 default:
758 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300759 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530760 }
761}
762
763/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Amber Jainab5ca072011-05-19 19:47:53 +0530764static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
765{
766 switch (plane) {
767 case OMAP_DSS_GFX:
768 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300769 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530770 case OMAP_DSS_VIDEO1:
771 return 0x058C + i * 0x8;
772 case OMAP_DSS_VIDEO2:
773 return 0x0568 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530774 case OMAP_DSS_VIDEO3:
775 return 0x0430 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530776 case OMAP_DSS_WB:
777 return 0x02A0 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530778 default:
779 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300780 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530781 }
782}
783
784/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
Archit Taneja9b372c22011-05-06 11:45:49 +0530785static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
786{
787 switch (plane) {
788 case OMAP_DSS_GFX:
789 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300790 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530791 case OMAP_DSS_VIDEO1:
792 case OMAP_DSS_VIDEO2:
793 return 0x0038 + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530794 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530795 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530796 return 0x0014 + i * 0x8;
Archit Taneja9b372c22011-05-06 11:45:49 +0530797 default:
798 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300799 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530800 }
801}
802
Amber Jainab5ca072011-05-19 19:47:53 +0530803/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
804static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
805{
806 switch (plane) {
807 case OMAP_DSS_GFX:
808 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300809 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530810 case OMAP_DSS_VIDEO1:
811 return 0x0590 + i * 8;
812 case OMAP_DSS_VIDEO2:
813 return 0x056C + i * 0x8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530814 case OMAP_DSS_VIDEO3:
815 return 0x0434 + i * 0x8;
Archit Taneja7a155be2012-07-16 15:54:24 +0530816 case OMAP_DSS_WB:
817 return 0x02A4 + i * 0x8;
Amber Jainab5ca072011-05-19 19:47:53 +0530818 default:
819 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300820 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530821 }
822}
823
Archit Taneja9b372c22011-05-06 11:45:49 +0530824/* coef index i = {0, 1, 2, 3, 4,} */
825static inline u16 DISPC_CONV_COEF_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;
Archit Taneja9b372c22011-05-06 11:45:49 +0530831 case OMAP_DSS_VIDEO1:
832 case OMAP_DSS_VIDEO2:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530833 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530834 case OMAP_DSS_WB:
Archit Taneja9b372c22011-05-06 11:45:49 +0530835 return 0x0074 + i * 0x4;
836 default:
837 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300838 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530839 }
840}
841
842/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
843static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
844{
845 switch (plane) {
846 case OMAP_DSS_GFX:
847 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300848 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530849 case OMAP_DSS_VIDEO1:
850 return 0x0124 + i * 0x4;
851 case OMAP_DSS_VIDEO2:
852 return 0x00B4 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530853 case OMAP_DSS_VIDEO3:
Archit Taneja7a155be2012-07-16 15:54:24 +0530854 case OMAP_DSS_WB:
Archit Tanejab8c095b2011-09-13 18:20:33 +0530855 return 0x0050 + i * 0x4;
Archit Taneja9b372c22011-05-06 11:45:49 +0530856 default:
857 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300858 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530859 }
860}
861
Amber Jainab5ca072011-05-19 19:47:53 +0530862/* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */
863static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
864{
865 switch (plane) {
866 case OMAP_DSS_GFX:
867 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300868 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530869 case OMAP_DSS_VIDEO1:
870 return 0x05CC + i * 0x4;
871 case OMAP_DSS_VIDEO2:
872 return 0x05A8 + i * 0x4;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530873 case OMAP_DSS_VIDEO3:
874 return 0x0470 + i * 0x4;
Archit Taneja7a155be2012-07-16 15:54:24 +0530875 case OMAP_DSS_WB:
876 return 0x02E0 + i * 0x4;
Amber Jainab5ca072011-05-19 19:47:53 +0530877 default:
878 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300879 return 0;
Amber Jainab5ca072011-05-19 19:47:53 +0530880 }
881}
882
Archit Taneja9b372c22011-05-06 11:45:49 +0530883static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
884{
885 switch (plane) {
886 case OMAP_DSS_GFX:
887 return 0x01AC;
888 case OMAP_DSS_VIDEO1:
889 return 0x0174;
890 case OMAP_DSS_VIDEO2:
891 return 0x00E8;
Archit Tanejab8c095b2011-09-13 18:20:33 +0530892 case OMAP_DSS_VIDEO3:
893 return 0x00A0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530894 default:
895 BUG();
Tomi Valkeinenc6eee962012-05-18 11:47:02 +0300896 return 0;
Archit Taneja9b372c22011-05-06 11:45:49 +0530897 }
898}
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200899
900static inline u16 DISPC_MFLAG_THRESHOLD_OFFSET(enum omap_plane plane)
901{
902 switch (plane) {
903 case OMAP_DSS_GFX:
904 return 0x0860;
905 case OMAP_DSS_VIDEO1:
906 return 0x0864;
907 case OMAP_DSS_VIDEO2:
908 return 0x0868;
909 case OMAP_DSS_VIDEO3:
910 return 0x086c;
Tomi Valkeinenc2c06332015-11-04 17:10:41 +0200911 case OMAP_DSS_WB:
912 return 0x0870;
Tomi Valkeinen29fceee2013-11-14 11:38:25 +0200913 default:
914 BUG();
915 return 0;
916 }
917}
Archit Taneja9b372c22011-05-06 11:45:49 +0530918#endif