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