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