Loading...
1/*
2 * Copyright (C) 2012 Russell King
3 * Rewritten from the dovefb driver, and Armada510 manuals.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9#ifndef ARMADA_HW_H
10#define ARMADA_HW_H
11
12/*
13 * Note: the following registers are written from IRQ context:
14 * LCD_SPU_V_PORCH, LCD_SPU_ADV_REG, LCD_SPUT_V_H_TOTAL
15 * LCD_SPU_DMA_START_ADDR_[YUV][01], LCD_SPU_DMA_PITCH_YC,
16 * LCD_SPU_DMA_PITCH_UV, LCD_SPU_DMA_OVSA_HPXL_VLN,
17 * LCD_SPU_DMA_HPXL_VLN, LCD_SPU_DZM_HPXL_VLN, LCD_SPU_DMA_CTRL0
18 */
19enum {
20 LCD_SPU_ADV_REG = 0x0084, /* Armada 510 */
21 LCD_SPU_DMA_START_ADDR_Y0 = 0x00c0,
22 LCD_SPU_DMA_START_ADDR_U0 = 0x00c4,
23 LCD_SPU_DMA_START_ADDR_V0 = 0x00c8,
24 LCD_CFG_DMA_START_ADDR_0 = 0x00cc,
25 LCD_SPU_DMA_START_ADDR_Y1 = 0x00d0,
26 LCD_SPU_DMA_START_ADDR_U1 = 0x00d4,
27 LCD_SPU_DMA_START_ADDR_V1 = 0x00d8,
28 LCD_CFG_DMA_START_ADDR_1 = 0x00dc,
29 LCD_SPU_DMA_PITCH_YC = 0x00e0,
30 LCD_SPU_DMA_PITCH_UV = 0x00e4,
31 LCD_SPU_DMA_OVSA_HPXL_VLN = 0x00e8,
32 LCD_SPU_DMA_HPXL_VLN = 0x00ec,
33 LCD_SPU_DZM_HPXL_VLN = 0x00f0,
34 LCD_CFG_GRA_START_ADDR0 = 0x00f4,
35 LCD_CFG_GRA_START_ADDR1 = 0x00f8,
36 LCD_CFG_GRA_PITCH = 0x00fc,
37 LCD_SPU_GRA_OVSA_HPXL_VLN = 0x0100,
38 LCD_SPU_GRA_HPXL_VLN = 0x0104,
39 LCD_SPU_GZM_HPXL_VLN = 0x0108,
40 LCD_SPU_HWC_OVSA_HPXL_VLN = 0x010c,
41 LCD_SPU_HWC_HPXL_VLN = 0x0110,
42 LCD_SPUT_V_H_TOTAL = 0x0114,
43 LCD_SPU_V_H_ACTIVE = 0x0118,
44 LCD_SPU_H_PORCH = 0x011c,
45 LCD_SPU_V_PORCH = 0x0120,
46 LCD_SPU_BLANKCOLOR = 0x0124,
47 LCD_SPU_ALPHA_COLOR1 = 0x0128,
48 LCD_SPU_ALPHA_COLOR2 = 0x012c,
49 LCD_SPU_COLORKEY_Y = 0x0130,
50 LCD_SPU_COLORKEY_U = 0x0134,
51 LCD_SPU_COLORKEY_V = 0x0138,
52 LCD_CFG_RDREG4F = 0x013c, /* Armada 510 */
53 LCD_SPU_SPI_RXDATA = 0x0140,
54 LCD_SPU_ISA_RXDATA = 0x0144,
55 LCD_SPU_HWC_RDDAT = 0x0158,
56 LCD_SPU_GAMMA_RDDAT = 0x015c,
57 LCD_SPU_PALETTE_RDDAT = 0x0160,
58 LCD_SPU_IOPAD_IN = 0x0178,
59 LCD_CFG_RDREG5F = 0x017c,
60 LCD_SPU_SPI_CTRL = 0x0180,
61 LCD_SPU_SPI_TXDATA = 0x0184,
62 LCD_SPU_SMPN_CTRL = 0x0188,
63 LCD_SPU_DMA_CTRL0 = 0x0190,
64 LCD_SPU_DMA_CTRL1 = 0x0194,
65 LCD_SPU_SRAM_CTRL = 0x0198,
66 LCD_SPU_SRAM_WRDAT = 0x019c,
67 LCD_SPU_SRAM_PARA0 = 0x01a0, /* Armada 510 */
68 LCD_SPU_SRAM_PARA1 = 0x01a4,
69 LCD_CFG_SCLK_DIV = 0x01a8,
70 LCD_SPU_CONTRAST = 0x01ac,
71 LCD_SPU_SATURATION = 0x01b0,
72 LCD_SPU_CBSH_HUE = 0x01b4,
73 LCD_SPU_DUMB_CTRL = 0x01b8,
74 LCD_SPU_IOPAD_CONTROL = 0x01bc,
75 LCD_SPU_IRQ_ENA = 0x01c0,
76 LCD_SPU_IRQ_ISR = 0x01c4,
77};
78
79/* For LCD_SPU_ADV_REG */
80enum {
81 ADV_VSYNC_L_OFF = 0xfff << 20,
82 ADV_GRACOLORKEY = 1 << 19,
83 ADV_VIDCOLORKEY = 1 << 18,
84 ADV_HWC32BLEND = 1 << 15,
85 ADV_HWC32ARGB = 1 << 14,
86 ADV_HWC32ENABLE = 1 << 13,
87 ADV_VSYNCOFFEN = 1 << 12,
88 ADV_VSYNC_H_OFF = 0xfff << 0,
89};
90
91enum {
92 CFG_565 = 0,
93 CFG_1555 = 1,
94 CFG_888PACK = 2,
95 CFG_X888 = 3,
96 CFG_8888 = 4,
97 CFG_422PACK = 5,
98 CFG_422 = 6,
99 CFG_420 = 7,
100 CFG_PSEUDO4 = 9,
101 CFG_PSEUDO8 = 10,
102 CFG_SWAPRB = 1 << 4,
103 CFG_SWAPUV = 1 << 3,
104 CFG_SWAPYU = 1 << 2,
105 CFG_YUV2RGB = 1 << 1,
106};
107
108/* For LCD_SPU_DMA_CTRL0 */
109enum {
110 CFG_NOBLENDING = 1 << 31,
111 CFG_GAMMA_ENA = 1 << 30,
112 CFG_CBSH_ENA = 1 << 29,
113 CFG_PALETTE_ENA = 1 << 28,
114 CFG_ARBFAST_ENA = 1 << 27,
115 CFG_HWC_1BITMOD = 1 << 26,
116 CFG_HWC_1BITENA = 1 << 25,
117 CFG_HWC_ENA = 1 << 24,
118 CFG_DMAFORMAT = 0xf << 20,
119#define CFG_DMA_FMT(x) ((x) << 20)
120 CFG_GRAFORMAT = 0xf << 16,
121#define CFG_GRA_FMT(x) ((x) << 16)
122#define CFG_GRA_MOD(x) ((x) << 8)
123 CFG_GRA_FTOGGLE = 1 << 15,
124 CFG_GRA_HSMOOTH = 1 << 14,
125 CFG_GRA_TSTMODE = 1 << 13,
126 CFG_GRA_ENA = 1 << 8,
127#define CFG_DMA_MOD(x) ((x) << 0)
128 CFG_DMA_FTOGGLE = 1 << 7,
129 CFG_DMA_HSMOOTH = 1 << 6,
130 CFG_DMA_TSTMODE = 1 << 5,
131 CFG_DMA_ENA = 1 << 0,
132};
133
134enum {
135 CKMODE_DISABLE = 0,
136 CKMODE_Y = 1,
137 CKMODE_U = 2,
138 CKMODE_RGB = 3,
139 CKMODE_V = 4,
140 CKMODE_R = 5,
141 CKMODE_G = 6,
142 CKMODE_B = 7,
143};
144
145/* For LCD_SPU_DMA_CTRL1 */
146enum {
147 CFG_FRAME_TRIG = 1 << 31,
148 CFG_VSYNC_INV = 1 << 27,
149 CFG_CKMODE_MASK = 0x7 << 24,
150#define CFG_CKMODE(x) ((x) << 24)
151 CFG_CARRY = 1 << 23,
152 CFG_GATED_CLK = 1 << 21,
153 CFG_PWRDN_ENA = 1 << 20,
154 CFG_DSCALE_MASK = 0x3 << 18,
155 CFG_DSCALE_NONE = 0x0 << 18,
156 CFG_DSCALE_HALF = 0x1 << 18,
157 CFG_DSCALE_QUAR = 0x2 << 18,
158 CFG_ALPHAM_MASK = 0x3 << 16,
159 CFG_ALPHAM_VIDEO = 0x0 << 16,
160 CFG_ALPHAM_GRA = 0x1 << 16,
161 CFG_ALPHAM_CFG = 0x2 << 16,
162 CFG_ALPHA_MASK = 0xff << 8,
163 CFG_PIXCMD_MASK = 0xff,
164};
165
166/* For LCD_SPU_SRAM_CTRL */
167enum {
168 SRAM_READ = 0 << 14,
169 SRAM_WRITE = 2 << 14,
170 SRAM_INIT = 3 << 14,
171 SRAM_HWC32_RAM1 = 0xc << 8,
172 SRAM_HWC32_RAM2 = 0xd << 8,
173 SRAM_HWC32_RAMR = SRAM_HWC32_RAM1,
174 SRAM_HWC32_RAMG = SRAM_HWC32_RAM2,
175 SRAM_HWC32_RAMB = 0xe << 8,
176 SRAM_HWC32_TRAN = 0xf << 8,
177 SRAM_HWC = 0xf << 8,
178};
179
180/* For LCD_SPU_SRAM_PARA1 */
181enum {
182 CFG_CSB_256x32 = 1 << 15, /* cursor */
183 CFG_CSB_256x24 = 1 << 14, /* palette */
184 CFG_CSB_256x8 = 1 << 13, /* gamma */
185 CFG_PDWN1920x32 = 1 << 8, /* Armada 510: power down vscale ram */
186 CFG_PDWN256x32 = 1 << 7, /* power down cursor */
187 CFG_PDWN256x24 = 1 << 6, /* power down palette */
188 CFG_PDWN256x8 = 1 << 5, /* power down gamma */
189 CFG_PDWNHWC = 1 << 4, /* Armada 510: power down all hwc ram */
190 CFG_PDWN32x32 = 1 << 3, /* power down slave->smart ram */
191 CFG_PDWN16x66 = 1 << 2, /* power down UV fifo */
192 CFG_PDWN32x66 = 1 << 1, /* power down Y fifo */
193 CFG_PDWN64x66 = 1 << 0, /* power down graphic fifo */
194};
195
196/* For LCD_CFG_SCLK_DIV */
197enum {
198 /* Armada 510 */
199 SCLK_510_AXI = 0x0 << 30,
200 SCLK_510_EXTCLK0 = 0x1 << 30,
201 SCLK_510_PLL = 0x2 << 30,
202 SCLK_510_EXTCLK1 = 0x3 << 30,
203 SCLK_510_DIV_CHANGE = 1 << 29,
204 SCLK_510_FRAC_DIV_MASK = 0xfff << 16,
205 SCLK_510_INT_DIV_MASK = 0xffff << 0,
206
207 /* Armada 16x */
208 SCLK_16X_AHB = 0x0 << 28,
209 SCLK_16X_PCLK = 0x1 << 28,
210 SCLK_16X_AXI = 0x4 << 28,
211 SCLK_16X_PLL = 0x8 << 28,
212 SCLK_16X_FRAC_DIV_MASK = 0xfff << 16,
213 SCLK_16X_INT_DIV_MASK = 0xffff << 0,
214};
215
216/* For LCD_SPU_DUMB_CTRL */
217enum {
218 DUMB16_RGB565_0 = 0x0 << 28,
219 DUMB16_RGB565_1 = 0x1 << 28,
220 DUMB18_RGB666_0 = 0x2 << 28,
221 DUMB18_RGB666_1 = 0x3 << 28,
222 DUMB12_RGB444_0 = 0x4 << 28,
223 DUMB12_RGB444_1 = 0x5 << 28,
224 DUMB24_RGB888_0 = 0x6 << 28,
225 DUMB_BLANK = 0x7 << 28,
226 DUMB_MASK = 0xf << 28,
227 CFG_BIAS_OUT = 1 << 8,
228 CFG_REV_RGB = 1 << 7,
229 CFG_INV_CBLANK = 1 << 6,
230 CFG_INV_CSYNC = 1 << 5, /* Normally active high */
231 CFG_INV_HENA = 1 << 4,
232 CFG_INV_VSYNC = 1 << 3, /* Normally active high */
233 CFG_INV_HSYNC = 1 << 2, /* Normally active high */
234 CFG_INV_PCLK = 1 << 1,
235 CFG_DUMB_ENA = 1 << 0,
236};
237
238/* For LCD_SPU_IOPAD_CONTROL */
239enum {
240 CFG_VSCALE_LN_EN = 3 << 18,
241 CFG_GRA_VM_ENA = 1 << 15,
242 CFG_DMA_VM_ENA = 1 << 13,
243 CFG_CMD_VM_ENA = 1 << 11,
244 CFG_CSC_MASK = 3 << 8,
245 CFG_CSC_YUV_CCIR709 = 1 << 9,
246 CFG_CSC_YUV_CCIR601 = 0 << 9,
247 CFG_CSC_RGB_STUDIO = 1 << 8,
248 CFG_CSC_RGB_COMPUTER = 0 << 8,
249 CFG_IOPAD_MASK = 0xf << 0,
250 CFG_IOPAD_DUMB24 = 0x0 << 0,
251 CFG_IOPAD_DUMB18SPI = 0x1 << 0,
252 CFG_IOPAD_DUMB18GPIO = 0x2 << 0,
253 CFG_IOPAD_DUMB16SPI = 0x3 << 0,
254 CFG_IOPAD_DUMB16GPIO = 0x4 << 0,
255 CFG_IOPAD_DUMB12GPIO = 0x5 << 0,
256 CFG_IOPAD_SMART18 = 0x6 << 0,
257 CFG_IOPAD_SMART16 = 0x7 << 0,
258 CFG_IOPAD_SMART8 = 0x8 << 0,
259};
260
261#define IOPAD_DUMB24 0x0
262
263/* For LCD_SPU_IRQ_ENA */
264enum {
265 DMA_FRAME_IRQ0_ENA = 1 << 31,
266 DMA_FRAME_IRQ1_ENA = 1 << 30,
267 DMA_FRAME_IRQ_ENA = DMA_FRAME_IRQ0_ENA | DMA_FRAME_IRQ1_ENA,
268 DMA_FF_UNDERFLOW_ENA = 1 << 29,
269 GRA_FRAME_IRQ0_ENA = 1 << 27,
270 GRA_FRAME_IRQ1_ENA = 1 << 26,
271 GRA_FRAME_IRQ_ENA = GRA_FRAME_IRQ0_ENA | GRA_FRAME_IRQ1_ENA,
272 GRA_FF_UNDERFLOW_ENA = 1 << 25,
273 VSYNC_IRQ_ENA = 1 << 23,
274 DUMB_FRAMEDONE_ENA = 1 << 22,
275 TWC_FRAMEDONE_ENA = 1 << 21,
276 HWC_FRAMEDONE_ENA = 1 << 20,
277 SLV_IRQ_ENA = 1 << 19,
278 SPI_IRQ_ENA = 1 << 18,
279 PWRDN_IRQ_ENA = 1 << 17,
280 ERR_IRQ_ENA = 1 << 16,
281 CLEAN_SPU_IRQ_ISR = 0xffff,
282};
283
284/* For LCD_SPU_IRQ_ISR */
285enum {
286 DMA_FRAME_IRQ0 = 1 << 31,
287 DMA_FRAME_IRQ1 = 1 << 30,
288 DMA_FRAME_IRQ = DMA_FRAME_IRQ0 | DMA_FRAME_IRQ1,
289 DMA_FF_UNDERFLOW = 1 << 29,
290 GRA_FRAME_IRQ0 = 1 << 27,
291 GRA_FRAME_IRQ1 = 1 << 26,
292 GRA_FRAME_IRQ = GRA_FRAME_IRQ0 | GRA_FRAME_IRQ1,
293 GRA_FF_UNDERFLOW = 1 << 25,
294 VSYNC_IRQ = 1 << 23,
295 DUMB_FRAMEDONE = 1 << 22,
296 TWC_FRAMEDONE = 1 << 21,
297 HWC_FRAMEDONE = 1 << 20,
298 SLV_IRQ = 1 << 19,
299 SPI_IRQ = 1 << 18,
300 PWRDN_IRQ = 1 << 17,
301 ERR_IRQ = 1 << 16,
302 DMA_FRAME_IRQ0_LEVEL = 1 << 15,
303 DMA_FRAME_IRQ1_LEVEL = 1 << 14,
304 DMA_FRAME_CNT_ISR = 3 << 12,
305 GRA_FRAME_IRQ0_LEVEL = 1 << 11,
306 GRA_FRAME_IRQ1_LEVEL = 1 << 10,
307 GRA_FRAME_CNT_ISR = 3 << 8,
308 VSYNC_IRQ_LEVEL = 1 << 7,
309 DUMB_FRAMEDONE_LEVEL = 1 << 6,
310 TWC_FRAMEDONE_LEVEL = 1 << 5,
311 HWC_FRAMEDONE_LEVEL = 1 << 4,
312 SLV_FF_EMPTY = 1 << 3,
313 DMA_FF_ALLEMPTY = 1 << 2,
314 GRA_FF_ALLEMPTY = 1 << 1,
315 PWRDN_IRQ_LEVEL = 1 << 0,
316};
317
318#endif
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2012 Russell King
4 * Rewritten from the dovefb driver, and Armada510 manuals.
5 */
6#ifndef ARMADA_HW_H
7#define ARMADA_HW_H
8
9/*
10 * Note: the following registers are written from IRQ context:
11 * LCD_SPU_V_PORCH, LCD_SPU_ADV_REG, LCD_SPUT_V_H_TOTAL
12 * LCD_SPU_DMA_START_ADDR_[YUV][01], LCD_SPU_DMA_PITCH_YC,
13 * LCD_SPU_DMA_PITCH_UV, LCD_SPU_DMA_OVSA_HPXL_VLN,
14 * LCD_SPU_DMA_HPXL_VLN, LCD_SPU_DZM_HPXL_VLN, LCD_SPU_DMA_CTRL0
15 */
16enum {
17 LCD_SPU_ADV_REG = 0x0084, /* Armada 510 */
18 LCD_SPU_DMA_START_ADDR_Y0 = 0x00c0,
19 LCD_SPU_DMA_START_ADDR_U0 = 0x00c4,
20 LCD_SPU_DMA_START_ADDR_V0 = 0x00c8,
21 LCD_CFG_DMA_START_ADDR_0 = 0x00cc,
22 LCD_SPU_DMA_START_ADDR_Y1 = 0x00d0,
23 LCD_SPU_DMA_START_ADDR_U1 = 0x00d4,
24 LCD_SPU_DMA_START_ADDR_V1 = 0x00d8,
25 LCD_CFG_DMA_START_ADDR_1 = 0x00dc,
26 LCD_SPU_DMA_PITCH_YC = 0x00e0,
27 LCD_SPU_DMA_PITCH_UV = 0x00e4,
28 LCD_SPU_DMA_OVSA_HPXL_VLN = 0x00e8,
29 LCD_SPU_DMA_HPXL_VLN = 0x00ec,
30 LCD_SPU_DZM_HPXL_VLN = 0x00f0,
31 LCD_CFG_GRA_START_ADDR0 = 0x00f4,
32 LCD_CFG_GRA_START_ADDR1 = 0x00f8,
33 LCD_CFG_GRA_PITCH = 0x00fc,
34 LCD_SPU_GRA_OVSA_HPXL_VLN = 0x0100,
35 LCD_SPU_GRA_HPXL_VLN = 0x0104,
36 LCD_SPU_GZM_HPXL_VLN = 0x0108,
37 LCD_SPU_HWC_OVSA_HPXL_VLN = 0x010c,
38 LCD_SPU_HWC_HPXL_VLN = 0x0110,
39 LCD_SPUT_V_H_TOTAL = 0x0114,
40 LCD_SPU_V_H_ACTIVE = 0x0118,
41 LCD_SPU_H_PORCH = 0x011c,
42 LCD_SPU_V_PORCH = 0x0120,
43 LCD_SPU_BLANKCOLOR = 0x0124,
44 LCD_SPU_ALPHA_COLOR1 = 0x0128,
45 LCD_SPU_ALPHA_COLOR2 = 0x012c,
46 LCD_SPU_COLORKEY_Y = 0x0130,
47 LCD_SPU_COLORKEY_U = 0x0134,
48 LCD_SPU_COLORKEY_V = 0x0138,
49 LCD_CFG_RDREG4F = 0x013c, /* Armada 510 */
50 LCD_SPU_SPI_RXDATA = 0x0140,
51 LCD_SPU_ISA_RXDATA = 0x0144,
52 LCD_SPU_HWC_RDDAT = 0x0158,
53 LCD_SPU_GAMMA_RDDAT = 0x015c,
54 LCD_SPU_PALETTE_RDDAT = 0x0160,
55 LCD_SPU_IOPAD_IN = 0x0178,
56 LCD_CFG_RDREG5F = 0x017c,
57 LCD_SPU_SPI_CTRL = 0x0180,
58 LCD_SPU_SPI_TXDATA = 0x0184,
59 LCD_SPU_SMPN_CTRL = 0x0188,
60 LCD_SPU_DMA_CTRL0 = 0x0190,
61 LCD_SPU_DMA_CTRL1 = 0x0194,
62 LCD_SPU_SRAM_CTRL = 0x0198,
63 LCD_SPU_SRAM_WRDAT = 0x019c,
64 LCD_SPU_SRAM_PARA0 = 0x01a0, /* Armada 510 */
65 LCD_SPU_SRAM_PARA1 = 0x01a4,
66 LCD_CFG_SCLK_DIV = 0x01a8,
67 LCD_SPU_CONTRAST = 0x01ac,
68 LCD_SPU_SATURATION = 0x01b0,
69 LCD_SPU_CBSH_HUE = 0x01b4,
70 LCD_SPU_DUMB_CTRL = 0x01b8,
71 LCD_SPU_IOPAD_CONTROL = 0x01bc,
72 LCD_SPU_IRQ_ENA = 0x01c0,
73 LCD_SPU_IRQ_ISR = 0x01c4,
74};
75
76/* For LCD_SPU_ADV_REG */
77enum {
78 ADV_VSYNC_L_OFF = 0xfff << 20,
79 ADV_GRACOLORKEY = 1 << 19,
80 ADV_VIDCOLORKEY = 1 << 18,
81 ADV_HWC32BLEND = 1 << 15,
82 ADV_HWC32ARGB = 1 << 14,
83 ADV_HWC32ENABLE = 1 << 13,
84 ADV_VSYNCOFFEN = 1 << 12,
85 ADV_VSYNC_H_OFF = 0xfff << 0,
86};
87
88/* LCD_CFG_RDREG4F - Armada 510 only */
89enum {
90 CFG_SRAM_WAIT = BIT(11),
91 CFG_SMPN_FASTTX = BIT(10),
92 CFG_DMA_ARB = BIT(9),
93 CFG_DMA_WM_EN = BIT(8),
94 CFG_DMA_WM_MASK = 0xff,
95#define CFG_DMA_WM(x) ((x) & CFG_DMA_WM_MASK)
96};
97
98enum {
99 CFG_565 = 0,
100 CFG_1555 = 1,
101 CFG_888PACK = 2,
102 CFG_X888 = 3,
103 CFG_8888 = 4,
104 CFG_422PACK = 5,
105 CFG_422 = 6,
106 CFG_420 = 7,
107 CFG_PSEUDO4 = 9,
108 CFG_PSEUDO8 = 10,
109 CFG_SWAPRB = 1 << 4,
110 CFG_SWAPUV = 1 << 3,
111 CFG_SWAPYU = 1 << 2,
112 CFG_YUV2RGB = 1 << 1,
113};
114
115/* For LCD_SPU_DMA_CTRL0 */
116enum {
117 CFG_NOBLENDING = 1 << 31,
118 CFG_GAMMA_ENA = 1 << 30,
119 CFG_CBSH_ENA = 1 << 29,
120 CFG_PALETTE_ENA = 1 << 28,
121 CFG_ARBFAST_ENA = 1 << 27,
122 CFG_HWC_1BITMOD = 1 << 26,
123 CFG_HWC_1BITENA = 1 << 25,
124 CFG_HWC_ENA = 1 << 24,
125 CFG_DMAFORMAT = 0xf << 20,
126#define CFG_DMA_FMT(x) ((x) << 20)
127 CFG_GRAFORMAT = 0xf << 16,
128#define CFG_GRA_FMT(x) ((x) << 16)
129#define CFG_GRA_MOD(x) ((x) << 8)
130 CFG_GRA_FTOGGLE = 1 << 15,
131 CFG_GRA_HSMOOTH = 1 << 14,
132 CFG_GRA_TSTMODE = 1 << 13,
133 CFG_GRA_ENA = 1 << 8,
134#define CFG_DMA_MOD(x) ((x) << 0)
135 CFG_DMA_FTOGGLE = 1 << 7,
136 CFG_DMA_HSMOOTH = 1 << 6,
137 CFG_DMA_TSTMODE = 1 << 5,
138 CFG_DMA_ENA = 1 << 0,
139};
140
141enum {
142 CKMODE_DISABLE = 0,
143 CKMODE_Y = 1,
144 CKMODE_U = 2,
145 CKMODE_RGB = 3,
146 CKMODE_V = 4,
147 CKMODE_R = 5,
148 CKMODE_G = 6,
149 CKMODE_B = 7,
150};
151
152/* For LCD_SPU_DMA_CTRL1 */
153enum {
154 CFG_FRAME_TRIG = 1 << 31,
155 CFG_VSYNC_INV = 1 << 27,
156 CFG_CKMODE_MASK = 0x7 << 24,
157#define CFG_CKMODE(x) ((x) << 24)
158 CFG_CARRY = 1 << 23,
159 CFG_GATED_CLK = 1 << 21,
160 CFG_PWRDN_ENA = 1 << 20,
161 CFG_DSCALE_MASK = 0x3 << 18,
162 CFG_DSCALE_NONE = 0x0 << 18,
163 CFG_DSCALE_HALF = 0x1 << 18,
164 CFG_DSCALE_QUAR = 0x2 << 18,
165 CFG_ALPHAM_MASK = 0x3 << 16,
166 CFG_ALPHAM_VIDEO = 0x0 << 16,
167 CFG_ALPHAM_GRA = 0x1 << 16,
168 CFG_ALPHAM_CFG = 0x2 << 16,
169 CFG_ALPHA_MASK = 0xff << 8,
170#define CFG_ALPHA(x) ((x) << 8)
171 CFG_PIXCMD_MASK = 0xff,
172};
173
174/* For LCD_SPU_SRAM_CTRL */
175enum {
176 SRAM_READ = 0 << 14,
177 SRAM_WRITE = 2 << 14,
178 SRAM_INIT = 3 << 14,
179 SRAM_GAMMA_YR = 0x0 << 8,
180 SRAM_GAMMA_UG = 0x1 << 8,
181 SRAM_GAMMA_VB = 0x2 << 8,
182 SRAM_PALETTE = 0x3 << 8,
183 SRAM_HWC32_RAM1 = 0xc << 8,
184 SRAM_HWC32_RAM2 = 0xd << 8,
185 SRAM_HWC32_RAMR = SRAM_HWC32_RAM1,
186 SRAM_HWC32_RAMG = SRAM_HWC32_RAM2,
187 SRAM_HWC32_RAMB = 0xe << 8,
188 SRAM_HWC32_TRAN = 0xf << 8,
189 SRAM_HWC = 0xf << 8,
190};
191
192/* For LCD_SPU_SRAM_PARA1 */
193enum {
194 CFG_CSB_256x32 = 1 << 15, /* cursor */
195 CFG_CSB_256x24 = 1 << 14, /* palette */
196 CFG_CSB_256x8 = 1 << 13, /* gamma */
197 CFG_PDWN1920x32 = 1 << 8, /* Armada 510: power down vscale ram */
198 CFG_PDWN256x32 = 1 << 7, /* power down cursor */
199 CFG_PDWN256x24 = 1 << 6, /* power down palette */
200 CFG_PDWN256x8 = 1 << 5, /* power down gamma */
201 CFG_PDWNHWC = 1 << 4, /* Armada 510: power down all hwc ram */
202 CFG_PDWN32x32 = 1 << 3, /* power down slave->smart ram */
203 CFG_PDWN16x66 = 1 << 2, /* power down UV fifo */
204 CFG_PDWN32x66 = 1 << 1, /* power down Y fifo */
205 CFG_PDWN64x66 = 1 << 0, /* power down graphic fifo */
206};
207
208/* For LCD_CFG_SCLK_DIV */
209enum {
210 /* Armada 510 */
211 SCLK_510_AXI = 0x0 << 30,
212 SCLK_510_EXTCLK0 = 0x1 << 30,
213 SCLK_510_PLL = 0x2 << 30,
214 SCLK_510_EXTCLK1 = 0x3 << 30,
215 SCLK_510_DIV_CHANGE = 1 << 29,
216 SCLK_510_FRAC_DIV_MASK = 0xfff << 16,
217 SCLK_510_INT_DIV_MASK = 0xffff << 0,
218
219 /* Armada 16x */
220 SCLK_16X_AHB = 0x0 << 28,
221 SCLK_16X_PCLK = 0x1 << 28,
222 SCLK_16X_AXI = 0x4 << 28,
223 SCLK_16X_PLL = 0x8 << 28,
224 SCLK_16X_FRAC_DIV_MASK = 0xfff << 16,
225 SCLK_16X_INT_DIV_MASK = 0xffff << 0,
226};
227
228/* For LCD_SPU_DUMB_CTRL */
229enum {
230 DUMB16_RGB565_0 = 0x0 << 28,
231 DUMB16_RGB565_1 = 0x1 << 28,
232 DUMB18_RGB666_0 = 0x2 << 28,
233 DUMB18_RGB666_1 = 0x3 << 28,
234 DUMB12_RGB444_0 = 0x4 << 28,
235 DUMB12_RGB444_1 = 0x5 << 28,
236 DUMB24_RGB888_0 = 0x6 << 28,
237 DUMB_BLANK = 0x7 << 28,
238 DUMB_MASK = 0xf << 28,
239 CFG_BIAS_OUT = 1 << 8,
240 CFG_REV_RGB = 1 << 7,
241 CFG_INV_CBLANK = 1 << 6,
242 CFG_INV_CSYNC = 1 << 5, /* Normally active high */
243 CFG_INV_HENA = 1 << 4,
244 CFG_INV_VSYNC = 1 << 3, /* Normally active high */
245 CFG_INV_HSYNC = 1 << 2, /* Normally active high */
246 CFG_INV_PCLK = 1 << 1,
247 CFG_DUMB_ENA = 1 << 0,
248};
249
250/* For LCD_SPU_IOPAD_CONTROL */
251enum {
252 CFG_VSCALE_LN_EN = 3 << 18,
253 CFG_GRA_VM_ENA = 1 << 15,
254 CFG_DMA_VM_ENA = 1 << 13,
255 CFG_CMD_VM_ENA = 1 << 11,
256 CFG_CSC_MASK = 3 << 8,
257 CFG_CSC_YUV_CCIR709 = 1 << 9,
258 CFG_CSC_YUV_CCIR601 = 0 << 9,
259 CFG_CSC_RGB_STUDIO = 1 << 8,
260 CFG_CSC_RGB_COMPUTER = 0 << 8,
261 CFG_IOPAD_MASK = 0xf << 0,
262 CFG_IOPAD_DUMB24 = 0x0 << 0,
263 CFG_IOPAD_DUMB18SPI = 0x1 << 0,
264 CFG_IOPAD_DUMB18GPIO = 0x2 << 0,
265 CFG_IOPAD_DUMB16SPI = 0x3 << 0,
266 CFG_IOPAD_DUMB16GPIO = 0x4 << 0,
267 CFG_IOPAD_DUMB12GPIO = 0x5 << 0,
268 CFG_IOPAD_SMART18 = 0x6 << 0,
269 CFG_IOPAD_SMART16 = 0x7 << 0,
270 CFG_IOPAD_SMART8 = 0x8 << 0,
271};
272
273#define IOPAD_DUMB24 0x0
274
275/* For LCD_SPU_IRQ_ENA */
276enum {
277 DMA_FRAME_IRQ0_ENA = 1 << 31,
278 DMA_FRAME_IRQ1_ENA = 1 << 30,
279 DMA_FRAME_IRQ_ENA = DMA_FRAME_IRQ0_ENA | DMA_FRAME_IRQ1_ENA,
280 DMA_FF_UNDERFLOW_ENA = 1 << 29,
281 GRA_FRAME_IRQ0_ENA = 1 << 27,
282 GRA_FRAME_IRQ1_ENA = 1 << 26,
283 GRA_FRAME_IRQ_ENA = GRA_FRAME_IRQ0_ENA | GRA_FRAME_IRQ1_ENA,
284 GRA_FF_UNDERFLOW_ENA = 1 << 25,
285 VSYNC_IRQ_ENA = 1 << 23,
286 DUMB_FRAMEDONE_ENA = 1 << 22,
287 TWC_FRAMEDONE_ENA = 1 << 21,
288 HWC_FRAMEDONE_ENA = 1 << 20,
289 SLV_IRQ_ENA = 1 << 19,
290 SPI_IRQ_ENA = 1 << 18,
291 PWRDN_IRQ_ENA = 1 << 17,
292 ERR_IRQ_ENA = 1 << 16,
293 CLEAN_SPU_IRQ_ISR = 0xffff,
294};
295
296/* For LCD_SPU_IRQ_ISR */
297enum {
298 DMA_FRAME_IRQ0 = 1 << 31,
299 DMA_FRAME_IRQ1 = 1 << 30,
300 DMA_FRAME_IRQ = DMA_FRAME_IRQ0 | DMA_FRAME_IRQ1,
301 DMA_FF_UNDERFLOW = 1 << 29,
302 GRA_FRAME_IRQ0 = 1 << 27,
303 GRA_FRAME_IRQ1 = 1 << 26,
304 GRA_FRAME_IRQ = GRA_FRAME_IRQ0 | GRA_FRAME_IRQ1,
305 GRA_FF_UNDERFLOW = 1 << 25,
306 VSYNC_IRQ = 1 << 23,
307 DUMB_FRAMEDONE = 1 << 22,
308 TWC_FRAMEDONE = 1 << 21,
309 HWC_FRAMEDONE = 1 << 20,
310 SLV_IRQ = 1 << 19,
311 SPI_IRQ = 1 << 18,
312 PWRDN_IRQ = 1 << 17,
313 ERR_IRQ = 1 << 16,
314 DMA_FRAME_IRQ0_LEVEL = 1 << 15,
315 DMA_FRAME_IRQ1_LEVEL = 1 << 14,
316 DMA_FRAME_CNT_ISR = 3 << 12,
317 GRA_FRAME_IRQ0_LEVEL = 1 << 11,
318 GRA_FRAME_IRQ1_LEVEL = 1 << 10,
319 GRA_FRAME_CNT_ISR = 3 << 8,
320 VSYNC_IRQ_LEVEL = 1 << 7,
321 DUMB_FRAMEDONE_LEVEL = 1 << 6,
322 TWC_FRAMEDONE_LEVEL = 1 << 5,
323 HWC_FRAMEDONE_LEVEL = 1 << 4,
324 SLV_FF_EMPTY = 1 << 3,
325 DMA_FF_ALLEMPTY = 1 << 2,
326 GRA_FF_ALLEMPTY = 1 << 1,
327 PWRDN_IRQ_LEVEL = 1 << 0,
328};
329
330#endif