video: tegra: dc: add advanced cursor support
[linux-2.6.git] / drivers / video / tegra / dc / dc_reg.h
1 /*
2  * drivers/video/tegra/dc/dc_reg.h
3  *
4  * Copyright (C) 2010 Google, Inc.
5  * Author: Erik Gilling <konkers@android.com>
6  *
7  * Copyright (c) 2010-2012, NVIDIA CORPORATION, All rights reserved.
8  *
9  * This software is licensed under the terms of the GNU General Public
10  * License version 2, as published by the Free Software Foundation, and
11  * may be copied, distributed, and modified under those terms.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  */
19
20 #ifndef __DRIVERS_VIDEO_TEGRA_DC_DC_REG_H
21 #define __DRIVERS_VIDEO_TEGRA_DC_DC_REG_H
22
23 #define DC_CMD_GENERAL_INCR_SYNCPT              0x000
24 #define DC_CMD_GENERAL_INCR_SYNCPT_CNTRL        0x001
25 #define DC_CMD_GENERAL_INCR_SYNCPT_ERROR        0x002
26 #define DC_CMD_WIN_A_INCR_SYNCPT                0x008
27 #define DC_CMD_WIN_A_INCR_SYNCPT_CNTRL          0x009
28 #define DC_CMD_WIN_A_INCR_SYNCPT_ERROR          0x00a
29 #define DC_CMD_WIN_B_INCR_SYNCPT                0x010
30 #define DC_CMD_WIN_B_INCR_SYNCPT_CNTRL          0x011
31 #define DC_CMD_WIN_B_INCR_SYNCPT_ERROR          0x012
32 #define DC_CMD_WIN_C_INCR_SYNCPT                0x018
33 #define DC_CMD_WIN_C_INCR_SYNCPT_CNTRL          0x019
34 #define DC_CMD_WIN_C_INCR_SYNCPT_ERROR          0x01a
35 #define DC_CMD_CONT_SYNCPT_VSYNC                0x028
36 #define DC_CMD_DISPLAY_COMMAND_OPTION0          0x031
37 #define  MSF_POLARITY_HIGH                      (0 << 0)
38 #define  MSF_POLARITY_LOW                       (1 << 0)
39 #define  MSF_DISABLE                            (0 << 1)
40 #define  MSF_ENABLE                             (1 << 1)
41 #define  MSF_LSPI                               (0 << 2)
42 #define  MSF_LDC                                (1 << 2)
43 #define  MSF_LSDI                               (2 << 2)
44
45 #define DC_CMD_DISPLAY_COMMAND                  0x032
46 #define  DISP_COMMAND_RAISE             (1 << 0)
47 #define  DISP_CTRL_MODE_STOP            (0 << 5)
48 #define  DISP_CTRL_MODE_C_DISPLAY       (1 << 5)
49 #define  DISP_CTRL_MODE_NC_DISPLAY      (2 << 5)
50 #define  DISP_COMMAND_RAISE_VECTOR(x)   (((x) & 0x1f) << 22)
51 #define  DISP_COMMAND_RAISE_CHANNEL_ID(x)       (((x) & 0xf) << 27)
52
53 #define DC_CMD_SIGNAL_RAISE                     0x033
54 #define DC_CMD_DISPLAY_POWER_CONTROL            0x036
55 #define  PW0_ENABLE             (1 << 0)
56 #define  PW1_ENABLE             (1 << 2)
57 #define  PW2_ENABLE             (1 << 4)
58 #define  PW3_ENABLE             (1 << 6)
59 #define  PW4_ENABLE             (1 << 8)
60 #define  PM0_ENABLE             (1 << 16)
61 #define  PM1_ENABLE             (1 << 18)
62 #define  SPI_ENABLE             (1 << 24)
63 #define  HSPI_ENABLE            (1 << 25)
64
65 #define DC_CMD_INT_STATUS                       0x037
66 #define DC_CMD_INT_MASK                         0x038
67 #define DC_CMD_INT_ENABLE                       0x039
68 #define DC_CMD_INT_TYPE                         0x03a
69 #define DC_CMD_INT_POLARITY                     0x03b
70 #define  CTXSW_INT              (1 << 0)
71 #define  FRAME_END_INT          (1 << 1)
72 #define  V_BLANK_INT            (1 << 2)
73 #define  H_BLANK_INT            (1 << 3)
74 #define  V_PULSE3_INT           (1 << 4)
75 #define  V_PULSE2_INT           (1 << 5)
76 #define  SPI_BUSY_INT           (1 << 7)
77 #define  WIN_A_UF_INT           (1 << 8)
78 #define  WIN_B_UF_INT           (1 << 9)
79 #define  WIN_C_UF_INT           (1 << 10)
80 #define  MSF_INT                (1 << 12)
81 #define  SSF_INT                (1 << 13)
82 #define  WIN_A_OF_INT           (1 << 14)
83 #define  WIN_B_OF_INT           (1 << 15)
84 #define  WIN_C_OF_INT           (1 << 16)
85 #define  GPIO_0_INT             (1 << 18)
86 #define  GPIO_1_INT             (1 << 19)
87 #define  GPIO_2_INT             (1 << 20)
88
89 #define DC_CMD_SIGNAL_RAISE1                    0x03c
90 #define DC_CMD_SIGNAL_RAISE2                    0x03d
91 #define DC_CMD_SIGNAL_RAISE3                    0x03e
92 #define DC_CMD_STATE_ACCESS                     0x040
93 #define  READ_MUX_ASSEMBLY      (0 << 0)
94 #define  READ_MUX_ACTIVE        (1 << 0)
95 #define  WRITE_MUX_ASSEMBLY     (0 << 2)
96 #define  WRITE_MUX_ACTIVE       (1 << 2)
97
98 #define DC_CMD_STATE_CONTROL                    0x041
99 #define  GENERAL_ACT_REQ        (1 << 0)
100 #define  WIN_A_ACT_REQ          (1 << 1)
101 #define  WIN_B_ACT_REQ          (1 << 2)
102 #define  WIN_C_ACT_REQ          (1 << 3)
103 #define  GENERAL_UPDATE         (1 << 8)
104 #define  WIN_A_UPDATE           (1 << 9)
105 #define  WIN_B_UPDATE           (1 << 10)
106 #define  WIN_C_UPDATE           (1 << 11)
107 #define  NC_HOST_TRIG           (1 << 24)
108
109 #define DC_CMD_DISPLAY_WINDOW_HEADER            0x042
110 #define  WINDOW_A_SELECT                (1 << 4)
111 #define  WINDOW_B_SELECT                (1 << 5)
112 #define  WINDOW_C_SELECT                (1 << 6)
113 #define  WINDOW_D_SELECT                (1 << 7)
114 #define  WINDOW_H_SELECT                (1 << 8)
115
116 #define DC_CMD_REG_ACT_CONTROL                  0x043
117
118 #define DC_COM_CRC_CONTROL                      0x300
119 #define  CRC_ALWAYS_ENABLE              (1 << 3)
120 #define  CRC_ALWAYS_DISABLE             (0 << 3)
121 #define  CRC_INPUT_DATA_ACTIVE_DATA     (1 << 2)
122 #define  CRC_INPUT_DATA_FULL_FRAME      (0 << 2)
123 #define  CRC_WAIT_TWO_VSYNC             (1 << 1)
124 #define  CRC_WAIT_ONE_VSYNC             (0 << 1)
125 #define  CRC_ENABLE_ENABLE              (1 << 0)
126 #define  CRC_ENABLE_DISABLE             (0 << 0)
127 #define DC_COM_CRC_CHECKSUM                     0x301
128 #define DC_COM_PIN_OUTPUT_ENABLE0               0x302
129 #define DC_COM_PIN_OUTPUT_ENABLE1               0x303
130 #define DC_COM_PIN_OUTPUT_ENABLE2               0x304
131 #define DC_COM_PIN_OUTPUT_ENABLE3               0x305
132 #define  PIN_OUTPUT_LSPI_OUTPUT_EN              (1 << 8)
133 #define  PIN_OUTPUT_LSPI_OUTPUT_DIS             (1 << 8)
134 #define DC_COM_PIN_OUTPUT_POLARITY0             0x306
135
136 #define DC_COM_PIN_OUTPUT_POLARITY1             0x307
137 #define  LHS_OUTPUT_POLARITY_LOW        (1 << 30)
138 #define  LVS_OUTPUT_POLARITY_LOW        (1 << 28)
139 #define  LSC0_OUTPUT_POLARITY_LOW       (1 << 24)
140
141 #define DC_COM_PIN_OUTPUT_POLARITY2             0x308
142
143 #define DC_COM_PIN_OUTPUT_POLARITY3             0x309
144 #define  LSPI_OUTPUT_POLARITY_LOW       (1 << 8)
145
146 #define DC_COM_PIN_OUTPUT_DATA0                 0x30a
147 #define DC_COM_PIN_OUTPUT_DATA1                 0x30b
148 #define DC_COM_PIN_OUTPUT_DATA2                 0x30c
149 #define DC_COM_PIN_OUTPUT_DATA3                 0x30d
150 #define DC_COM_PIN_INPUT_ENABLE0                0x30e
151 #define DC_COM_PIN_INPUT_ENABLE1                0x30f
152 #define DC_COM_PIN_INPUT_ENABLE2                0x310
153 #define DC_COM_PIN_INPUT_ENABLE3                0x311
154 #define  PIN_INPUT_LSPI_INPUT_EN                (1 << 8)
155 #define  PIN_INPUT_LSPI_INPUT_DIS               (1 << 8)
156 #define DC_COM_PIN_INPUT_DATA0                  0x312
157 #define DC_COM_PIN_INPUT_DATA1                  0x313
158 #define DC_COM_PIN_OUTPUT_SELECT0               0x314
159 #define DC_COM_PIN_OUTPUT_SELECT1               0x315
160 #define DC_COM_PIN_OUTPUT_SELECT2               0x316
161 #define DC_COM_PIN_OUTPUT_SELECT3               0x317
162 #define DC_COM_PIN_OUTPUT_SELECT4               0x318
163 #define DC_COM_PIN_OUTPUT_SELECT5               0x319
164 #define DC_COM_PIN_OUTPUT_SELECT6               0x31a
165
166 #define PIN5_LM1_LCD_M1_OUTPUT_MASK     (7 << 4)
167 #define PIN5_LM1_LCD_M1_OUTPUT_M1       (0 << 4)
168 #define PIN5_LM1_LCD_M1_OUTPUT_LD21     (2 << 4)
169 #define PIN5_LM1_LCD_M1_OUTPUT_PM1      (3 << 4)
170
171 #define  PIN1_LHS_OUTPUT                (1 << 30)
172 #define  PIN1_LVS_OUTPUT                (1 << 28)
173
174 #define DC_COM_PIN_MISC_CONTROL                 0x31b
175 #define DC_COM_PM0_CONTROL                      0x31c
176 #define DC_COM_PM0_DUTY_CYCLE                   0x31d
177 #define DC_COM_PM1_CONTROL                      0x31e
178 #define DC_COM_PM1_DUTY_CYCLE                   0x31f
179
180 #define PM_PERIOD_SHIFT                 18
181 #define PM_CLK_DIVIDER_SHIFT            4
182
183 #define DC_COM_SPI_CONTROL                      0x320
184 #define DC_COM_SPI_START_BYTE                   0x321
185 #define DC_COM_HSPI_WRITE_DATA_AB               0x322
186 #define DC_COM_HSPI_WRITE_DATA_CD               0x323
187 #define DC_COM_HSPI_CS_DC                       0x324
188 #define DC_COM_SCRATCH_REGISTER_A               0x325
189 #define DC_COM_SCRATCH_REGISTER_B               0x326
190 #define DC_COM_GPIO_CTRL                        0x327
191 #define DC_COM_GPIO_DEBOUNCE_COUNTER            0x328
192 #define DC_COM_CRC_CHECKSUM_LATCHED             0x329
193
194 #define DC_COM_CMU_CSC_KRR                      0x32a
195 #define DC_COM_CMU_CSC_KGR                      0x32b
196 #define DC_COM_CMU_CSC_KBR                      0x32c
197 #define DC_COM_CMU_CSC_KRG                      0x32d
198 #define DC_COM_CMU_CSC_KGG                      0x32e
199 #define DC_COM_CMU_CSC_KBG                      0x32f
200 #define DC_COM_CMU_CSC_KRB                      0x330
201 #define DC_COM_CMU_CSC_KGB                      0x331
202 #define DC_COM_CMU_CSC_KBB                      0x332
203 #define DC_COM_CMU_LUT1                         0x336
204 #define  LUT1_ADDR(x)                   (((x) & 0x0ff) << 0)
205 #define  LUT1_DATA(x)                   (((x) & 0xfff) << 16)
206 #define  LUT1_READ_DATA(x)              (((x) >> 16) & 0xfff)
207 #define DC_COM_CMU_LUT2                         0x337
208 #define  LUT2_ADDR(x)                   (((x) & 0x3ff) << 0)
209 #define  LUT2_DATA(x)                   (((x) & 0x0ff) << 16)
210 #define  LUT2_READ_DATA(x)              (((x) >> 16) & 0x0ff)
211 #define DC_COM_CMU_LUT1_READ                    0x338
212 #define  LUT1_READ_ADDR(x)              (((x) & 0x0ff) << 8)
213 #define  LUT1_READ_EN                   (1 << 0)
214 #define DC_COM_CMU_LUT2_READ                    0x339
215 #define  LUT2_READ_ADDR(x)              (((x) & 0x3ff) << 8)
216 #define  LUT2_READ_EN                   (1 << 0)
217
218
219 #define DC_DISP_DISP_SIGNAL_OPTIONS0            0x400
220 #define  H_PULSE_0_ENABLE               (1 << 8)
221 #define  H_PULSE_1_ENABLE               (1 << 10)
222 #define  H_PULSE_2_ENABLE               (1 << 12)
223 #define  V_PULSE_0_ENABLE               (1 << 16)
224 #define  V_PULSE_1_ENABLE               (1 << 18)
225 #define  V_PULSE_2_ENABLE               (1 << 19)
226 #define  V_PULSE_3_ENABLE               (1 << 20)
227 #define  M0_ENABLE                      (1 << 24)
228 #define  M1_ENABLE                      (1 << 26)
229
230 #define DC_DISP_DISP_SIGNAL_OPTIONS1            0x401
231 #define  DI_ENABLE                      (1 << 16)
232 #define  PP_ENABLE                      (1 << 18)
233
234 #define DC_DISP_DISP_WIN_OPTIONS                0x402
235 #define  CURSOR_ENABLE                  (1 << 16)
236 #define  TVO_ENABLE                     (1 << 28)
237 #define  DSI_ENABLE                     (1 << 29)
238 #define  HDMI_ENABLE                    (1 << 30)
239
240 #define DC_DISP_MEM_HIGH_PRIORITY               0x403
241 #define DC_DISP_MEM_HIGH_PRIORITY_TIMER         0x404
242 #define DC_DISP_DISP_TIMING_OPTIONS             0x405
243 #define  VSYNC_H_POSITION(x)            ((x) & 0xfff)
244
245 #define DC_DISP_REF_TO_SYNC                     0x406
246 #define DC_DISP_SYNC_WIDTH                      0x407
247 #define DC_DISP_BACK_PORCH                      0x408
248 #define DC_DISP_DISP_ACTIVE                     0x409
249 #define DC_DISP_FRONT_PORCH                     0x40a
250 #define DC_DISP_H_PULSE0_CONTROL                0x40b
251 #define DC_DISP_H_PULSE0_POSITION_A             0x40c
252 #define DC_DISP_H_PULSE0_POSITION_B             0x40d
253 #define DC_DISP_H_PULSE0_POSITION_C             0x40e
254 #define DC_DISP_H_PULSE0_POSITION_D             0x40f
255 #define DC_DISP_H_PULSE1_CONTROL                0x410
256 #define DC_DISP_H_PULSE1_POSITION_A             0x411
257 #define DC_DISP_H_PULSE1_POSITION_B             0x412
258 #define DC_DISP_H_PULSE1_POSITION_C             0x413
259 #define DC_DISP_H_PULSE1_POSITION_D             0x414
260 #define DC_DISP_H_PULSE2_CONTROL                0x415
261 #define DC_DISP_H_PULSE2_POSITION_A             0x416
262 #define DC_DISP_H_PULSE2_POSITION_B             0x417
263 #define DC_DISP_H_PULSE2_POSITION_C             0x418
264 #define DC_DISP_H_PULSE2_POSITION_D             0x419
265 #define DC_DISP_V_PULSE0_CONTROL                0x41a
266 #define DC_DISP_V_PULSE0_POSITION_A             0x41b
267 #define DC_DISP_V_PULSE0_POSITION_B             0x41c
268 #define DC_DISP_V_PULSE0_POSITION_C             0x41d
269 #define DC_DISP_V_PULSE1_CONTROL                0x41e
270 #define DC_DISP_V_PULSE1_POSITION_A             0x41f
271 #define DC_DISP_V_PULSE1_POSITION_B             0x420
272 #define DC_DISP_V_PULSE1_POSITION_C             0x421
273 #define DC_DISP_V_PULSE2_CONTROL                0x422
274 #define  V_PULSE2_H_POSITION(x)         (((x) & 0x1fff) << 16)
275 #define  V_PULSE2_LAST(x)               (((x) & 0x1) << 8)
276 #define DC_DISP_V_PULSE2_POSITION_A             0x423
277 #define  V_PULSE2_START_A(x)            (((x) & 0x1fff) << 0)
278 #define  V_PULSE2_END_A(x)              (((x) & 0x1fff) << 16)
279
280 #define DC_DISP_V_PULSE3_CONTROL                0x424
281 #define DC_DISP_V_PULSE3_POSITION_A             0x425
282 #define DC_DISP_M0_CONTROL                      0x426
283 #define DC_DISP_M1_CONTROL                      0x427
284 #define DC_DISP_DI_CONTROL                      0x428
285 #define DC_DISP_PP_CONTROL                      0x429
286 #define DC_DISP_PP_SELECT_A                     0x42a
287 #define DC_DISP_PP_SELECT_B                     0x42b
288 #define DC_DISP_PP_SELECT_C                     0x42c
289 #define DC_DISP_PP_SELECT_D                     0x42d
290
291 #define  PULSE_MODE_NORMAL              (0 << 3)
292 #define  PULSE_MODE_ONE_CLOCK           (1 << 3)
293 #define  PULSE_POLARITY_HIGH            (0 << 4)
294 #define  PULSE_POLARITY_LOW             (1 << 4)
295 #define  PULSE_QUAL_ALWAYS              (0 << 6)
296 #define  PULSE_QUAL_VACTIVE             (2 << 6)
297 #define  PULSE_QUAL_VACTIVE1            (3 << 6)
298 #define  PULSE_LAST_START_A             (0 << 8)
299 #define  PULSE_LAST_END_A               (1 << 8)
300 #define  PULSE_LAST_START_B             (2 << 8)
301 #define  PULSE_LAST_END_B               (3 << 8)
302 #define  PULSE_LAST_START_C             (4 << 8)
303 #define  PULSE_LAST_END_C               (5 << 8)
304 #define  PULSE_LAST_START_D             (6 << 8)
305 #define  PULSE_LAST_END_D               (7 << 8)
306
307 #define  PULSE_START(x)                 ((x) & 0xfff)
308 #define  PULSE_END(x)                   (((x) & 0xfff) << 16)
309
310 #define DC_DISP_DISP_CLOCK_CONTROL              0x42e
311 #define  PIXEL_CLK_DIVIDER_PCD1         (0 << 8)
312 #define  PIXEL_CLK_DIVIDER_PCD1H        (1 << 8)
313 #define  PIXEL_CLK_DIVIDER_PCD2         (2 << 8)
314 #define  PIXEL_CLK_DIVIDER_PCD3         (3 << 8)
315 #define  PIXEL_CLK_DIVIDER_PCD4         (4 << 8)
316 #define  PIXEL_CLK_DIVIDER_PCD6         (5 << 8)
317 #define  PIXEL_CLK_DIVIDER_PCD8         (6 << 8)
318 #define  PIXEL_CLK_DIVIDER_PCD9         (7 << 8)
319 #define  PIXEL_CLK_DIVIDER_PCD12        (8 << 8)
320 #define  PIXEL_CLK_DIVIDER_PCD16        (9 << 8)
321 #define  PIXEL_CLK_DIVIDER_PCD18        (10 << 8)
322 #define  PIXEL_CLK_DIVIDER_PCD24        (11 << 8)
323 #define  PIXEL_CLK_DIVIDER_PCD13        (12 << 8)
324 #define  SHIFT_CLK_DIVIDER(x)           ((x) & 0xff)
325
326 #define DC_DISP_DISP_INTERFACE_CONTROL          0x42f
327 #define  DISP_DATA_FORMAT_DF1P1C        (0 << 0)
328 #define  DISP_DATA_FORMAT_DF1P2C24B     (1 << 0)
329 #define  DISP_DATA_FORMAT_DF1P2C18B     (2 << 0)
330 #define  DISP_DATA_FORMAT_DF1P2C16B     (3 << 0)
331 #define  DISP_DATA_FORMAT_DF2S          (5 << 0)
332 #define  DISP_DATA_FORMAT_DF3S          (6 << 0)
333 #define  DISP_DATA_FORMAT_DFSPI         (7 << 0)
334 #define  DISP_DATA_FORMAT_DF1P3C24B     (8 << 0)
335 #define  DISP_DATA_FORMAT_DF1P3C18B     (9 << 0)
336 #define  DISP_DATA_ALIGNMENT_MSB        (0 << 8)
337 #define  DISP_DATA_ALIGNMENT_LSB        (1 << 8)
338 #define  DISP_DATA_ORDER_RED_BLUE       (0 << 9)
339 #define  DISP_DATA_ORDER_BLUE_RED       (1 << 9)
340
341 #define DC_DISP_DISP_COLOR_CONTROL              0x430
342 #define  BASE_COLOR_SIZE666             (0 << 0)
343 #define  BASE_COLOR_SIZE111             (1 << 0)
344 #define  BASE_COLOR_SIZE222             (2 << 0)
345 #define  BASE_COLOR_SIZE333             (3 << 0)
346 #define  BASE_COLOR_SIZE444             (4 << 0)
347 #define  BASE_COLOR_SIZE555             (5 << 0)
348 #define  BASE_COLOR_SIZE565             (6 << 0)
349 #define  BASE_COLOR_SIZE332             (7 << 0)
350 #define  BASE_COLOR_SIZE888             (8 << 0)
351 #define  DITHER_CONTROL_DISABLE         (0 << 8)
352 #define  DITHER_CONTROL_ORDERED         (2 << 8)
353 #define  DITHER_CONTROL_ERRDIFF         (3 << 8)
354 #define  CMU_DISABLE                    (0 << 20)
355 #define  CMU_ENABLE                     (1 << 20)
356
357 #define DC_DISP_SHIFT_CLOCK_OPTIONS             0x431
358 #define DC_DISP_DATA_ENABLE_OPTIONS             0x432
359 #define   DE_SELECT_ACTIVE_BLANK        0x0
360 #define   DE_SELECT_ACTIVE              0x1
361 #define   DE_SELECT_ACTIVE_IS           0x2
362 #define   DE_CONTROL_ONECLK             (0 << 2)
363 #define   DE_CONTROL_NORMAL             (1 << 2)
364 #define   DE_CONTROL_EARLY_EXT          (2 << 2)
365 #define   DE_CONTROL_EARLY              (3 << 2)
366 #define   DE_CONTROL_ACTIVE_BLANK       (4 << 2)
367
368 #define DC_DISP_SERIAL_INTERFACE_OPTIONS        0x433
369 #define DC_DISP_LCD_SPI_OPTIONS                 0x434
370 #define DC_DISP_BORDER_COLOR                    0x435
371 #define DC_DISP_COLOR_KEY0_LOWER                0x436
372 #define DC_DISP_COLOR_KEY0_UPPER                0x437
373 #define DC_DISP_COLOR_KEY1_LOWER                0x438
374 #define DC_DISP_COLOR_KEY1_UPPER                0x439
375
376 #define DC_DISP_CURSOR_FOREGROUND               0x43c
377 #define DC_DISP_CURSOR_BACKGROUND               0x43d
378 #define   CURSOR_COLOR(_r, _g, _b) ((_r) | ((_g) << 8) | ((_b) << 16))
379
380 #define DC_DISP_CURSOR_START_ADDR               0x43e
381 #define DC_DISP_CURSOR_START_ADDR_NS            0x43f
382 #define   CURSOR_START_ADDR_MASK        (((1 << 22) - 1) << 10)
383 #define   CURSOR_START_ADDR(_addr)      ((_addr) >> 10)
384 #define   CURSOR_SIZE_64                (0x1 << 24)
385 #define   CURSOR_SIZE_128               (0x2 << 24)
386 #define   CURSOR_SIZE_256               (0x3 << 24)
387
388 #define DC_DISP_CURSOR_POSITION                 0x440
389 #define   CURSOR_POSITION(_x, _y)               \
390         (((_x) & ((1 << 16) - 1)) |             \
391         (((_y) & ((1 << 16) - 1)) << 16))
392
393 #define DC_DISP_CURSOR_POSITION_NS              0x441
394 #define DC_DISP_INIT_SEQ_CONTROL                0x442
395 #define DC_DISP_SPI_INIT_SEQ_DATA_A             0x443
396 #define DC_DISP_SPI_INIT_SEQ_DATA_B             0x444
397 #define DC_DISP_SPI_INIT_SEQ_DATA_C             0x445
398 #define DC_DISP_SPI_INIT_SEQ_DATA_D             0x446
399 #define DC_DISP_DC_MCCIF_FIFOCTRL               0x480
400 #define DC_DISP_MCCIF_DISPLAY0A_HYST            0x481
401 #define DC_DISP_MCCIF_DISPLAY0B_HYST            0x482
402 #define DC_DISP_MCCIF_DISPLAY0C_HYST            0x483
403 #define DC_DISP_MCCIF_DISPLAY1B_HYST            0x484
404 #define DC_DISP_DAC_CRT_CTRL                    0x4c0
405 #define DC_DISP_DISP_MISC_CONTROL               0x4c1
406 #define   UF_LINE_FLUSH                         (1 << 1)
407
408 #define DC_WIN_COLOR_PALETTE(x)                 (0x500 + (x))
409
410 #define DC_WIN_PALETTE_COLOR_EXT                0x600
411 #define DC_WIN_H_FILTER_P(x)                    (0x601 + (x))
412 #define DC_WIN_CSC_YOF                          0x611
413 #define DC_WIN_CSC_KYRGB                        0x612
414 #define DC_WIN_CSC_KUR                          0x613
415 #define DC_WIN_CSC_KVR                          0x614
416 #define DC_WIN_CSC_KUG                          0x615
417 #define DC_WIN_CSC_KVG                          0x616
418 #define DC_WIN_CSC_KUB                          0x617
419 #define DC_WIN_CSC_KVB                          0x618
420 #define DC_WIN_V_FILTER_P(x)                    (0x619 + (x))
421 #define DC_WIN_WIN_OPTIONS                      0x700
422 #define  H_DIRECTION_DECREMENT(x)       ((x) << 0)
423 #define  V_DIRECTION_DECREMENT(x)       ((x) << 2)
424 #define  WIN_SCAN_COLUMN                (1 << 4)
425 #define  COLOR_EXPAND                   (1 << 6)
426 #define  H_FILTER_ENABLE(x)             ((x) << 8)
427 #define  V_FILTER_ENABLE(x)             ((x) << 10)
428 #define  CP_ENABLE                      (1 << 16)
429 #define  CSC_ENABLE                     (1 << 18)
430 #define  DV_ENABLE                      (1 << 20)
431 #define  WIN_ENABLE                     (1 << 30)
432
433 #define DC_WIN_BYTE_SWAP                        0x701
434 #define  BYTE_SWAP_NOSWAP               0
435 #define  BYTE_SWAP_SWAP2                1
436 #define  BYTE_SWAP_SWAP4                2
437 #define  BYTE_SWAP_SWAP4HW              3
438
439 #define DC_WIN_BUFFER_CONTROL                   0x702
440 #define  BUFFER_CONTROL_HOST            0
441 #define  BUFFER_CONTROL_VI              1
442 #define  BUFFER_CONTROL_EPP             2
443 #define  BUFFER_CONTROL_MPEGE           3
444 #define  BUFFER_CONTROL_SB2D            4
445
446 #define DC_WIN_COLOR_DEPTH                      0x703
447
448 #define DC_WIN_POSITION                         0x704
449 #define  H_POSITION(x)          (((x) & 0xfff) << 0)
450 #define  V_POSITION(x)          (((x) & 0xfff) << 16)
451
452 #define DC_WIN_SIZE                             0x705
453 #define  H_SIZE(x)              (((x) & 0xfff) << 0)
454 #define  V_SIZE(x)              (((x) & 0xfff) << 16)
455
456 #define DC_WIN_PRESCALED_SIZE                   0x706
457 #define  H_PRESCALED_SIZE(x)    (((x) & 0x3fff) << 0)
458 #define  V_PRESCALED_SIZE(x)    (((x) & 0xfff) << 16)
459
460 #define DC_WIN_H_INITIAL_DDA                    0x707
461 #define DC_WIN_V_INITIAL_DDA                    0x708
462 #define DC_WIN_DDA_INCREMENT                    0x709
463 #define  H_DDA_INC(x)           (((x) & 0xffff) << 0)
464 #define  V_DDA_INC(x)           (((x) & 0xffff) << 16)
465
466 #define DC_WIN_LINE_STRIDE                      0x70a
467 #define  LINE_STRIDE(x)         (x)
468 #define  UV_LINE_STRIDE(x)      (((x) & 0xffff) << 16)
469 #define  GET_LINE_STRIDE(x)     ((x) & 0xffff)
470 #define  GET_UV_LINE_STRIDE(x)  (((x) >> 16) & 0xffff)
471
472 #define DC_WINBUF_BLEND_LAYER_CONTROL           0x716
473 #define  WIN_K1(x)                      (((x) & 0xff) << 8)
474 #define  WIN_K2(x)                      (((x) & 0xff) << 16)
475 #define  WIN_BLEND_ENABLE               (0 << 24)
476 #define  WIN_BLEND_BYPASS               (1 << 24)
477
478 #define DC_WINBUF_BLEND_MATCH_SELECT            0x717
479 #define  WIN_BLEND_FACT_SRC_COLOR_MATCH_SEL_ZERO \
480                                         (0 << 0)
481 #define  WIN_BLEND_FACT_SRC_COLOR_MATCH_SEL_ONE \
482                                         (1 << 0)
483 #define  WIN_BLEND_FACT_SRC_COLOR_MATCH_SEL_K1 \
484                                         (2 << 0)
485 #define  WIN_BLEND_FACT_SRC_COLOR_MATCH_SEL_K1_TIMES_DST \
486                                         (3 << 0)
487 #define  WIN_BLEND_FACT_SRC_COLOR_MATCH_SEL_NEG_K1_TIMES_DST \
488                                         (4 << 0)
489 #define  WIN_BLEND_FACT_SRC_COLOR_MATCH_SEL_K1_TIMES_SRC \
490                                         (5 << 0)
491 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_ZERO \
492                                         (0 << 4)
493 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_ONE \
494                                         (1 << 4)
495 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_K1 \
496                                         (2 << 4)
497 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_K2 \
498                                         (3 << 4)
499 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_K1_TIMES_DST \
500                                         (4 << 4)
501 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_NEG_K1_TIMES_DST \
502                                         (5 << 4)
503 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_NEG_K1_TIMES_SRC \
504                                         (6 << 4)
505 #define  WIN_BLEND_FACT_DST_COLOR_MATCH_SEL_NEG_K1 \
506                                         (7 << 4)
507 #define  WIN_BLEND_FACT_SRC_ALPHA_MATCH_SEL_ZERO \
508                                         (0 << 8)
509 #define  WIN_BLEND_FACT_SRC_ALPHA_MATCH_SEL_K1 \
510                                         (1 << 8)
511 #define  WIN_BLEND_FACT_SRC_ALPHA_MATCH_SEL_K2 \
512                                         (2 << 8)
513 #define  WIN_BLEND_FACT_DST_ALPHA_MATCH_SEL_ZERO \
514                                         (0 << 12)
515 #define  WIN_BLEND_FACT_DST_ALPHA_MATCH_SEL_ONE \
516                                         (1 << 12)
517 #define  WIN_BLEND_FACT_DST_ALPHA_MATCH_SEL_NEG_K1_TIMES_SRC \
518                                         (2 << 12)
519 #define  WIN_BLEND_FACT_DST_ALPHA_MATCH_SEL_K2 \
520                                         (3 << 12)
521
522 #define DC_WINBUF_BLEND_ALPHA_1BIT              0x719
523 #define  WIN_ALPHA_1BIT_WEIGHT0(x)      (((x) & 0xff) << 0)
524 #define  WIN_ALPHA_1BIT_WEIGHT1(x)      (((x) & 0xff) << 8)
525
526 #if defined(CONFIG_ARCH_TEGRA_2x_SOC) || defined(CONFIG_ARCH_TEGRA_3x_SOC)
527 #define DC_WIN_BUF_STRIDE                       0x70b
528 #define DC_WIN_UV_BUF_STRIDE                    0x70c
529 #endif
530 #define DC_WIN_BUFFER_ADDR_MODE                 0x70d
531 #define  DC_WIN_BUFFER_ADDR_MODE_LINEAR         (0 << 0)
532 #define  DC_WIN_BUFFER_ADDR_MODE_LINEAR_UV      (0 << 16)
533 #define  DC_WIN_BUFFER_ADDR_MODE_TILE           (1 << 0)
534 #define  DC_WIN_BUFFER_ADDR_MODE_TILE_UV        (1 << 16)
535 #define DC_WIN_DV_CONTROL                       0x70e
536 #define DC_WIN_BLEND_NOKEY                      0x70f
537 #define DC_WIN_BLEND_1WIN                       0x710
538 #define DC_WIN_BLEND_2WIN_X                     0x711
539 #define DC_WIN_BLEND_2WIN_Y                     0x712
540 #define DC_WIN_BLEND_3WIN_XY                    0x713
541 #define  CKEY_NOKEY                     (0 << 0)
542 #define  CKEY_KEY0                      (1 << 0)
543 #define  CKEY_KEY1                      (2 << 0)
544 #define  CKEY_KEY01                     (3 << 0)
545 #define  BLEND_CONTROL_FIX              (0 << 2)
546 #define  BLEND_CONTROL_ALPHA            (1 << 2)
547 #define  BLEND_CONTROL_DEPENDANT        (2 << 2)
548 #define  BLEND_CONTROL_PREMULT          (3 << 2)
549 #define  BLEND_WEIGHT0(x)               (((x) & 0xff) << 8)
550 #define  BLEND_WEIGHT1(x)               (((x) & 0xff) << 16)
551 #define  BLEND(key, control, weight0, weight1)                  \
552           (CKEY_ ## key | BLEND_CONTROL_ ## control |           \
553            BLEND_WEIGHT0(weight0) | BLEND_WEIGHT1(weight1))
554
555
556 #define DC_WIN_HP_FETCH_CONTROL                 0x714
557
558 #if defined(CONFIG_ARCH_TEGRA_3x_SOC) || defined(CONFIG_ARCH_TEGRA_11x_SOC)
559 #define DC_WIN_GLOBAL_ALPHA                     0x715
560 #define  GLOBAL_ALPHA_ENABLE            0x10000
561 #endif
562
563 #define DC_WINBUF_START_ADDR                    0x800
564 #define DC_WINBUF_START_ADDR_NS                 0x801
565 #define DC_WINBUF_START_ADDR_U                  0x802
566 #define DC_WINBUF_START_ADDR_U_NS               0x803
567 #define DC_WINBUF_START_ADDR_V                  0x804
568 #define DC_WINBUF_START_ADDR_V_NS               0x805
569 #define DC_WINBUF_ADDR_H_OFFSET                 0x806
570 #define DC_WINBUF_ADDR_H_OFFSET_NS              0x807
571 #define DC_WINBUF_ADDR_V_OFFSET                 0x808
572 #define DC_WINBUF_ADDR_V_OFFSET_NS              0x809
573 #define DC_WINBUF_UFLOW_STATUS                  0x80a
574
575 /* direct versions of DC_WINBUF_UFLOW_STATUS */
576 #define DC_WINBUF_AD_UFLOW_STATUS               0xbca
577 #define DC_WINBUF_BD_UFLOW_STATUS               0xdca
578 #define DC_WINBUF_CD_UFLOW_STATUS               0xfca
579
580 #define DC_DISP_SD_CONTROL                      0x4c2
581 #define  SD_ENABLE_NORMAL               (1 << 0)
582 #define  SD_ENABLE_ONESHOT              (2 << 0)
583 #define  SD_USE_VID_LUMA                (1 << 2)
584 #define  SD_BIN_WIDTH(x)                (((x) & 0x3) << 3)
585 #define  SD_BIN_WIDTH_ONE               (0 << 3)
586 #define  SD_BIN_WIDTH_TWO               (1 << 3)
587 #define  SD_BIN_WIDTH_FOUR              (2 << 3)
588 #define  SD_BIN_WIDTH_EIGHT             (3 << 3)
589 #define  SD_BIN_WIDTH_MASK              (3 << 3)
590 #define  SD_AGGRESSIVENESS(x)           (((x) & 0x7) << 5)
591 #define  SD_HW_UPDATE_DLY(x)            (((x) & 0x3) << 8)
592 #define  SD_ONESHOT_ENABLE              (1 << 10)
593 #define  SD_CORRECTION_MODE_AUTO        (0 << 11)
594 #define  SD_CORRECTION_MODE_MAN         (1 << 11)
595 #define  SD_K_LIMIT_ENABLE              (1 << 12)
596 #define  SD_WINDOW_ENABLE               (1 << 13)
597 #define  SD_SOFT_CLIPPING_ENABLE        (1 << 14)
598 #define  SD_SMOOTH_K_ENABLE             (1 << 15)
599 #define  SD_VSYNC                       (0 << 28)
600 #define  SD_VPULSE2                     (1 << 28)
601
602 #define NUM_BIN_WIDTHS 4
603 #define STEPS_PER_AGG_LVL 64
604 #define STEPS_PER_AGG_CHG_LOG2 5
605 #define STEPS_PER_AGG_CHG (1<<STEPS_PER_AGG_CHG_LOG2)
606 #define ADJ_PHASE_STEP 8
607 #define K_STEP 4
608
609 #define DC_DISP_SD_CSC_COEFF                    0x4c3
610 #define  SD_CSC_COEFF_R(x)              (((x) & 0xf) << 4)
611 #define  SD_CSC_COEFF_G(x)              (((x) & 0xf) << 12)
612 #define  SD_CSC_COEFF_B(x)              (((x) & 0xf) << 20)
613
614 #define DC_DISP_SD_LUT(i)                       (0x4c4 + i)
615 #define DC_DISP_SD_LUT_NUM                      9
616 #define  SD_LUT_R(x)                    (((x) & 0xff) << 0)
617 #define  SD_LUT_G(x)                    (((x) & 0xff) << 8)
618 #define  SD_LUT_B(x)                    (((x) & 0xff) << 16)
619
620 #define DC_DISP_SD_FLICKER_CONTROL              0x4cd
621 #define  SD_FC_TIME_LIMIT(x)            (((x) & 0xff) << 0)
622 #define  SD_FC_THRESHOLD(x)             (((x) & 0xff) << 8)
623
624 #define DC_DISP_SD_PIXEL_COUNT                  0x4ce
625
626 #define DC_DISP_SD_HISTOGRAM(i)                 (0x4cf + i)
627 #define DC_DISP_SD_HISTOGRAM_NUM                8
628 #define  SD_HISTOGRAM_BIN(val, offset)  ((val >> offset) & 0xff)
629 #define  SD_HISTOGRAM_BIN_0(val)        (((val) & (0xff << 0)) >> 0)
630 #define  SD_HISTOGRAM_BIN_1(val)        (((val) & (0xff << 8)) >> 8)
631 #define  SD_HISTOGRAM_BIN_2(val)        (((val) & (0xff << 16)) >> 16)
632 #define  SD_HISTOGRAM_BIN_3(val)        (((val) & (0xff << 24)) >> 24)
633
634 #define DC_DISP_SD_BL_PARAMETERS                0x4d7
635 #define  SD_BLP_TIME_CONSTANT(x)        (((x) & 0x7ff) << 0)
636 #define  SD_BLP_STEP(x)                 (((x) & 0xff) << 16)
637
638 #define DC_DISP_SD_BL_TF(i)                     (0x4d8 + i)
639 #define DC_DISP_SD_BL_TF_NUM                    4
640 #define  SD_BL_TF_POINT_0(x)            (((x) & 0xff) << 0)
641 #define  SD_BL_TF_POINT_1(x)            (((x) & 0xff) << 8)
642 #define  SD_BL_TF_POINT_2(x)            (((x) & 0xff) << 16)
643 #define  SD_BL_TF_POINT_3(x)            (((x) & 0xff) << 24)
644
645 #define DC_DISP_SD_BL_CONTROL                   0x4dc
646 #define  SD_BLC_MODE_MAN                (0 << 0)
647 #define  SD_BLC_MODE_AUTO               (1 << 1)
648 #define  SD_BLC_BRIGHTNESS(val)         (((val) & (0xff << 8)) >> 8)
649
650 #define DC_DISP_SD_HW_K_VALUES                  0x4dd
651 #define  SD_HW_K_R(val)                 (((val) & (0x3ff << 0)) >> 0)
652 #define  SD_HW_K_G(val)                 (((val) & (0x3ff << 10)) >> 10)
653 #define  SD_HW_K_B(val)                 (((val) & (0x3ff << 20)) >> 20)
654
655 #define DC_DISP_SD_MAN_K_VALUES                 0x4de
656 #define  SD_MAN_K_R(x)                  (((x) & 0x3ff) << 0)
657 #define  SD_MAN_K_G(x)                  (((x) & 0x3ff) << 10)
658 #define  SD_MAN_K_B(x)                  (((x) & 0x3ff) << 20)
659
660 #define DC_DISP_SD_K_LIMIT                      0x4df
661 #define  SD_K_LIMIT(x)                  (((x) & 0x3ff) << 0)
662
663 #define DC_DISP_SD_WINDOW_POSITION              0x4e0
664 #define  SD_WIN_H_POSITION(x)           (((x) & 0x1fff) << 0)
665 #define  SD_WIN_V_POSITION(x)           (((x) & 0x1fff) << 16)
666
667 #define DC_DISP_SD_WINDOW_SIZE                  0x4e1
668 #define  SD_WIN_H_SIZE(x)               (((x) & 0x1fff) << 0)
669 #define  SD_WIN_V_SIZE(x)               (((x) & 0x1fff) << 16)
670
671 #define DC_DISP_SD_SOFT_CLIPPING                0x4e2
672 #define  SD_SOFT_CLIPPING_THRESHOLD(x)  (((x) & 0xff) << 0)
673 #define  SD_SOFT_CLIPPING_RECIP(x)      (((x) & 0xffff) << 16)
674
675 #define DC_DISP_SD_SMOOTH_K                     0x4e3
676 #define  SD_SMOOTH_K_INCR(x)            (((x) & 0x3fff) << 0)
677
678 #define  NUM_AGG_PRI_LVLS               4
679 #define  SD_AGG_PRI_LVL(x)              ((x) >> 3)
680 #define  SD_GET_AGG(x)                  ((x) & 0x7)
681
682 #define DC_DISP_BLEND_CURSOR_CONTROL            0x4f1
683 #define  CURSOR_MODE_SELECT(x)          (((x) & 0x1) << 24)
684
685 #endif