xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/rcar-du/rcar_du_regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * rcar_du_regs.h  --  R-Car Display Unit Registers Definitions
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2013-2015 Renesas Electronics Corporation
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifndef __RCAR_DU_REGS_H__
11*4882a593Smuzhiyun #define __RCAR_DU_REGS_H__
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define DU0_REG_OFFSET		0x00000
14*4882a593Smuzhiyun #define DU1_REG_OFFSET		0x30000
15*4882a593Smuzhiyun #define DU2_REG_OFFSET		0x40000
16*4882a593Smuzhiyun #define DU3_REG_OFFSET		0x70000
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
19*4882a593Smuzhiyun  * Display Control Registers
20*4882a593Smuzhiyun  */
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #define DSYSR			0x00000	/* display 1 */
23*4882a593Smuzhiyun #define DSYSR_ILTS		(1 << 29)
24*4882a593Smuzhiyun #define DSYSR_DSEC		(1 << 20)
25*4882a593Smuzhiyun #define DSYSR_IUPD		(1 << 16)
26*4882a593Smuzhiyun #define DSYSR_DRES		(1 << 9)
27*4882a593Smuzhiyun #define DSYSR_DEN		(1 << 8)
28*4882a593Smuzhiyun #define DSYSR_TVM_MASTER	(0 << 6)
29*4882a593Smuzhiyun #define DSYSR_TVM_SWITCH	(1 << 6)
30*4882a593Smuzhiyun #define DSYSR_TVM_TVSYNC	(2 << 6)
31*4882a593Smuzhiyun #define DSYSR_TVM_MASK		(3 << 6)
32*4882a593Smuzhiyun #define DSYSR_SCM_INT_NONE	(0 << 4)
33*4882a593Smuzhiyun #define DSYSR_SCM_INT_SYNC	(2 << 4)
34*4882a593Smuzhiyun #define DSYSR_SCM_INT_VIDEO	(3 << 4)
35*4882a593Smuzhiyun #define DSYSR_SCM_MASK		(3 << 4)
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define DSMR			0x00004
38*4882a593Smuzhiyun #define DSMR_VSPM		(1 << 28)
39*4882a593Smuzhiyun #define DSMR_ODPM		(1 << 27)
40*4882a593Smuzhiyun #define DSMR_DIPM_DISP		(0 << 25)
41*4882a593Smuzhiyun #define DSMR_DIPM_CSYNC		(1 << 25)
42*4882a593Smuzhiyun #define DSMR_DIPM_DE		(3 << 25)
43*4882a593Smuzhiyun #define DSMR_DIPM_MASK		(3 << 25)
44*4882a593Smuzhiyun #define DSMR_CSPM		(1 << 24)
45*4882a593Smuzhiyun #define DSMR_DIL		(1 << 19)
46*4882a593Smuzhiyun #define DSMR_VSL		(1 << 18)
47*4882a593Smuzhiyun #define DSMR_HSL		(1 << 17)
48*4882a593Smuzhiyun #define DSMR_DDIS		(1 << 16)
49*4882a593Smuzhiyun #define DSMR_CDEL		(1 << 15)
50*4882a593Smuzhiyun #define DSMR_CDEM_CDE		(0 << 13)
51*4882a593Smuzhiyun #define DSMR_CDEM_LOW		(2 << 13)
52*4882a593Smuzhiyun #define DSMR_CDEM_HIGH		(3 << 13)
53*4882a593Smuzhiyun #define DSMR_CDEM_MASK		(3 << 13)
54*4882a593Smuzhiyun #define DSMR_CDED		(1 << 12)
55*4882a593Smuzhiyun #define DSMR_ODEV		(1 << 8)
56*4882a593Smuzhiyun #define DSMR_CSY_VH_OR		(0 << 6)
57*4882a593Smuzhiyun #define DSMR_CSY_333		(2 << 6)
58*4882a593Smuzhiyun #define DSMR_CSY_222		(3 << 6)
59*4882a593Smuzhiyun #define DSMR_CSY_MASK		(3 << 6)
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #define DSSR			0x00008
62*4882a593Smuzhiyun #define DSSR_VC1FB_DSA0		(0 << 30)
63*4882a593Smuzhiyun #define DSSR_VC1FB_DSA1		(1 << 30)
64*4882a593Smuzhiyun #define DSSR_VC1FB_DSA2		(2 << 30)
65*4882a593Smuzhiyun #define DSSR_VC1FB_INIT		(3 << 30)
66*4882a593Smuzhiyun #define DSSR_VC1FB_MASK		(3 << 30)
67*4882a593Smuzhiyun #define DSSR_VC0FB_DSA0		(0 << 28)
68*4882a593Smuzhiyun #define DSSR_VC0FB_DSA1		(1 << 28)
69*4882a593Smuzhiyun #define DSSR_VC0FB_DSA2		(2 << 28)
70*4882a593Smuzhiyun #define DSSR_VC0FB_INIT		(3 << 28)
71*4882a593Smuzhiyun #define DSSR_VC0FB_MASK		(3 << 28)
72*4882a593Smuzhiyun #define DSSR_DFB(n)		(1 << ((n)+15))
73*4882a593Smuzhiyun #define DSSR_TVR		(1 << 15)
74*4882a593Smuzhiyun #define DSSR_FRM		(1 << 14)
75*4882a593Smuzhiyun #define DSSR_VBK		(1 << 11)
76*4882a593Smuzhiyun #define DSSR_RINT		(1 << 9)
77*4882a593Smuzhiyun #define DSSR_HBK		(1 << 8)
78*4882a593Smuzhiyun #define DSSR_ADC(n)		(1 << ((n)-1))
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define DSRCR			0x0000c
81*4882a593Smuzhiyun #define DSRCR_TVCL		(1 << 15)
82*4882a593Smuzhiyun #define DSRCR_FRCL		(1 << 14)
83*4882a593Smuzhiyun #define DSRCR_VBCL		(1 << 11)
84*4882a593Smuzhiyun #define DSRCR_RICL		(1 << 9)
85*4882a593Smuzhiyun #define DSRCR_HBCL		(1 << 8)
86*4882a593Smuzhiyun #define DSRCR_ADCL(n)		(1 << ((n)-1))
87*4882a593Smuzhiyun #define DSRCR_MASK		0x0000cbff
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #define DIER			0x00010
90*4882a593Smuzhiyun #define DIER_TVE		(1 << 15)
91*4882a593Smuzhiyun #define DIER_FRE		(1 << 14)
92*4882a593Smuzhiyun #define DIER_VBE		(1 << 11)
93*4882a593Smuzhiyun #define DIER_RIE		(1 << 9)
94*4882a593Smuzhiyun #define DIER_HBE		(1 << 8)
95*4882a593Smuzhiyun #define DIER_ADCE(n)		(1 << ((n)-1))
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define CPCR			0x00014
98*4882a593Smuzhiyun #define CPCR_CP4CE		(1 << 19)
99*4882a593Smuzhiyun #define CPCR_CP3CE		(1 << 18)
100*4882a593Smuzhiyun #define CPCR_CP2CE		(1 << 17)
101*4882a593Smuzhiyun #define CPCR_CP1CE		(1 << 16)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define DPPR			0x00018
104*4882a593Smuzhiyun #define DPPR_DPE(n)		(1 << ((n)*4-1))
105*4882a593Smuzhiyun #define DPPR_DPS(n, p)		(((p)-1) << DPPR_DPS_SHIFT(n))
106*4882a593Smuzhiyun #define DPPR_DPS_SHIFT(n)	(((n)-1)*4)
107*4882a593Smuzhiyun #define DPPR_BPP16		(DPPR_DPE(8) | DPPR_DPS(8, 1))	/* plane1 */
108*4882a593Smuzhiyun #define DPPR_BPP32_P1		(DPPR_DPE(7) | DPPR_DPS(7, 1))
109*4882a593Smuzhiyun #define DPPR_BPP32_P2		(DPPR_DPE(8) | DPPR_DPS(8, 2))
110*4882a593Smuzhiyun #define DPPR_BPP32		(DPPR_BPP32_P1 | DPPR_BPP32_P2)	/* plane1 & 2 */
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun #define DEFR			0x00020
113*4882a593Smuzhiyun #define DEFR_CODE		(0x7773 << 16)
114*4882a593Smuzhiyun #define DEFR_EXSL		(1 << 12)
115*4882a593Smuzhiyun #define DEFR_EXVL		(1 << 11)
116*4882a593Smuzhiyun #define DEFR_EXUP		(1 << 5)
117*4882a593Smuzhiyun #define DEFR_VCUP		(1 << 4)
118*4882a593Smuzhiyun #define DEFR_DEFE		(1 << 0)
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun #define DAPCR			0x00024
121*4882a593Smuzhiyun #define DAPCR_CODE		(0x7773 << 16)
122*4882a593Smuzhiyun #define DAPCR_AP2E		(1 << 4)
123*4882a593Smuzhiyun #define DAPCR_AP1E		(1 << 0)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define DCPCR			0x00028
126*4882a593Smuzhiyun #define DCPCR_CODE		(0x7773 << 16)
127*4882a593Smuzhiyun #define DCPCR_CA2B		(1 << 13)
128*4882a593Smuzhiyun #define DCPCR_CD2F		(1 << 12)
129*4882a593Smuzhiyun #define DCPCR_DC2E		(1 << 8)
130*4882a593Smuzhiyun #define DCPCR_CAB		(1 << 5)
131*4882a593Smuzhiyun #define DCPCR_CDF		(1 << 4)
132*4882a593Smuzhiyun #define DCPCR_DCE		(1 << 0)
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #define DEFR2			0x00034
135*4882a593Smuzhiyun #define DEFR2_CODE		(0x7775 << 16)
136*4882a593Smuzhiyun #define DEFR2_DEFE2G		(1 << 0)
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun #define DEFR3			0x00038
139*4882a593Smuzhiyun #define DEFR3_CODE		(0x7776 << 16)
140*4882a593Smuzhiyun #define DEFR3_EVDA		(1 << 14)
141*4882a593Smuzhiyun #define DEFR3_EVDM_1		(1 << 12)
142*4882a593Smuzhiyun #define DEFR3_EVDM_2		(2 << 12)
143*4882a593Smuzhiyun #define DEFR3_EVDM_3		(3 << 12)
144*4882a593Smuzhiyun #define DEFR3_VMSM2_EMA		(1 << 6)
145*4882a593Smuzhiyun #define DEFR3_VMSM1_ENA		(1 << 4)
146*4882a593Smuzhiyun #define DEFR3_DEFE3		(1 << 0)
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun #define DEFR4			0x0003c
149*4882a593Smuzhiyun #define DEFR4_CODE		(0x7777 << 16)
150*4882a593Smuzhiyun #define DEFR4_LRUO		(1 << 5)
151*4882a593Smuzhiyun #define DEFR4_SPCE		(1 << 4)
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun #define DVCSR			0x000d0
154*4882a593Smuzhiyun #define DVCSR_VCnFB2_DSA0(n)	(0 << ((n)*2+16))
155*4882a593Smuzhiyun #define DVCSR_VCnFB2_DSA1(n)	(1 << ((n)*2+16))
156*4882a593Smuzhiyun #define DVCSR_VCnFB2_DSA2(n)	(2 << ((n)*2+16))
157*4882a593Smuzhiyun #define DVCSR_VCnFB2_INIT(n)	(3 << ((n)*2+16))
158*4882a593Smuzhiyun #define DVCSR_VCnFB2_MASK(n)	(3 << ((n)*2+16))
159*4882a593Smuzhiyun #define DVCSR_VCnFB_DSA0(n)	(0 << ((n)*2))
160*4882a593Smuzhiyun #define DVCSR_VCnFB_DSA1(n)	(1 << ((n)*2))
161*4882a593Smuzhiyun #define DVCSR_VCnFB_DSA2(n)	(2 << ((n)*2))
162*4882a593Smuzhiyun #define DVCSR_VCnFB_INIT(n)	(3 << ((n)*2))
163*4882a593Smuzhiyun #define DVCSR_VCnFB_MASK(n)	(3 << ((n)*2))
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun #define DEFR5			0x000e0
166*4882a593Smuzhiyun #define DEFR5_CODE		(0x66 << 24)
167*4882a593Smuzhiyun #define DEFR5_YCRGB2_DIS	(0 << 14)
168*4882a593Smuzhiyun #define DEFR5_YCRGB2_PRI1	(1 << 14)
169*4882a593Smuzhiyun #define DEFR5_YCRGB2_PRI2	(2 << 14)
170*4882a593Smuzhiyun #define DEFR5_YCRGB2_PRI3	(3 << 14)
171*4882a593Smuzhiyun #define DEFR5_YCRGB2_MASK	(3 << 14)
172*4882a593Smuzhiyun #define DEFR5_YCRGB1_DIS	(0 << 12)
173*4882a593Smuzhiyun #define DEFR5_YCRGB1_PRI1	(1 << 12)
174*4882a593Smuzhiyun #define DEFR5_YCRGB1_PRI2	(2 << 12)
175*4882a593Smuzhiyun #define DEFR5_YCRGB1_PRI3	(3 << 12)
176*4882a593Smuzhiyun #define DEFR5_YCRGB1_MASK	(3 << 12)
177*4882a593Smuzhiyun #define DEFR5_DEFE5		(1 << 0)
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun #define DDLTR			0x000e4
180*4882a593Smuzhiyun #define DDLTR_CODE		(0x7766 << 16)
181*4882a593Smuzhiyun #define DDLTR_DLAR2		(1 << 6)
182*4882a593Smuzhiyun #define DDLTR_DLAY2		(1 << 5)
183*4882a593Smuzhiyun #define DDLTR_DLAY1		(1 << 1)
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #define DEFR6			0x000e8
186*4882a593Smuzhiyun #define DEFR6_CODE		(0x7778 << 16)
187*4882a593Smuzhiyun #define DEFR6_ODPM12_DSMR	(0 << 10)
188*4882a593Smuzhiyun #define DEFR6_ODPM12_DISP	(2 << 10)
189*4882a593Smuzhiyun #define DEFR6_ODPM12_CDE	(3 << 10)
190*4882a593Smuzhiyun #define DEFR6_ODPM12_MASK	(3 << 10)
191*4882a593Smuzhiyun #define DEFR6_ODPM02_DSMR	(0 << 8)
192*4882a593Smuzhiyun #define DEFR6_ODPM02_DISP	(2 << 8)
193*4882a593Smuzhiyun #define DEFR6_ODPM02_CDE	(3 << 8)
194*4882a593Smuzhiyun #define DEFR6_ODPM02_MASK	(3 << 8)
195*4882a593Smuzhiyun #define DEFR6_TCNE1		(1 << 6)
196*4882a593Smuzhiyun #define DEFR6_TCNE0		(1 << 4)
197*4882a593Smuzhiyun #define DEFR6_MLOS1		(1 << 2)
198*4882a593Smuzhiyun #define DEFR6_DEFAULT		(DEFR6_CODE | DEFR6_TCNE1)
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define DEFR7			0x000ec
201*4882a593Smuzhiyun #define DEFR7_CODE		(0x7779 << 16)
202*4882a593Smuzhiyun #define DEFR7_CMME1		BIT(6)
203*4882a593Smuzhiyun #define DEFR7_CMME0		BIT(4)
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
206*4882a593Smuzhiyun  * R8A7790-only Control Registers
207*4882a593Smuzhiyun  */
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun #define DD1SSR			0x20008
210*4882a593Smuzhiyun #define DD1SSR_TVR		(1 << 15)
211*4882a593Smuzhiyun #define DD1SSR_FRM		(1 << 14)
212*4882a593Smuzhiyun #define DD1SSR_BUF		(1 << 12)
213*4882a593Smuzhiyun #define DD1SSR_VBK		(1 << 11)
214*4882a593Smuzhiyun #define DD1SSR_RINT		(1 << 9)
215*4882a593Smuzhiyun #define DD1SSR_HBK		(1 << 8)
216*4882a593Smuzhiyun #define DD1SSR_ADC(n)		(1 << ((n)-1))
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define DD1SRCR			0x2000c
219*4882a593Smuzhiyun #define DD1SRCR_TVR		(1 << 15)
220*4882a593Smuzhiyun #define DD1SRCR_FRM		(1 << 14)
221*4882a593Smuzhiyun #define DD1SRCR_BUF		(1 << 12)
222*4882a593Smuzhiyun #define DD1SRCR_VBK		(1 << 11)
223*4882a593Smuzhiyun #define DD1SRCR_RINT		(1 << 9)
224*4882a593Smuzhiyun #define DD1SRCR_HBK		(1 << 8)
225*4882a593Smuzhiyun #define DD1SRCR_ADC(n)		(1 << ((n)-1))
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun #define DD1IER			0x20010
228*4882a593Smuzhiyun #define DD1IER_TVR		(1 << 15)
229*4882a593Smuzhiyun #define DD1IER_FRM		(1 << 14)
230*4882a593Smuzhiyun #define DD1IER_BUF		(1 << 12)
231*4882a593Smuzhiyun #define DD1IER_VBK		(1 << 11)
232*4882a593Smuzhiyun #define DD1IER_RINT		(1 << 9)
233*4882a593Smuzhiyun #define DD1IER_HBK		(1 << 8)
234*4882a593Smuzhiyun #define DD1IER_ADC(n)		(1 << ((n)-1))
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun #define DEFR8			0x20020
237*4882a593Smuzhiyun #define DEFR8_CODE		(0x7790 << 16)
238*4882a593Smuzhiyun #define DEFR8_VSCS		(1 << 6)
239*4882a593Smuzhiyun #define DEFR8_DRGBS_DU(n)	((n) << 4)
240*4882a593Smuzhiyun #define DEFR8_DRGBS_MASK	(3 << 4)
241*4882a593Smuzhiyun #define DEFR8_DEFE8		(1 << 0)
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun #define DOFLR			0x20024
244*4882a593Smuzhiyun #define DOFLR_CODE		(0x7790 << 16)
245*4882a593Smuzhiyun #define DOFLR_HSYCFL1		(1 << 13)
246*4882a593Smuzhiyun #define DOFLR_VSYCFL1		(1 << 12)
247*4882a593Smuzhiyun #define DOFLR_ODDFL1		(1 << 11)
248*4882a593Smuzhiyun #define DOFLR_DISPFL1		(1 << 10)
249*4882a593Smuzhiyun #define DOFLR_CDEFL1		(1 << 9)
250*4882a593Smuzhiyun #define DOFLR_RGBFL1		(1 << 8)
251*4882a593Smuzhiyun #define DOFLR_HSYCFL0		(1 << 5)
252*4882a593Smuzhiyun #define DOFLR_VSYCFL0		(1 << 4)
253*4882a593Smuzhiyun #define DOFLR_ODDFL0		(1 << 3)
254*4882a593Smuzhiyun #define DOFLR_DISPFL0		(1 << 2)
255*4882a593Smuzhiyun #define DOFLR_CDEFL0		(1 << 1)
256*4882a593Smuzhiyun #define DOFLR_RGBFL0		(1 << 0)
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun #define DIDSR			0x20028
259*4882a593Smuzhiyun #define DIDSR_CODE		(0x7790 << 16)
260*4882a593Smuzhiyun #define DIDSR_LCDS_DCLKIN(n)	(0 << (8 + (n) * 2))
261*4882a593Smuzhiyun #define DIDSR_LCDS_LVDS0(n)	(2 << (8 + (n) * 2))
262*4882a593Smuzhiyun #define DIDSR_LCDS_LVDS1(n)	(3 << (8 + (n) * 2))
263*4882a593Smuzhiyun #define DIDSR_LCDS_MASK(n)	(3 << (8 + (n) * 2))
264*4882a593Smuzhiyun #define DIDSR_PDCS_CLK(n, clk)	(clk << ((n) * 2))
265*4882a593Smuzhiyun #define DIDSR_PDCS_MASK(n)	(3 << ((n) * 2))
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun #define DEFR10			0x20038
268*4882a593Smuzhiyun #define DEFR10_CODE		(0x7795 << 16)
269*4882a593Smuzhiyun #define DEFR10_VSPF1_RGB	(0 << 14)
270*4882a593Smuzhiyun #define DEFR10_VSPF1_YC		(1 << 14)
271*4882a593Smuzhiyun #define DEFR10_DOCF1_RGB	(0 << 12)
272*4882a593Smuzhiyun #define DEFR10_DOCF1_YC		(1 << 12)
273*4882a593Smuzhiyun #define DEFR10_YCDF0_YCBCR444	(0 << 11)
274*4882a593Smuzhiyun #define DEFR10_YCDF0_YCBCR422	(1 << 11)
275*4882a593Smuzhiyun #define DEFR10_VSPF0_RGB	(0 << 10)
276*4882a593Smuzhiyun #define DEFR10_VSPF0_YC		(1 << 10)
277*4882a593Smuzhiyun #define DEFR10_DOCF0_RGB	(0 << 8)
278*4882a593Smuzhiyun #define DEFR10_DOCF0_YC		(1 << 8)
279*4882a593Smuzhiyun #define DEFR10_TSEL_H3_TCON1	(0 << 1) /* DEFR102 register only (DU2/DU3) */
280*4882a593Smuzhiyun #define DEFR10_DEFE10		(1 << 0)
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun #define DPLLCR			0x20044
283*4882a593Smuzhiyun #define DPLLCR_CODE		(0x95 << 24)
284*4882a593Smuzhiyun #define DPLLCR_PLCS1		(1 << 23)
285*4882a593Smuzhiyun /*
286*4882a593Smuzhiyun  * PLCS0 is bit 21, but H3 ES1.x requires bit 20 to be set as well. As bit 20
287*4882a593Smuzhiyun  * isn't implemented by other SoC in the Gen3 family it can safely be set
288*4882a593Smuzhiyun  * unconditionally.
289*4882a593Smuzhiyun  */
290*4882a593Smuzhiyun #define DPLLCR_PLCS0		(3 << 20)
291*4882a593Smuzhiyun #define DPLLCR_CLKE		(1 << 18)
292*4882a593Smuzhiyun #define DPLLCR_FDPLL(n)		((n) << 12)
293*4882a593Smuzhiyun #define DPLLCR_N(n)		((n) << 5)
294*4882a593Smuzhiyun #define DPLLCR_M(n)		((n) << 3)
295*4882a593Smuzhiyun #define DPLLCR_STBY		(1 << 2)
296*4882a593Smuzhiyun #define DPLLCR_INCS_DOTCLKIN0	(0 << 0)
297*4882a593Smuzhiyun #define DPLLCR_INCS_DOTCLKIN1	(1 << 1)
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun #define DPLLC2R			0x20048
300*4882a593Smuzhiyun #define DPLLC2R_CODE		(0x95 << 24)
301*4882a593Smuzhiyun #define DPLLC2R_SELC		(1 << 12)
302*4882a593Smuzhiyun #define DPLLC2R_M(n)		((n) << 8)
303*4882a593Smuzhiyun #define DPLLC2R_FDPLL(n)	((n) << 0)
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
306*4882a593Smuzhiyun  * Display Timing Generation Registers
307*4882a593Smuzhiyun  */
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun #define HDSR			0x00040
310*4882a593Smuzhiyun #define HDER			0x00044
311*4882a593Smuzhiyun #define VDSR			0x00048
312*4882a593Smuzhiyun #define VDER			0x0004c
313*4882a593Smuzhiyun #define HCR			0x00050
314*4882a593Smuzhiyun #define HSWR			0x00054
315*4882a593Smuzhiyun #define VCR			0x00058
316*4882a593Smuzhiyun #define VSPR			0x0005c
317*4882a593Smuzhiyun #define EQWR			0x00060
318*4882a593Smuzhiyun #define SPWR			0x00064
319*4882a593Smuzhiyun #define CLAMPSR			0x00070
320*4882a593Smuzhiyun #define CLAMPWR			0x00074
321*4882a593Smuzhiyun #define DESR			0x00078
322*4882a593Smuzhiyun #define DEWR			0x0007c
323*4882a593Smuzhiyun 
324*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
325*4882a593Smuzhiyun  * Display Attribute Registers
326*4882a593Smuzhiyun  */
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun #define CP1TR			0x00080
329*4882a593Smuzhiyun #define CP2TR			0x00084
330*4882a593Smuzhiyun #define CP3TR			0x00088
331*4882a593Smuzhiyun #define CP4TR			0x0008c
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun #define DOOR			0x00090
334*4882a593Smuzhiyun #define DOOR_RGB(r, g, b)	(((r) << 18) | ((g) << 10) | ((b) << 2))
335*4882a593Smuzhiyun #define CDER			0x00094
336*4882a593Smuzhiyun #define CDER_RGB(r, g, b)	(((r) << 18) | ((g) << 10) | ((b) << 2))
337*4882a593Smuzhiyun #define BPOR			0x00098
338*4882a593Smuzhiyun #define BPOR_RGB(r, g, b)	(((r) << 18) | ((g) << 10) | ((b) << 2))
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun #define RINTOFSR		0x0009c
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun #define DSHPR			0x000c8
343*4882a593Smuzhiyun #define DSHPR_CODE		(0x7776 << 16)
344*4882a593Smuzhiyun #define DSHPR_PRIH		(0xa << 4)
345*4882a593Smuzhiyun #define DSHPR_PRIL_BPP16	(0x8 << 0)
346*4882a593Smuzhiyun #define DSHPR_PRIL_BPP32	(0x9 << 0)
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
349*4882a593Smuzhiyun  * Display Plane Registers
350*4882a593Smuzhiyun  */
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun #define PLANE_OFF		0x00100
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun #define PnMR			0x00100 /* plane 1 */
355*4882a593Smuzhiyun #define PnMR_VISL_VIN0		(0 << 26)	/* use Video Input 0 */
356*4882a593Smuzhiyun #define PnMR_VISL_VIN1		(1 << 26)	/* use Video Input 1 */
357*4882a593Smuzhiyun #define PnMR_VISL_VIN2		(2 << 26)	/* use Video Input 2 */
358*4882a593Smuzhiyun #define PnMR_VISL_VIN3		(3 << 26)	/* use Video Input 3 */
359*4882a593Smuzhiyun #define PnMR_YCDF_YUYV		(1 << 20)	/* YUYV format */
360*4882a593Smuzhiyun #define PnMR_TC_R		(0 << 17)	/* Tranparent color is PnTC1R */
361*4882a593Smuzhiyun #define PnMR_TC_CP		(1 << 17)	/* Tranparent color is color palette */
362*4882a593Smuzhiyun #define PnMR_WAE		(1 << 16)	/* Wrap around Enable */
363*4882a593Smuzhiyun #define PnMR_SPIM_TP		(0 << 12)	/* Transparent Color */
364*4882a593Smuzhiyun #define PnMR_SPIM_ALP		(1 << 12)	/* Alpha Blending */
365*4882a593Smuzhiyun #define PnMR_SPIM_EOR		(2 << 12)	/* EOR */
366*4882a593Smuzhiyun #define PnMR_SPIM_TP_OFF	(1 << 14)	/* No Transparent Color */
367*4882a593Smuzhiyun #define PnMR_CPSL_CP1		(0 << 8)	/* Color Palette selected 1 */
368*4882a593Smuzhiyun #define PnMR_CPSL_CP2		(1 << 8)	/* Color Palette selected 2 */
369*4882a593Smuzhiyun #define PnMR_CPSL_CP3		(2 << 8)	/* Color Palette selected 3 */
370*4882a593Smuzhiyun #define PnMR_CPSL_CP4		(3 << 8)	/* Color Palette selected 4 */
371*4882a593Smuzhiyun #define PnMR_DC			(1 << 7)	/* Display Area Change */
372*4882a593Smuzhiyun #define PnMR_BM_MD		(0 << 4)	/* Manual Display Change Mode */
373*4882a593Smuzhiyun #define PnMR_BM_AR		(1 << 4)	/* Auto Rendering Mode */
374*4882a593Smuzhiyun #define PnMR_BM_AD		(2 << 4)	/* Auto Display Change Mode */
375*4882a593Smuzhiyun #define PnMR_BM_VC		(3 << 4)	/* Video Capture Mode */
376*4882a593Smuzhiyun #define PnMR_DDDF_8BPP		(0 << 0)	/* 8bit */
377*4882a593Smuzhiyun #define PnMR_DDDF_16BPP		(1 << 0)	/* 16bit or 32bit */
378*4882a593Smuzhiyun #define PnMR_DDDF_ARGB		(2 << 0)	/* ARGB */
379*4882a593Smuzhiyun #define PnMR_DDDF_YC		(3 << 0)	/* YC */
380*4882a593Smuzhiyun #define PnMR_DDDF_MASK		(3 << 0)
381*4882a593Smuzhiyun 
382*4882a593Smuzhiyun #define PnMWR			0x00104
383*4882a593Smuzhiyun 
384*4882a593Smuzhiyun #define PnALPHAR		0x00108
385*4882a593Smuzhiyun #define PnALPHAR_ABIT_1		(0 << 12)
386*4882a593Smuzhiyun #define PnALPHAR_ABIT_0		(1 << 12)
387*4882a593Smuzhiyun #define PnALPHAR_ABIT_X		(2 << 12)
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun #define PnDSXR			0x00110
390*4882a593Smuzhiyun #define PnDSYR			0x00114
391*4882a593Smuzhiyun #define PnDPXR			0x00118
392*4882a593Smuzhiyun #define PnDPYR			0x0011c
393*4882a593Smuzhiyun 
394*4882a593Smuzhiyun #define PnDSA0R			0x00120
395*4882a593Smuzhiyun #define PnDSA1R			0x00124
396*4882a593Smuzhiyun #define PnDSA2R			0x00128
397*4882a593Smuzhiyun #define PnDSA_MASK		0xfffffff0
398*4882a593Smuzhiyun 
399*4882a593Smuzhiyun #define PnSPXR			0x00130
400*4882a593Smuzhiyun #define PnSPYR			0x00134
401*4882a593Smuzhiyun #define PnWASPR			0x00138
402*4882a593Smuzhiyun #define PnWAMWR			0x0013c
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun #define PnBTR			0x00140
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun #define PnTC1R			0x00144
407*4882a593Smuzhiyun #define PnTC2R			0x00148
408*4882a593Smuzhiyun #define PnTC3R			0x0014c
409*4882a593Smuzhiyun #define PnTC3R_CODE		(0x66 << 24)
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun #define PnMLR			0x00150
412*4882a593Smuzhiyun 
413*4882a593Smuzhiyun #define PnSWAPR			0x00180
414*4882a593Smuzhiyun #define PnSWAPR_DIGN		(1 << 4)
415*4882a593Smuzhiyun #define PnSWAPR_SPQW		(1 << 3)
416*4882a593Smuzhiyun #define PnSWAPR_SPLW		(1 << 2)
417*4882a593Smuzhiyun #define PnSWAPR_SPWD		(1 << 1)
418*4882a593Smuzhiyun #define PnSWAPR_SPBY		(1 << 0)
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun #define PnDDCR			0x00184
421*4882a593Smuzhiyun #define PnDDCR_CODE		(0x7775 << 16)
422*4882a593Smuzhiyun #define PnDDCR_LRGB1		(1 << 11)
423*4882a593Smuzhiyun #define PnDDCR_LRGB0		(1 << 10)
424*4882a593Smuzhiyun 
425*4882a593Smuzhiyun #define PnDDCR2			0x00188
426*4882a593Smuzhiyun #define PnDDCR2_CODE		(0x7776 << 16)
427*4882a593Smuzhiyun #define PnDDCR2_NV21		(1 << 5)
428*4882a593Smuzhiyun #define PnDDCR2_Y420		(1 << 4)
429*4882a593Smuzhiyun #define PnDDCR2_DIVU		(1 << 1)
430*4882a593Smuzhiyun #define PnDDCR2_DIVY		(1 << 0)
431*4882a593Smuzhiyun 
432*4882a593Smuzhiyun #define PnDDCR4			0x00190
433*4882a593Smuzhiyun #define PnDDCR4_CODE		(0x7766 << 16)
434*4882a593Smuzhiyun #define PnDDCR4_VSPS		(1 << 13)
435*4882a593Smuzhiyun #define PnDDCR4_SDFS_RGB	(0 << 4)
436*4882a593Smuzhiyun #define PnDDCR4_SDFS_YC		(5 << 4)
437*4882a593Smuzhiyun #define PnDDCR4_SDFS_MASK	(7 << 4)
438*4882a593Smuzhiyun #define PnDDCR4_EDF_NONE	(0 << 0)
439*4882a593Smuzhiyun #define PnDDCR4_EDF_ARGB8888	(1 << 0)
440*4882a593Smuzhiyun #define PnDDCR4_EDF_RGB888	(2 << 0)
441*4882a593Smuzhiyun #define PnDDCR4_EDF_RGB666	(3 << 0)
442*4882a593Smuzhiyun #define PnDDCR4_EDF_MASK	(7 << 0)
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun #define APnMR			0x0a100
445*4882a593Smuzhiyun #define APnMR_WAE		(1 << 16)	/* Wrap around Enable */
446*4882a593Smuzhiyun #define APnMR_DC		(1 << 7)	/* Display Area Change */
447*4882a593Smuzhiyun #define APnMR_BM_MD		(0 << 4)	/* Manual Display Change Mode */
448*4882a593Smuzhiyun #define APnMR_BM_AD		(2 << 4)	/* Auto Display Change Mode */
449*4882a593Smuzhiyun 
450*4882a593Smuzhiyun #define APnMWR			0x0a104
451*4882a593Smuzhiyun 
452*4882a593Smuzhiyun #define APnDSXR			0x0a110
453*4882a593Smuzhiyun #define APnDSYR			0x0a114
454*4882a593Smuzhiyun #define APnDPXR			0x0a118
455*4882a593Smuzhiyun #define APnDPYR			0x0a11c
456*4882a593Smuzhiyun 
457*4882a593Smuzhiyun #define APnDSA0R		0x0a120
458*4882a593Smuzhiyun #define APnDSA1R		0x0a124
459*4882a593Smuzhiyun #define APnDSA2R		0x0a128
460*4882a593Smuzhiyun 
461*4882a593Smuzhiyun #define APnSPXR			0x0a130
462*4882a593Smuzhiyun #define APnSPYR			0x0a134
463*4882a593Smuzhiyun #define APnWASPR		0x0a138
464*4882a593Smuzhiyun #define APnWAMWR		0x0a13c
465*4882a593Smuzhiyun 
466*4882a593Smuzhiyun #define APnBTR			0x0a140
467*4882a593Smuzhiyun 
468*4882a593Smuzhiyun #define APnMLR			0x0a150
469*4882a593Smuzhiyun #define APnSWAPR		0x0a180
470*4882a593Smuzhiyun 
471*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
472*4882a593Smuzhiyun  * Display Capture Registers
473*4882a593Smuzhiyun  */
474*4882a593Smuzhiyun 
475*4882a593Smuzhiyun #define DCMR			0x0c100
476*4882a593Smuzhiyun #define DCMWR			0x0c104
477*4882a593Smuzhiyun #define DCSAR			0x0c120
478*4882a593Smuzhiyun #define DCMLR			0x0c150
479*4882a593Smuzhiyun 
480*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
481*4882a593Smuzhiyun  * Color Palette Registers
482*4882a593Smuzhiyun  */
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun #define CP1_000R		0x01000
485*4882a593Smuzhiyun #define CP1_255R		0x013fc
486*4882a593Smuzhiyun #define CP2_000R		0x02000
487*4882a593Smuzhiyun #define CP2_255R		0x023fc
488*4882a593Smuzhiyun #define CP3_000R		0x03000
489*4882a593Smuzhiyun #define CP3_255R		0x033fc
490*4882a593Smuzhiyun #define CP4_000R		0x04000
491*4882a593Smuzhiyun #define CP4_255R		0x043fc
492*4882a593Smuzhiyun 
493*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
494*4882a593Smuzhiyun  * External Synchronization Control Registers
495*4882a593Smuzhiyun  */
496*4882a593Smuzhiyun 
497*4882a593Smuzhiyun #define ESCR02			0x10000
498*4882a593Smuzhiyun #define ESCR13			0x01000
499*4882a593Smuzhiyun #define ESCR_DCLKOINV		(1 << 25)
500*4882a593Smuzhiyun #define ESCR_DCLKSEL_DCLKIN	(0 << 20)
501*4882a593Smuzhiyun #define ESCR_DCLKSEL_CLKS	(1 << 20)
502*4882a593Smuzhiyun #define ESCR_DCLKSEL_MASK	(1 << 20)
503*4882a593Smuzhiyun #define ESCR_DCLKDIS		(1 << 16)
504*4882a593Smuzhiyun #define ESCR_SYNCSEL_OFF	(0 << 8)
505*4882a593Smuzhiyun #define ESCR_SYNCSEL_EXVSYNC	(2 << 8)
506*4882a593Smuzhiyun #define ESCR_SYNCSEL_EXHSYNC	(3 << 8)
507*4882a593Smuzhiyun #define ESCR_FRQSEL_MASK	(0x3f << 0)
508*4882a593Smuzhiyun 
509*4882a593Smuzhiyun #define OTAR02			0x10004
510*4882a593Smuzhiyun #define OTAR13			0x01004
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
513*4882a593Smuzhiyun  * Dual Display Output Control Registers
514*4882a593Smuzhiyun  */
515*4882a593Smuzhiyun 
516*4882a593Smuzhiyun #define DORCR			0x11000
517*4882a593Smuzhiyun #define DORCR_PG2T		(1 << 30)
518*4882a593Smuzhiyun #define DORCR_DK2S		(1 << 28)
519*4882a593Smuzhiyun #define DORCR_PG2D_DS1		(0 << 24)
520*4882a593Smuzhiyun #define DORCR_PG2D_DS2		(1 << 24)
521*4882a593Smuzhiyun #define DORCR_PG2D_FIX0		(2 << 24)
522*4882a593Smuzhiyun #define DORCR_PG2D_DOOR		(3 << 24)
523*4882a593Smuzhiyun #define DORCR_PG2D_MASK		(3 << 24)
524*4882a593Smuzhiyun #define DORCR_DR1D		(1 << 21)
525*4882a593Smuzhiyun #define DORCR_PG1D_DS1		(0 << 16)
526*4882a593Smuzhiyun #define DORCR_PG1D_DS2		(1 << 16)
527*4882a593Smuzhiyun #define DORCR_PG1D_FIX0		(2 << 16)
528*4882a593Smuzhiyun #define DORCR_PG1D_DOOR		(3 << 16)
529*4882a593Smuzhiyun #define DORCR_PG1D_MASK		(3 << 16)
530*4882a593Smuzhiyun #define DORCR_RGPV		(1 << 4)
531*4882a593Smuzhiyun #define DORCR_DPRS		(1 << 0)
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun #define DPTSR			0x11004
534*4882a593Smuzhiyun #define DPTSR_PnDK(n)		(1 << ((n) + 16))
535*4882a593Smuzhiyun #define DPTSR_PnTS(n)		(1 << (n))
536*4882a593Smuzhiyun 
537*4882a593Smuzhiyun #define DAPTSR			0x11008
538*4882a593Smuzhiyun #define DAPTSR_APnDK(n)		(1 << ((n) + 16))
539*4882a593Smuzhiyun #define DAPTSR_APnTS(n)		(1 << (n))
540*4882a593Smuzhiyun 
541*4882a593Smuzhiyun #define DS1PR			0x11020
542*4882a593Smuzhiyun #define DS2PR			0x11024
543*4882a593Smuzhiyun 
544*4882a593Smuzhiyun /* -----------------------------------------------------------------------------
545*4882a593Smuzhiyun  * YC-RGB Conversion Coefficient Registers
546*4882a593Smuzhiyun  */
547*4882a593Smuzhiyun 
548*4882a593Smuzhiyun #define YNCR			0x11080
549*4882a593Smuzhiyun #define YNOR			0x11084
550*4882a593Smuzhiyun #define CRNOR			0x11088
551*4882a593Smuzhiyun #define CBNOR			0x1108c
552*4882a593Smuzhiyun #define RCRCR			0x11090
553*4882a593Smuzhiyun #define GCRCR			0x11094
554*4882a593Smuzhiyun #define GCBCR			0x11098
555*4882a593Smuzhiyun #define BCBCR			0x1109c
556*4882a593Smuzhiyun 
557*4882a593Smuzhiyun #endif /* __RCAR_DU_REGS_H__ */
558