xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/mediatek/mtk_dpi_regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2014 MediaTek Inc.
4*4882a593Smuzhiyun  * Author: Jie Qiu <jie.qiu@mediatek.com>
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun #ifndef __MTK_DPI_REGS_H
7*4882a593Smuzhiyun #define __MTK_DPI_REGS_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define DPI_EN			0x00
10*4882a593Smuzhiyun #define EN				BIT(0)
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define DPI_RET			0x04
13*4882a593Smuzhiyun #define RST				BIT(0)
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define DPI_INTEN		0x08
16*4882a593Smuzhiyun #define INT_VSYNC_EN			BIT(0)
17*4882a593Smuzhiyun #define INT_VDE_EN			BIT(1)
18*4882a593Smuzhiyun #define INT_UNDERFLOW_EN		BIT(2)
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define DPI_INTSTA		0x0C
21*4882a593Smuzhiyun #define INT_VSYNC_STA			BIT(0)
22*4882a593Smuzhiyun #define INT_VDE_STA			BIT(1)
23*4882a593Smuzhiyun #define INT_UNDERFLOW_STA		BIT(2)
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define DPI_CON			0x10
26*4882a593Smuzhiyun #define BG_ENABLE			BIT(0)
27*4882a593Smuzhiyun #define IN_RB_SWAP			BIT(1)
28*4882a593Smuzhiyun #define INTL_EN				BIT(2)
29*4882a593Smuzhiyun #define TDFP_EN				BIT(3)
30*4882a593Smuzhiyun #define CLPF_EN				BIT(4)
31*4882a593Smuzhiyun #define YUV422_EN			BIT(5)
32*4882a593Smuzhiyun #define CSC_ENABLE			BIT(6)
33*4882a593Smuzhiyun #define R601_SEL			BIT(7)
34*4882a593Smuzhiyun #define EMBSYNC_EN			BIT(8)
35*4882a593Smuzhiyun #define VS_LODD_EN			BIT(16)
36*4882a593Smuzhiyun #define VS_LEVEN_EN			BIT(17)
37*4882a593Smuzhiyun #define VS_RODD_EN			BIT(18)
38*4882a593Smuzhiyun #define VS_REVEN			BIT(19)
39*4882a593Smuzhiyun #define FAKE_DE_LODD			BIT(20)
40*4882a593Smuzhiyun #define FAKE_DE_LEVEN			BIT(21)
41*4882a593Smuzhiyun #define FAKE_DE_RODD			BIT(22)
42*4882a593Smuzhiyun #define FAKE_DE_REVEN			BIT(23)
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define DPI_OUTPUT_SETTING	0x14
45*4882a593Smuzhiyun #define CH_SWAP				0
46*4882a593Smuzhiyun #define CH_SWAP_MASK			(0x7 << 0)
47*4882a593Smuzhiyun #define SWAP_RGB			0x00
48*4882a593Smuzhiyun #define SWAP_GBR			0x01
49*4882a593Smuzhiyun #define SWAP_BRG			0x02
50*4882a593Smuzhiyun #define SWAP_RBG			0x03
51*4882a593Smuzhiyun #define SWAP_GRB			0x04
52*4882a593Smuzhiyun #define SWAP_BGR			0x05
53*4882a593Smuzhiyun #define BIT_SWAP			BIT(3)
54*4882a593Smuzhiyun #define B_MASK				BIT(4)
55*4882a593Smuzhiyun #define G_MASK				BIT(5)
56*4882a593Smuzhiyun #define R_MASK				BIT(6)
57*4882a593Smuzhiyun #define DE_MASK				BIT(8)
58*4882a593Smuzhiyun #define HS_MASK				BIT(9)
59*4882a593Smuzhiyun #define VS_MASK				BIT(10)
60*4882a593Smuzhiyun #define DE_POL				BIT(12)
61*4882a593Smuzhiyun #define HSYNC_POL			BIT(13)
62*4882a593Smuzhiyun #define VSYNC_POL			BIT(14)
63*4882a593Smuzhiyun #define CK_POL				BIT(15)
64*4882a593Smuzhiyun #define OEN_OFF				BIT(16)
65*4882a593Smuzhiyun #define EDGE_SEL			BIT(17)
66*4882a593Smuzhiyun #define OUT_BIT				18
67*4882a593Smuzhiyun #define OUT_BIT_MASK			(0x3 << 18)
68*4882a593Smuzhiyun #define OUT_BIT_8			0x00
69*4882a593Smuzhiyun #define OUT_BIT_10			0x01
70*4882a593Smuzhiyun #define OUT_BIT_12			0x02
71*4882a593Smuzhiyun #define OUT_BIT_16			0x03
72*4882a593Smuzhiyun #define YC_MAP				20
73*4882a593Smuzhiyun #define YC_MAP_MASK			(0x7 << 20)
74*4882a593Smuzhiyun #define YC_MAP_RGB			0x00
75*4882a593Smuzhiyun #define YC_MAP_CYCY			0x04
76*4882a593Smuzhiyun #define YC_MAP_YCYC			0x05
77*4882a593Smuzhiyun #define YC_MAP_CY			0x06
78*4882a593Smuzhiyun #define YC_MAP_YC			0x07
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define DPI_SIZE		0x18
81*4882a593Smuzhiyun #define HSIZE				0
82*4882a593Smuzhiyun #define HSIZE_MASK			(0x1FFF << 0)
83*4882a593Smuzhiyun #define VSIZE				16
84*4882a593Smuzhiyun #define VSIZE_MASK			(0x1FFF << 16)
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define DPI_DDR_SETTING		0x1C
87*4882a593Smuzhiyun #define DDR_EN				BIT(0)
88*4882a593Smuzhiyun #define DDDR_SEL			BIT(1)
89*4882a593Smuzhiyun #define DDR_4PHASE			BIT(2)
90*4882a593Smuzhiyun #define DDR_WIDTH			(0x3 << 4)
91*4882a593Smuzhiyun #define DDR_PAD_MODE			(0x1 << 8)
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #define DPI_TGEN_HWIDTH		0x20
94*4882a593Smuzhiyun #define HPW				0
95*4882a593Smuzhiyun #define HPW_MASK			(0xFFF << 0)
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define DPI_TGEN_HPORCH		0x24
98*4882a593Smuzhiyun #define HBP				0
99*4882a593Smuzhiyun #define HBP_MASK			(0xFFF << 0)
100*4882a593Smuzhiyun #define HFP				16
101*4882a593Smuzhiyun #define HFP_MASK			(0xFFF << 16)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define DPI_TGEN_VWIDTH		0x28
104*4882a593Smuzhiyun #define DPI_TGEN_VPORCH		0x2C
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun #define VSYNC_WIDTH_SHIFT		0
107*4882a593Smuzhiyun #define VSYNC_WIDTH_MASK		(0xFFF << 0)
108*4882a593Smuzhiyun #define VSYNC_HALF_LINE_SHIFT		16
109*4882a593Smuzhiyun #define VSYNC_HALF_LINE_MASK		BIT(16)
110*4882a593Smuzhiyun #define VSYNC_BACK_PORCH_SHIFT		0
111*4882a593Smuzhiyun #define VSYNC_BACK_PORCH_MASK		(0xFFF << 0)
112*4882a593Smuzhiyun #define VSYNC_FRONT_PORCH_SHIFT		16
113*4882a593Smuzhiyun #define VSYNC_FRONT_PORCH_MASK		(0xFFF << 16)
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #define DPI_BG_HCNTL		0x30
116*4882a593Smuzhiyun #define BG_RIGHT			(0x1FFF << 0)
117*4882a593Smuzhiyun #define BG_LEFT				(0x1FFF << 16)
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define DPI_BG_VCNTL		0x34
120*4882a593Smuzhiyun #define BG_BOT				(0x1FFF << 0)
121*4882a593Smuzhiyun #define BG_TOP				(0x1FFF << 16)
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define DPI_BG_COLOR		0x38
124*4882a593Smuzhiyun #define BG_B				(0xF << 0)
125*4882a593Smuzhiyun #define BG_G				(0xF << 8)
126*4882a593Smuzhiyun #define BG_R				(0xF << 16)
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #define DPI_FIFO_CTL		0x3C
129*4882a593Smuzhiyun #define FIFO_VALID_SET			(0x1F << 0)
130*4882a593Smuzhiyun #define FIFO_RST_SEL			(0x1 << 8)
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun #define DPI_STATUS		0x40
133*4882a593Smuzhiyun #define VCOUNTER			(0x1FFF << 0)
134*4882a593Smuzhiyun #define DPI_BUSY			BIT(16)
135*4882a593Smuzhiyun #define OUTEN				BIT(17)
136*4882a593Smuzhiyun #define FIELD				BIT(20)
137*4882a593Smuzhiyun #define TDLR				BIT(21)
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun #define DPI_TMODE		0x44
140*4882a593Smuzhiyun #define DPI_OEN_ON			BIT(0)
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define DPI_CHECKSUM		0x48
143*4882a593Smuzhiyun #define DPI_CHECKSUM_MASK		(0xFFFFFF << 0)
144*4882a593Smuzhiyun #define DPI_CHECKSUM_READY		BIT(30)
145*4882a593Smuzhiyun #define DPI_CHECKSUM_EN			BIT(31)
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun #define DPI_DUMMY		0x50
148*4882a593Smuzhiyun #define DPI_DUMMY_MASK			(0xFFFFFFFF << 0)
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #define DPI_TGEN_VWIDTH_LEVEN	0x68
151*4882a593Smuzhiyun #define DPI_TGEN_VPORCH_LEVEN	0x6C
152*4882a593Smuzhiyun #define DPI_TGEN_VWIDTH_RODD	0x70
153*4882a593Smuzhiyun #define DPI_TGEN_VPORCH_RODD	0x74
154*4882a593Smuzhiyun #define DPI_TGEN_VWIDTH_REVEN	0x78
155*4882a593Smuzhiyun #define DPI_TGEN_VPORCH_REVEN	0x7C
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun #define DPI_ESAV_VTIMING_LODD	0x80
158*4882a593Smuzhiyun #define ESAV_VOFST_LODD			(0xFFF << 0)
159*4882a593Smuzhiyun #define ESAV_VWID_LODD			(0xFFF << 16)
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun #define DPI_ESAV_VTIMING_LEVEN	0x84
162*4882a593Smuzhiyun #define ESAV_VOFST_LEVEN		(0xFFF << 0)
163*4882a593Smuzhiyun #define ESAV_VWID_LEVEN			(0xFFF << 16)
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun #define DPI_ESAV_VTIMING_RODD	0x88
166*4882a593Smuzhiyun #define ESAV_VOFST_RODD			(0xFFF << 0)
167*4882a593Smuzhiyun #define ESAV_VWID_RODD			(0xFFF << 16)
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun #define DPI_ESAV_VTIMING_REVEN	0x8C
170*4882a593Smuzhiyun #define ESAV_VOFST_REVEN		(0xFFF << 0)
171*4882a593Smuzhiyun #define ESAV_VWID_REVEN			(0xFFF << 16)
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define DPI_ESAV_FTIMING	0x90
174*4882a593Smuzhiyun #define ESAV_FOFST_ODD			(0xFFF << 0)
175*4882a593Smuzhiyun #define ESAV_FOFST_EVEN			(0xFFF << 16)
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun #define DPI_CLPF_SETTING	0x94
178*4882a593Smuzhiyun #define CLPF_TYPE			(0x3 << 0)
179*4882a593Smuzhiyun #define ROUND_EN			BIT(4)
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun #define DPI_Y_LIMIT		0x98
182*4882a593Smuzhiyun #define Y_LIMINT_BOT			0
183*4882a593Smuzhiyun #define Y_LIMINT_BOT_MASK		(0xFFF << 0)
184*4882a593Smuzhiyun #define Y_LIMINT_TOP			16
185*4882a593Smuzhiyun #define Y_LIMINT_TOP_MASK		(0xFFF << 16)
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun #define DPI_C_LIMIT		0x9C
188*4882a593Smuzhiyun #define C_LIMIT_BOT			0
189*4882a593Smuzhiyun #define C_LIMIT_BOT_MASK		(0xFFF << 0)
190*4882a593Smuzhiyun #define C_LIMIT_TOP			16
191*4882a593Smuzhiyun #define C_LIMIT_TOP_MASK		(0xFFF << 16)
192*4882a593Smuzhiyun 
193*4882a593Smuzhiyun #define DPI_YUV422_SETTING	0xA0
194*4882a593Smuzhiyun #define UV_SWAP				BIT(0)
195*4882a593Smuzhiyun #define CR_DELSEL			BIT(4)
196*4882a593Smuzhiyun #define CB_DELSEL			BIT(5)
197*4882a593Smuzhiyun #define Y_DELSEL			BIT(6)
198*4882a593Smuzhiyun #define DE_DELSEL			BIT(7)
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define DPI_EMBSYNC_SETTING	0xA4
201*4882a593Smuzhiyun #define EMBSYNC_R_CR_EN			BIT(0)
202*4882a593Smuzhiyun #define EMPSYNC_G_Y_EN			BIT(1)
203*4882a593Smuzhiyun #define EMPSYNC_B_CB_EN			BIT(2)
204*4882a593Smuzhiyun #define ESAV_F_INV			BIT(4)
205*4882a593Smuzhiyun #define ESAV_V_INV			BIT(5)
206*4882a593Smuzhiyun #define ESAV_H_INV			BIT(6)
207*4882a593Smuzhiyun #define ESAV_CODE_MAN			BIT(8)
208*4882a593Smuzhiyun #define VS_OUT_SEL			(0x7 << 12)
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun #define DPI_ESAV_CODE_SET0	0xA8
211*4882a593Smuzhiyun #define ESAV_CODE0			(0xFFF << 0)
212*4882a593Smuzhiyun #define ESAV_CODE1			(0xFFF << 16)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #define DPI_ESAV_CODE_SET1	0xAC
215*4882a593Smuzhiyun #define ESAV_CODE2			(0xFFF << 0)
216*4882a593Smuzhiyun #define ESAV_CODE3_MSB			BIT(16)
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define EDGE_SEL_EN			BIT(5)
219*4882a593Smuzhiyun #define H_FRE_2N			BIT(25)
220*4882a593Smuzhiyun #endif /* __MTK_DPI_REGS_H */
221