xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/mcde/mcde_display_regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __DRM_MCDE_DISPLAY_REGS
3*4882a593Smuzhiyun #define __DRM_MCDE_DISPLAY_REGS
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun /* PP (pixel processor) interrupts */
6*4882a593Smuzhiyun #define MCDE_IMSCPP 0x00000104
7*4882a593Smuzhiyun #define MCDE_RISPP 0x00000114
8*4882a593Smuzhiyun #define MCDE_MISPP 0x00000124
9*4882a593Smuzhiyun #define MCDE_SISPP 0x00000134
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define MCDE_PP_VCMPA BIT(0)
12*4882a593Smuzhiyun #define MCDE_PP_VCMPB BIT(1)
13*4882a593Smuzhiyun #define MCDE_PP_VSCC0 BIT(2)
14*4882a593Smuzhiyun #define MCDE_PP_VSCC1 BIT(3)
15*4882a593Smuzhiyun #define MCDE_PP_VCMPC0 BIT(4)
16*4882a593Smuzhiyun #define MCDE_PP_VCMPC1 BIT(5)
17*4882a593Smuzhiyun #define MCDE_PP_ROTFD_A BIT(6)
18*4882a593Smuzhiyun #define MCDE_PP_ROTFD_B BIT(7)
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun /* Overlay interrupts */
21*4882a593Smuzhiyun #define MCDE_IMSCOVL 0x00000108
22*4882a593Smuzhiyun #define MCDE_RISOVL 0x00000118
23*4882a593Smuzhiyun #define MCDE_MISOVL 0x00000128
24*4882a593Smuzhiyun #define MCDE_SISOVL 0x00000138
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun /* Channel interrupts */
27*4882a593Smuzhiyun #define MCDE_IMSCCHNL 0x0000010C
28*4882a593Smuzhiyun #define MCDE_RISCHNL 0x0000011C
29*4882a593Smuzhiyun #define MCDE_MISCHNL 0x0000012C
30*4882a593Smuzhiyun #define MCDE_SISCHNL 0x0000013C
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /* X = 0..9 */
33*4882a593Smuzhiyun #define MCDE_EXTSRCXA0 0x00000200
34*4882a593Smuzhiyun #define MCDE_EXTSRCXA0_GROUPOFFSET 0x20
35*4882a593Smuzhiyun #define MCDE_EXTSRCXA0_BASEADDRESS0_SHIFT 3
36*4882a593Smuzhiyun #define MCDE_EXTSRCXA0_BASEADDRESS0_MASK 0xFFFFFFF8
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define MCDE_EXTSRCXA1 0x00000204
39*4882a593Smuzhiyun #define MCDE_EXTSRCXA1_GROUPOFFSET 0x20
40*4882a593Smuzhiyun #define MCDE_EXTSRCXA1_BASEADDRESS1_SHIFT 3
41*4882a593Smuzhiyun #define MCDE_EXTSRCXA1_BASEADDRESS1_MASK 0xFFFFFFF8
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun /* External sources 0..9 */
44*4882a593Smuzhiyun #define MCDE_EXTSRC0CONF 0x0000020C
45*4882a593Smuzhiyun #define MCDE_EXTSRC1CONF 0x0000022C
46*4882a593Smuzhiyun #define MCDE_EXTSRC2CONF 0x0000024C
47*4882a593Smuzhiyun #define MCDE_EXTSRC3CONF 0x0000026C
48*4882a593Smuzhiyun #define MCDE_EXTSRC4CONF 0x0000028C
49*4882a593Smuzhiyun #define MCDE_EXTSRC5CONF 0x000002AC
50*4882a593Smuzhiyun #define MCDE_EXTSRC6CONF 0x000002CC
51*4882a593Smuzhiyun #define MCDE_EXTSRC7CONF 0x000002EC
52*4882a593Smuzhiyun #define MCDE_EXTSRC8CONF 0x0000030C
53*4882a593Smuzhiyun #define MCDE_EXTSRC9CONF 0x0000032C
54*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_GROUPOFFSET 0x20
55*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BUF_ID_SHIFT 0
56*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BUF_ID_MASK 0x00000003
57*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BUF_NB_SHIFT 2
58*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BUF_NB_MASK 0x0000000C
59*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_PRI_OVLID_SHIFT 4
60*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_PRI_OVLID_MASK 0x000000F0
61*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_SHIFT 8
62*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_MASK 0x00000F00
63*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_1BPP_PAL 0
64*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_2BPP_PAL 1
65*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_4BPP_PAL 2
66*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_8BPP_PAL 3
67*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_RGB444 4
68*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_ARGB4444 5
69*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_IRGB1555 6
70*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_RGB565 7
71*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_RGB888 8
72*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_XRGB8888 9
73*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_ARGB8888 10
74*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BPP_YCBCR422 11
75*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BGR BIT(12)
76*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BEBO BIT(13)
77*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_BEPO BIT(14)
78*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_TUNNELING_BUFFER_HEIGHT_SHIFT 16
79*4882a593Smuzhiyun #define MCDE_EXTSRCXCONF_TUNNELING_BUFFER_HEIGHT_MASK 0x0FFF0000
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun /* External sources 0..9 */
82*4882a593Smuzhiyun #define MCDE_EXTSRC0CR 0x00000210
83*4882a593Smuzhiyun #define MCDE_EXTSRC1CR 0x00000230
84*4882a593Smuzhiyun #define MCDE_EXTSRC2CR 0x00000250
85*4882a593Smuzhiyun #define MCDE_EXTSRC3CR 0x00000270
86*4882a593Smuzhiyun #define MCDE_EXTSRC4CR 0x00000290
87*4882a593Smuzhiyun #define MCDE_EXTSRC5CR 0x000002B0
88*4882a593Smuzhiyun #define MCDE_EXTSRC6CR 0x000002D0
89*4882a593Smuzhiyun #define MCDE_EXTSRC7CR 0x000002F0
90*4882a593Smuzhiyun #define MCDE_EXTSRC8CR 0x00000310
91*4882a593Smuzhiyun #define MCDE_EXTSRC9CR 0x00000330
92*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_SEL_MOD_SHIFT 0
93*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_SEL_MOD_MASK 0x00000003
94*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_SEL_MOD_EXTERNAL_SEL 0
95*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_SEL_MOD_AUTO_TOGGLE 1
96*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_SEL_MOD_SOFTWARE_SEL 2
97*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_MULTIOVL_CTRL_PRIMARY BIT(2) /* 0 = all */
98*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_FS_DIV_DISABLE BIT(3)
99*4882a593Smuzhiyun #define MCDE_EXTSRCXCR_FORCE_FS_DIV BIT(4)
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun /* Only external source 6 has a second address register */
102*4882a593Smuzhiyun #define MCDE_EXTSRC6A2 0x000002C8
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun /* 6 overlays */
105*4882a593Smuzhiyun #define MCDE_OVL0CR 0x00000400
106*4882a593Smuzhiyun #define MCDE_OVL1CR 0x00000420
107*4882a593Smuzhiyun #define MCDE_OVL2CR 0x00000440
108*4882a593Smuzhiyun #define MCDE_OVL3CR 0x00000460
109*4882a593Smuzhiyun #define MCDE_OVL4CR 0x00000480
110*4882a593Smuzhiyun #define MCDE_OVL5CR 0x000004A0
111*4882a593Smuzhiyun #define MCDE_OVLXCR_OVLEN BIT(0)
112*4882a593Smuzhiyun #define MCDE_OVLXCR_COLCCTRL_DISABLED 0
113*4882a593Smuzhiyun #define MCDE_OVLXCR_COLCCTRL_ENABLED_NO_SAT (1 << 1)
114*4882a593Smuzhiyun #define MCDE_OVLXCR_COLCCTRL_ENABLED_SAT (2 << 1)
115*4882a593Smuzhiyun #define MCDE_OVLXCR_CKEYGEN BIT(3)
116*4882a593Smuzhiyun #define MCDE_OVLXCR_ALPHAPMEN BIT(4)
117*4882a593Smuzhiyun #define MCDE_OVLXCR_OVLF BIT(5)
118*4882a593Smuzhiyun #define MCDE_OVLXCR_OVLR BIT(6)
119*4882a593Smuzhiyun #define MCDE_OVLXCR_OVLB BIT(7)
120*4882a593Smuzhiyun #define MCDE_OVLXCR_FETCH_ROPC_SHIFT 8
121*4882a593Smuzhiyun #define MCDE_OVLXCR_FETCH_ROPC_MASK 0x0000FF00
122*4882a593Smuzhiyun #define MCDE_OVLXCR_STBPRIO_SHIFT 16
123*4882a593Smuzhiyun #define MCDE_OVLXCR_STBPRIO_MASK 0x000F0000
124*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_SHIFT 20
125*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_MASK 0x00F00000
126*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_1W 0
127*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_2W 1
128*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_4W 2
129*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_8W 3
130*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_16W 4
131*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_HW_1W 8
132*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_HW_2W 9
133*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_HW_4W 10
134*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_HW_8W 11
135*4882a593Smuzhiyun #define MCDE_OVLXCR_BURSTSIZE_HW_16W 12
136*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_SHIFT 24
137*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_MASK 0x0F000000
138*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_1_REQ 0
139*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_2_REQ 1
140*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_4_REQ 2
141*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_8_REQ 3
142*4882a593Smuzhiyun #define MCDE_OVLXCR_MAXOUTSTANDING_16_REQ 4
143*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_SHIFT 28
144*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_MASK 0xF0000000
145*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_1W 0
146*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_2W 1
147*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_4W 2
148*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_8W 3
149*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_16W 4
150*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_HW_1W 8
151*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_HW_2W 9
152*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_HW_4W 10
153*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_HW_8W 11
154*4882a593Smuzhiyun #define MCDE_OVLXCR_ROTBURSTSIZE_HW_16W 12
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun #define MCDE_OVL0CONF 0x00000404
157*4882a593Smuzhiyun #define MCDE_OVL1CONF 0x00000424
158*4882a593Smuzhiyun #define MCDE_OVL2CONF 0x00000444
159*4882a593Smuzhiyun #define MCDE_OVL3CONF 0x00000464
160*4882a593Smuzhiyun #define MCDE_OVL4CONF 0x00000484
161*4882a593Smuzhiyun #define MCDE_OVL5CONF 0x000004A4
162*4882a593Smuzhiyun #define MCDE_OVLXCONF_PPL_SHIFT 0
163*4882a593Smuzhiyun #define MCDE_OVLXCONF_PPL_MASK 0x000007FF
164*4882a593Smuzhiyun #define MCDE_OVLXCONF_EXTSRC_ID_SHIFT 11
165*4882a593Smuzhiyun #define MCDE_OVLXCONF_EXTSRC_ID_MASK 0x00007800
166*4882a593Smuzhiyun #define MCDE_OVLXCONF_LPF_SHIFT 16
167*4882a593Smuzhiyun #define MCDE_OVLXCONF_LPF_MASK 0x07FF0000
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun #define MCDE_OVL0CONF2 0x00000408
170*4882a593Smuzhiyun #define MCDE_OVL1CONF2 0x00000428
171*4882a593Smuzhiyun #define MCDE_OVL2CONF2 0x00000448
172*4882a593Smuzhiyun #define MCDE_OVL3CONF2 0x00000468
173*4882a593Smuzhiyun #define MCDE_OVL4CONF2 0x00000488
174*4882a593Smuzhiyun #define MCDE_OVL5CONF2 0x000004A8
175*4882a593Smuzhiyun #define MCDE_OVLXCONF2_BP_PER_PIXEL_ALPHA 0
176*4882a593Smuzhiyun #define MCDE_OVLXCONF2_BP_CONSTANT_ALPHA BIT(0)
177*4882a593Smuzhiyun #define MCDE_OVLXCONF2_ALPHAVALUE_SHIFT 1
178*4882a593Smuzhiyun #define MCDE_OVLXCONF2_ALPHAVALUE_MASK 0x000001FE
179*4882a593Smuzhiyun #define MCDE_OVLXCONF2_OPQ BIT(9)
180*4882a593Smuzhiyun #define MCDE_OVLXCONF2_PIXOFF_SHIFT 10
181*4882a593Smuzhiyun #define MCDE_OVLXCONF2_PIXOFF_MASK 0x0000FC00
182*4882a593Smuzhiyun #define MCDE_OVLXCONF2_PIXELFETCHERWATERMARKLEVEL_SHIFT 16
183*4882a593Smuzhiyun #define MCDE_OVLXCONF2_PIXELFETCHERWATERMARKLEVEL_MASK 0x1FFF0000
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #define MCDE_OVL0LJINC 0x0000040C
186*4882a593Smuzhiyun #define MCDE_OVL1LJINC 0x0000042C
187*4882a593Smuzhiyun #define MCDE_OVL2LJINC 0x0000044C
188*4882a593Smuzhiyun #define MCDE_OVL3LJINC 0x0000046C
189*4882a593Smuzhiyun #define MCDE_OVL4LJINC 0x0000048C
190*4882a593Smuzhiyun #define MCDE_OVL5LJINC 0x000004AC
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun #define MCDE_OVL0CROP 0x00000410
193*4882a593Smuzhiyun #define MCDE_OVL1CROP 0x00000430
194*4882a593Smuzhiyun #define MCDE_OVL2CROP 0x00000450
195*4882a593Smuzhiyun #define MCDE_OVL3CROP 0x00000470
196*4882a593Smuzhiyun #define MCDE_OVL4CROP 0x00000490
197*4882a593Smuzhiyun #define MCDE_OVL5CROP 0x000004B0
198*4882a593Smuzhiyun #define MCDE_OVLXCROP_TMRGN_SHIFT 0
199*4882a593Smuzhiyun #define MCDE_OVLXCROP_TMRGN_MASK 0x003FFFFF
200*4882a593Smuzhiyun #define MCDE_OVLXCROP_LMRGN_SHIFT 22
201*4882a593Smuzhiyun #define MCDE_OVLXCROP_LMRGN_MASK 0xFFC00000
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun #define MCDE_OVL0COMP 0x00000414
204*4882a593Smuzhiyun #define MCDE_OVL1COMP 0x00000434
205*4882a593Smuzhiyun #define MCDE_OVL2COMP 0x00000454
206*4882a593Smuzhiyun #define MCDE_OVL3COMP 0x00000474
207*4882a593Smuzhiyun #define MCDE_OVL4COMP 0x00000494
208*4882a593Smuzhiyun #define MCDE_OVL5COMP 0x000004B4
209*4882a593Smuzhiyun #define MCDE_OVLXCOMP_XPOS_SHIFT 0
210*4882a593Smuzhiyun #define MCDE_OVLXCOMP_XPOS_MASK 0x000007FF
211*4882a593Smuzhiyun #define MCDE_OVLXCOMP_CH_ID_SHIFT 11
212*4882a593Smuzhiyun #define MCDE_OVLXCOMP_CH_ID_MASK 0x00007800
213*4882a593Smuzhiyun #define MCDE_OVLXCOMP_YPOS_SHIFT 16
214*4882a593Smuzhiyun #define MCDE_OVLXCOMP_YPOS_MASK 0x07FF0000
215*4882a593Smuzhiyun #define MCDE_OVLXCOMP_Z_SHIFT 27
216*4882a593Smuzhiyun #define MCDE_OVLXCOMP_Z_MASK 0x78000000
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define MCDE_CRC 0x00000C00
219*4882a593Smuzhiyun #define MCDE_CRC_C1EN BIT(2)
220*4882a593Smuzhiyun #define MCDE_CRC_C2EN BIT(3)
221*4882a593Smuzhiyun #define MCDE_CRC_SYCEN0 BIT(7)
222*4882a593Smuzhiyun #define MCDE_CRC_SYCEN1 BIT(8)
223*4882a593Smuzhiyun #define MCDE_CRC_SIZE1 BIT(9)
224*4882a593Smuzhiyun #define MCDE_CRC_SIZE2 BIT(10)
225*4882a593Smuzhiyun #define MCDE_CRC_YUVCONVC1EN BIT(15)
226*4882a593Smuzhiyun #define MCDE_CRC_CS1EN BIT(16)
227*4882a593Smuzhiyun #define MCDE_CRC_CS2EN BIT(17)
228*4882a593Smuzhiyun #define MCDE_CRC_CS1POL BIT(19)
229*4882a593Smuzhiyun #define MCDE_CRC_CS2POL BIT(20)
230*4882a593Smuzhiyun #define MCDE_CRC_CD1POL BIT(21)
231*4882a593Smuzhiyun #define MCDE_CRC_CD2POL BIT(22)
232*4882a593Smuzhiyun #define MCDE_CRC_WR1POL BIT(23)
233*4882a593Smuzhiyun #define MCDE_CRC_WR2POL BIT(24)
234*4882a593Smuzhiyun #define MCDE_CRC_RD1POL BIT(25)
235*4882a593Smuzhiyun #define MCDE_CRC_RD2POL BIT(26)
236*4882a593Smuzhiyun #define MCDE_CRC_SYNCCTRL_SHIFT 29
237*4882a593Smuzhiyun #define MCDE_CRC_SYNCCTRL_MASK 0x60000000
238*4882a593Smuzhiyun #define MCDE_CRC_SYNCCTRL_NO_SYNC 0
239*4882a593Smuzhiyun #define MCDE_CRC_SYNCCTRL_DBI0 1
240*4882a593Smuzhiyun #define MCDE_CRC_SYNCCTRL_DBI1 2
241*4882a593Smuzhiyun #define MCDE_CRC_SYNCCTRL_PING_PONG 3
242*4882a593Smuzhiyun #define MCDE_CRC_CLAMPC1EN BIT(31)
243*4882a593Smuzhiyun 
244*4882a593Smuzhiyun #define MCDE_VSCRC0 0x00000C5C
245*4882a593Smuzhiyun #define MCDE_VSCRC1 0x00000C60
246*4882a593Smuzhiyun #define MCDE_VSCRC_VSPMIN_MASK 0x00000FFF
247*4882a593Smuzhiyun #define MCDE_VSCRC_VSPMAX_SHIFT 12
248*4882a593Smuzhiyun #define MCDE_VSCRC_VSPMAX_MASK 0x00FFF000
249*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_SHIFT 24
250*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MASK 0x07000000
251*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_1 0
252*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_2 1
253*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_4 2
254*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_8 3
255*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_16 4
256*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_32 5
257*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_64 6
258*4882a593Smuzhiyun #define MCDE_VSCRC_VSPDIV_MCDECLK_DIV_128 7
259*4882a593Smuzhiyun #define MCDE_VSCRC_VSPOL BIT(27) /* 0 active high, 1 active low */
260*4882a593Smuzhiyun #define MCDE_VSCRC_VSSEL BIT(28) /* 0 VSYNC0, 1 VSYNC1 */
261*4882a593Smuzhiyun #define MCDE_VSCRC_VSDBL BIT(29)
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun /* Channel config 0..3 */
264*4882a593Smuzhiyun #define MCDE_CHNL0CONF 0x00000600
265*4882a593Smuzhiyun #define MCDE_CHNL1CONF 0x00000620
266*4882a593Smuzhiyun #define MCDE_CHNL2CONF 0x00000640
267*4882a593Smuzhiyun #define MCDE_CHNL3CONF 0x00000660
268*4882a593Smuzhiyun #define MCDE_CHNLXCONF_PPL_SHIFT 0
269*4882a593Smuzhiyun #define MCDE_CHNLXCONF_PPL_MASK 0x000007FF
270*4882a593Smuzhiyun #define MCDE_CHNLXCONF_LPF_SHIFT 16
271*4882a593Smuzhiyun #define MCDE_CHNLXCONF_LPF_MASK 0x07FF0000
272*4882a593Smuzhiyun #define MCDE_MAX_WIDTH 2048
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun /* Channel status 0..3 */
275*4882a593Smuzhiyun #define MCDE_CHNL0STAT 0x00000604
276*4882a593Smuzhiyun #define MCDE_CHNL1STAT 0x00000624
277*4882a593Smuzhiyun #define MCDE_CHNL2STAT 0x00000644
278*4882a593Smuzhiyun #define MCDE_CHNL3STAT 0x00000664
279*4882a593Smuzhiyun #define MCDE_CHNLXSTAT_CHNLRD BIT(0)
280*4882a593Smuzhiyun #define MCDE_CHNLXSTAT_CHNLA BIT(1)
281*4882a593Smuzhiyun #define MCDE_CHNLXSTAT_CHNLBLBCKGND_EN BIT(16)
282*4882a593Smuzhiyun #define MCDE_CHNLXSTAT_PPLX2_V422 BIT(17)
283*4882a593Smuzhiyun #define MCDE_CHNLXSTAT_LPFX2_V422 BIT(18)
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun /* Sync settings for channel 0..3 */
286*4882a593Smuzhiyun #define MCDE_CHNL0SYNCHMOD 0x00000608
287*4882a593Smuzhiyun #define MCDE_CHNL1SYNCHMOD 0x00000628
288*4882a593Smuzhiyun #define MCDE_CHNL2SYNCHMOD 0x00000648
289*4882a593Smuzhiyun #define MCDE_CHNL3SYNCHMOD 0x00000668
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SHIFT 0
292*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_MASK 0x00000003
293*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_HARDWARE 0
294*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_NO_SYNCH 1
295*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_SRC_SYNCH_SOFTWARE 2
296*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_SHIFT 2
297*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_MASK 0x0000001C
298*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_FORMATTER 0
299*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_TE0 1
300*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHMOD_OUT_SYNCH_SRC_TE1 2
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun /* Software sync triggers for channel 0..3 */
303*4882a593Smuzhiyun #define MCDE_CHNL0SYNCHSW 0x0000060C
304*4882a593Smuzhiyun #define MCDE_CHNL1SYNCHSW 0x0000062C
305*4882a593Smuzhiyun #define MCDE_CHNL2SYNCHSW 0x0000064C
306*4882a593Smuzhiyun #define MCDE_CHNL3SYNCHSW 0x0000066C
307*4882a593Smuzhiyun #define MCDE_CHNLXSYNCHSW_SW_TRIG BIT(0)
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun #define MCDE_CHNL0BCKGNDCOL 0x00000610
310*4882a593Smuzhiyun #define MCDE_CHNL1BCKGNDCOL 0x00000630
311*4882a593Smuzhiyun #define MCDE_CHNL2BCKGNDCOL 0x00000650
312*4882a593Smuzhiyun #define MCDE_CHNL3BCKGNDCOL 0x00000670
313*4882a593Smuzhiyun #define MCDE_CHNLXBCKGNDCOL_B_SHIFT 0
314*4882a593Smuzhiyun #define MCDE_CHNLXBCKGNDCOL_B_MASK 0x000000FF
315*4882a593Smuzhiyun #define MCDE_CHNLXBCKGNDCOL_G_SHIFT 8
316*4882a593Smuzhiyun #define MCDE_CHNLXBCKGNDCOL_G_MASK 0x0000FF00
317*4882a593Smuzhiyun #define MCDE_CHNLXBCKGNDCOL_R_SHIFT 16
318*4882a593Smuzhiyun #define MCDE_CHNLXBCKGNDCOL_R_MASK 0x00FF0000
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun #define MCDE_CHNL0MUXING 0x00000614
321*4882a593Smuzhiyun #define MCDE_CHNL1MUXING 0x00000634
322*4882a593Smuzhiyun #define MCDE_CHNL2MUXING 0x00000654
323*4882a593Smuzhiyun #define MCDE_CHNL3MUXING 0x00000674
324*4882a593Smuzhiyun #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_A 0
325*4882a593Smuzhiyun #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_B 1
326*4882a593Smuzhiyun #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_C0 2
327*4882a593Smuzhiyun #define MCDE_CHNLXMUXING_FIFO_ID_FIFO_C1 3
328*4882a593Smuzhiyun 
329*4882a593Smuzhiyun /* Pixel processing control registers for channel A B,  */
330*4882a593Smuzhiyun #define MCDE_CRA0 0x00000800
331*4882a593Smuzhiyun #define MCDE_CRB0 0x00000A00
332*4882a593Smuzhiyun #define MCDE_CRX0_FLOEN BIT(0)
333*4882a593Smuzhiyun #define MCDE_CRX0_POWEREN BIT(1)
334*4882a593Smuzhiyun #define MCDE_CRX0_BLENDEN BIT(2)
335*4882a593Smuzhiyun #define MCDE_CRX0_AFLICKEN BIT(3)
336*4882a593Smuzhiyun #define MCDE_CRX0_PALEN BIT(4)
337*4882a593Smuzhiyun #define MCDE_CRX0_DITHEN BIT(5)
338*4882a593Smuzhiyun #define MCDE_CRX0_GAMEN BIT(6)
339*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_SHIFT 7
340*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_MASK 0x00000380
341*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_OFF 0
342*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_ALPHA_RGB 1
343*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_RGB 2
344*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_FALPHA_FRGB 4
345*4882a593Smuzhiyun #define MCDE_CRX0_KEYCTRL_FRGB 5
346*4882a593Smuzhiyun #define MCDE_CRX0_BLENDCTRL BIT(10)
347*4882a593Smuzhiyun #define MCDE_CRX0_FLICKMODE_SHIFT 11
348*4882a593Smuzhiyun #define MCDE_CRX0_FLICKMODE_MASK 0x00001800
349*4882a593Smuzhiyun #define MCDE_CRX0_FLICKMODE_FORCE_FILTER_0 0
350*4882a593Smuzhiyun #define MCDE_CRX0_FLICKMODE_ADAPTIVE 1
351*4882a593Smuzhiyun #define MCDE_CRX0_FLICKMODE_TEST_MODE 2
352*4882a593Smuzhiyun #define MCDE_CRX0_FLOCKFORMAT_RGB BIT(13) /* 0 = YCVCR */
353*4882a593Smuzhiyun #define MCDE_CRX0_PALMODE_GAMMA BIT(14) /* 0 = palette */
354*4882a593Smuzhiyun #define MCDE_CRX0_OLEDEN BIT(15)
355*4882a593Smuzhiyun #define MCDE_CRX0_ALPHABLEND_SHIFT 16
356*4882a593Smuzhiyun #define MCDE_CRX0_ALPHABLEND_MASK 0x00FF0000
357*4882a593Smuzhiyun #define MCDE_CRX0_ROTEN BIT(24)
358*4882a593Smuzhiyun 
359*4882a593Smuzhiyun #define MCDE_CRA1 0x00000804
360*4882a593Smuzhiyun #define MCDE_CRB1 0x00000A04
361*4882a593Smuzhiyun #define MCDE_CRX1_PCD_SHIFT 0
362*4882a593Smuzhiyun #define MCDE_CRX1_PCD_MASK 0x000003FF
363*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_SHIFT 10
364*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_MASK 0x00001C00
365*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_CLKPLL72 0
366*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_CLKPLL27 2
367*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_TV1CLK 3
368*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_TV2CLK 4
369*4882a593Smuzhiyun #define MCDE_CRX1_CLKSEL_MCDECLK 5
370*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_SHIFT 13
371*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_MASK 0x0001E000
372*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_8BPP_C1 0
373*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_12BPP_C1 1
374*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_12BPP_C2 2
375*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_16BPP_C1 3
376*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_16BPP_C2 4
377*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_16BPP_C3 5
378*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_18BPP_C1 6
379*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_18BPP_C2 7
380*4882a593Smuzhiyun #define MCDE_CRX1_CDWIN_24BPP 8
381*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_SHIFT 25
382*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_MASK 0x1E000000
383*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_MONO1 0
384*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_MONO2 1
385*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_MONO4 2
386*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_MONO8 3
387*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_8BPP 4
388*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_12BPP 5
389*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_15BPP 6
390*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_16BPP 7
391*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_18BPP 8
392*4882a593Smuzhiyun #define MCDE_CRX1_OUTBPP_24BPP 9
393*4882a593Smuzhiyun #define MCDE_CRX1_BCD BIT(29)
394*4882a593Smuzhiyun #define MCDE_CRA1_CLKTYPE_TVXCLKSEL1 BIT(30) /* 0 = TVXCLKSEL1 */
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun #define MCDE_COLKEYA 0x00000808
397*4882a593Smuzhiyun #define MCDE_COLKEYB 0x00000A08
398*4882a593Smuzhiyun 
399*4882a593Smuzhiyun #define MCDE_FCOLKEYA 0x0000080C
400*4882a593Smuzhiyun #define MCDE_FCOLKEYB 0x00000A0C
401*4882a593Smuzhiyun 
402*4882a593Smuzhiyun #define MCDE_RGBCONV1A 0x00000810
403*4882a593Smuzhiyun #define MCDE_RGBCONV1B 0x00000A10
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun #define MCDE_RGBCONV2A 0x00000814
406*4882a593Smuzhiyun #define MCDE_RGBCONV2B 0x00000A14
407*4882a593Smuzhiyun 
408*4882a593Smuzhiyun #define MCDE_RGBCONV3A 0x00000818
409*4882a593Smuzhiyun #define MCDE_RGBCONV3B 0x00000A18
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun #define MCDE_RGBCONV4A 0x0000081C
412*4882a593Smuzhiyun #define MCDE_RGBCONV4B 0x00000A1C
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun #define MCDE_RGBCONV5A 0x00000820
415*4882a593Smuzhiyun #define MCDE_RGBCONV5B 0x00000A20
416*4882a593Smuzhiyun 
417*4882a593Smuzhiyun #define MCDE_RGBCONV6A 0x00000824
418*4882a593Smuzhiyun #define MCDE_RGBCONV6B 0x00000A24
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun /* Rotation */
421*4882a593Smuzhiyun #define MCDE_ROTACONF 0x0000087C
422*4882a593Smuzhiyun #define MCDE_ROTBCONF 0x00000A7C
423*4882a593Smuzhiyun 
424*4882a593Smuzhiyun #define MCDE_SYNCHCONFA 0x00000880
425*4882a593Smuzhiyun #define MCDE_SYNCHCONFB 0x00000A80
426*4882a593Smuzhiyun 
427*4882a593Smuzhiyun /* Channel A+B control registers */
428*4882a593Smuzhiyun #define MCDE_CTRLA 0x00000884
429*4882a593Smuzhiyun #define MCDE_CTRLB 0x00000A84
430*4882a593Smuzhiyun #define MCDE_CTRLX_FIFOWTRMRK_SHIFT 0
431*4882a593Smuzhiyun #define MCDE_CTRLX_FIFOWTRMRK_MASK 0x000003FF
432*4882a593Smuzhiyun #define MCDE_CTRLX_FIFOEMPTY BIT(12)
433*4882a593Smuzhiyun #define MCDE_CTRLX_FIFOFULL BIT(13)
434*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_SHIFT 16
435*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_MASK 0x00070000
436*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DSI0VID 0
437*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DSI0CMD 1
438*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DSI1VID 2
439*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DSI1CMD 3
440*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DSI2VID 4
441*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DSI2CMD 5
442*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DPIA 0
443*4882a593Smuzhiyun #define MCDE_CTRLX_FORMID_DPIB 1
444*4882a593Smuzhiyun #define MCDE_CTRLX_FORMTYPE_SHIFT 20
445*4882a593Smuzhiyun #define MCDE_CTRLX_FORMTYPE_MASK 0x00700000
446*4882a593Smuzhiyun #define MCDE_CTRLX_FORMTYPE_DPITV 0
447*4882a593Smuzhiyun #define MCDE_CTRLX_FORMTYPE_DBI 1
448*4882a593Smuzhiyun #define MCDE_CTRLX_FORMTYPE_DSI 2
449*4882a593Smuzhiyun 
450*4882a593Smuzhiyun #define MCDE_DSIVID0CONF0 0x00000E00
451*4882a593Smuzhiyun #define MCDE_DSICMD0CONF0 0x00000E20
452*4882a593Smuzhiyun #define MCDE_DSIVID1CONF0 0x00000E40
453*4882a593Smuzhiyun #define MCDE_DSICMD1CONF0 0x00000E60
454*4882a593Smuzhiyun #define MCDE_DSIVID2CONF0 0x00000E80
455*4882a593Smuzhiyun #define MCDE_DSICMD2CONF0 0x00000EA0
456*4882a593Smuzhiyun #define MCDE_DSICONF0_BLANKING_SHIFT 0
457*4882a593Smuzhiyun #define MCDE_DSICONF0_BLANKING_MASK 0x000000FF
458*4882a593Smuzhiyun #define MCDE_DSICONF0_VID_MODE_CMD 0
459*4882a593Smuzhiyun #define MCDE_DSICONF0_VID_MODE_VID BIT(12)
460*4882a593Smuzhiyun #define MCDE_DSICONF0_CMD8 BIT(13)
461*4882a593Smuzhiyun #define MCDE_DSICONF0_BIT_SWAP BIT(16)
462*4882a593Smuzhiyun #define MCDE_DSICONF0_BYTE_SWAP BIT(17)
463*4882a593Smuzhiyun #define MCDE_DSICONF0_DCSVID_NOTGEN BIT(18)
464*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_SHIFT 20
465*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_MASK 0x00700000
466*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_RGB565 0
467*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_RGB666 1
468*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_RGB666_PACKED 2
469*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_RGB888 3
470*4882a593Smuzhiyun #define MCDE_DSICONF0_PACKING_HDTV 4
471*4882a593Smuzhiyun 
472*4882a593Smuzhiyun #define MCDE_DSIVID0FRAME 0x00000E04
473*4882a593Smuzhiyun #define MCDE_DSICMD0FRAME 0x00000E24
474*4882a593Smuzhiyun #define MCDE_DSIVID1FRAME 0x00000E44
475*4882a593Smuzhiyun #define MCDE_DSICMD1FRAME 0x00000E64
476*4882a593Smuzhiyun #define MCDE_DSIVID2FRAME 0x00000E84
477*4882a593Smuzhiyun #define MCDE_DSICMD2FRAME 0x00000EA4
478*4882a593Smuzhiyun 
479*4882a593Smuzhiyun #define MCDE_DSIVID0PKT 0x00000E08
480*4882a593Smuzhiyun #define MCDE_DSICMD0PKT 0x00000E28
481*4882a593Smuzhiyun #define MCDE_DSIVID1PKT 0x00000E48
482*4882a593Smuzhiyun #define MCDE_DSICMD1PKT 0x00000E68
483*4882a593Smuzhiyun #define MCDE_DSIVID2PKT 0x00000E88
484*4882a593Smuzhiyun #define MCDE_DSICMD2PKT 0x00000EA8
485*4882a593Smuzhiyun 
486*4882a593Smuzhiyun #define MCDE_DSIVID0SYNC 0x00000E0C
487*4882a593Smuzhiyun #define MCDE_DSICMD0SYNC 0x00000E2C
488*4882a593Smuzhiyun #define MCDE_DSIVID1SYNC 0x00000E4C
489*4882a593Smuzhiyun #define MCDE_DSICMD1SYNC 0x00000E6C
490*4882a593Smuzhiyun #define MCDE_DSIVID2SYNC 0x00000E8C
491*4882a593Smuzhiyun #define MCDE_DSICMD2SYNC 0x00000EAC
492*4882a593Smuzhiyun 
493*4882a593Smuzhiyun #define MCDE_DSIVID0CMDW 0x00000E10
494*4882a593Smuzhiyun #define MCDE_DSICMD0CMDW 0x00000E30
495*4882a593Smuzhiyun #define MCDE_DSIVID1CMDW 0x00000E50
496*4882a593Smuzhiyun #define MCDE_DSICMD1CMDW 0x00000E70
497*4882a593Smuzhiyun #define MCDE_DSIVID2CMDW 0x00000E90
498*4882a593Smuzhiyun #define MCDE_DSICMD2CMDW 0x00000EB0
499*4882a593Smuzhiyun #define MCDE_DSIVIDXCMDW_CMDW_CONTINUE_SHIFT 0
500*4882a593Smuzhiyun #define MCDE_DSIVIDXCMDW_CMDW_CONTINUE_MASK 0x0000FFFF
501*4882a593Smuzhiyun #define MCDE_DSIVIDXCMDW_CMDW_START_SHIFT 16
502*4882a593Smuzhiyun #define MCDE_DSIVIDXCMDW_CMDW_START_MASK 0xFFFF0000
503*4882a593Smuzhiyun 
504*4882a593Smuzhiyun #define MCDE_DSIVID0DELAY0 0x00000E14
505*4882a593Smuzhiyun #define MCDE_DSICMD0DELAY0 0x00000E34
506*4882a593Smuzhiyun #define MCDE_DSIVID1DELAY0 0x00000E54
507*4882a593Smuzhiyun #define MCDE_DSICMD1DELAY0 0x00000E74
508*4882a593Smuzhiyun #define MCDE_DSIVID2DELAY0 0x00000E94
509*4882a593Smuzhiyun #define MCDE_DSICMD2DELAY0 0x00000EB4
510*4882a593Smuzhiyun 
511*4882a593Smuzhiyun #define MCDE_DSIVID0DELAY1 0x00000E18
512*4882a593Smuzhiyun #define MCDE_DSICMD0DELAY1 0x00000E38
513*4882a593Smuzhiyun #define MCDE_DSIVID1DELAY1 0x00000E58
514*4882a593Smuzhiyun #define MCDE_DSICMD1DELAY1 0x00000E78
515*4882a593Smuzhiyun #define MCDE_DSIVID2DELAY1 0x00000E98
516*4882a593Smuzhiyun #define MCDE_DSICMD2DELAY1 0x00000EB8
517*4882a593Smuzhiyun 
518*4882a593Smuzhiyun #endif /* __DRM_MCDE_DISPLAY_REGS */
519