xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/tidss/tidss_dispc_regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2016-2018 Texas Instruments Incorporated - https://www.ti.com/
4*4882a593Smuzhiyun  * Author: Jyri Sarha <jsarha@ti.com>
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef __TIDSS_DISPC_REGS_H
8*4882a593Smuzhiyun #define __TIDSS_DISPC_REGS_H
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun enum dispc_common_regs {
11*4882a593Smuzhiyun 	NOT_APPLICABLE_OFF = 0,
12*4882a593Smuzhiyun 	DSS_REVISION_OFF,
13*4882a593Smuzhiyun 	DSS_SYSCONFIG_OFF,
14*4882a593Smuzhiyun 	DSS_SYSSTATUS_OFF,
15*4882a593Smuzhiyun 	DISPC_IRQ_EOI_OFF,
16*4882a593Smuzhiyun 	DISPC_IRQSTATUS_RAW_OFF,
17*4882a593Smuzhiyun 	DISPC_IRQSTATUS_OFF,
18*4882a593Smuzhiyun 	DISPC_IRQENABLE_SET_OFF,
19*4882a593Smuzhiyun 	DISPC_IRQENABLE_CLR_OFF,
20*4882a593Smuzhiyun 	DISPC_VID_IRQENABLE_OFF,
21*4882a593Smuzhiyun 	DISPC_VID_IRQSTATUS_OFF,
22*4882a593Smuzhiyun 	DISPC_VP_IRQENABLE_OFF,
23*4882a593Smuzhiyun 	DISPC_VP_IRQSTATUS_OFF,
24*4882a593Smuzhiyun 	WB_IRQENABLE_OFF,
25*4882a593Smuzhiyun 	WB_IRQSTATUS_OFF,
26*4882a593Smuzhiyun 	DISPC_GLOBAL_MFLAG_ATTRIBUTE_OFF,
27*4882a593Smuzhiyun 	DISPC_GLOBAL_OUTPUT_ENABLE_OFF,
28*4882a593Smuzhiyun 	DISPC_GLOBAL_BUFFER_OFF,
29*4882a593Smuzhiyun 	DSS_CBA_CFG_OFF,
30*4882a593Smuzhiyun 	DISPC_DBG_CONTROL_OFF,
31*4882a593Smuzhiyun 	DISPC_DBG_STATUS_OFF,
32*4882a593Smuzhiyun 	DISPC_CLKGATING_DISABLE_OFF,
33*4882a593Smuzhiyun 	DISPC_SECURE_DISABLE_OFF,
34*4882a593Smuzhiyun 	FBDC_REVISION_1_OFF,
35*4882a593Smuzhiyun 	FBDC_REVISION_2_OFF,
36*4882a593Smuzhiyun 	FBDC_REVISION_3_OFF,
37*4882a593Smuzhiyun 	FBDC_REVISION_4_OFF,
38*4882a593Smuzhiyun 	FBDC_REVISION_5_OFF,
39*4882a593Smuzhiyun 	FBDC_REVISION_6_OFF,
40*4882a593Smuzhiyun 	FBDC_COMMON_CONTROL_OFF,
41*4882a593Smuzhiyun 	FBDC_CONSTANT_COLOR_0_OFF,
42*4882a593Smuzhiyun 	FBDC_CONSTANT_COLOR_1_OFF,
43*4882a593Smuzhiyun 	DISPC_CONNECTIONS_OFF,
44*4882a593Smuzhiyun 	DISPC_MSS_VP1_OFF,
45*4882a593Smuzhiyun 	DISPC_MSS_VP3_OFF,
46*4882a593Smuzhiyun 	DISPC_COMMON_REG_TABLE_LEN,
47*4882a593Smuzhiyun };
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun /*
50*4882a593Smuzhiyun  * dispc_common_regmap should be defined as const u16 * and pointing
51*4882a593Smuzhiyun  * to a valid dss common register map for the platform, before the
52*4882a593Smuzhiyun  * macros bellow can be used.
53*4882a593Smuzhiyun  */
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun #define REG(r) (dispc_common_regmap[r ## _OFF])
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define DSS_REVISION			REG(DSS_REVISION)
58*4882a593Smuzhiyun #define DSS_SYSCONFIG			REG(DSS_SYSCONFIG)
59*4882a593Smuzhiyun #define DSS_SYSSTATUS			REG(DSS_SYSSTATUS)
60*4882a593Smuzhiyun #define DISPC_IRQ_EOI			REG(DISPC_IRQ_EOI)
61*4882a593Smuzhiyun #define DISPC_IRQSTATUS_RAW		REG(DISPC_IRQSTATUS_RAW)
62*4882a593Smuzhiyun #define DISPC_IRQSTATUS			REG(DISPC_IRQSTATUS)
63*4882a593Smuzhiyun #define DISPC_IRQENABLE_SET		REG(DISPC_IRQENABLE_SET)
64*4882a593Smuzhiyun #define DISPC_IRQENABLE_CLR		REG(DISPC_IRQENABLE_CLR)
65*4882a593Smuzhiyun #define DISPC_VID_IRQENABLE(n)		(REG(DISPC_VID_IRQENABLE) + (n) * 4)
66*4882a593Smuzhiyun #define DISPC_VID_IRQSTATUS(n)		(REG(DISPC_VID_IRQSTATUS) + (n) * 4)
67*4882a593Smuzhiyun #define DISPC_VP_IRQENABLE(n)		(REG(DISPC_VP_IRQENABLE) + (n) * 4)
68*4882a593Smuzhiyun #define DISPC_VP_IRQSTATUS(n)		(REG(DISPC_VP_IRQSTATUS) + (n) * 4)
69*4882a593Smuzhiyun #define WB_IRQENABLE			REG(WB_IRQENABLE)
70*4882a593Smuzhiyun #define WB_IRQSTATUS			REG(WB_IRQSTATUS)
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun #define DISPC_GLOBAL_MFLAG_ATTRIBUTE	REG(DISPC_GLOBAL_MFLAG_ATTRIBUTE)
73*4882a593Smuzhiyun #define DISPC_GLOBAL_OUTPUT_ENABLE	REG(DISPC_GLOBAL_OUTPUT_ENABLE)
74*4882a593Smuzhiyun #define DISPC_GLOBAL_BUFFER		REG(DISPC_GLOBAL_BUFFER)
75*4882a593Smuzhiyun #define DSS_CBA_CFG			REG(DSS_CBA_CFG)
76*4882a593Smuzhiyun #define DISPC_DBG_CONTROL		REG(DISPC_DBG_CONTROL)
77*4882a593Smuzhiyun #define DISPC_DBG_STATUS		REG(DISPC_DBG_STATUS)
78*4882a593Smuzhiyun #define DISPC_CLKGATING_DISABLE		REG(DISPC_CLKGATING_DISABLE)
79*4882a593Smuzhiyun #define DISPC_SECURE_DISABLE		REG(DISPC_SECURE_DISABLE)
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #define FBDC_REVISION_1			REG(FBDC_REVISION_1)
82*4882a593Smuzhiyun #define FBDC_REVISION_2			REG(FBDC_REVISION_2)
83*4882a593Smuzhiyun #define FBDC_REVISION_3			REG(FBDC_REVISION_3)
84*4882a593Smuzhiyun #define FBDC_REVISION_4			REG(FBDC_REVISION_4)
85*4882a593Smuzhiyun #define FBDC_REVISION_5			REG(FBDC_REVISION_5)
86*4882a593Smuzhiyun #define FBDC_REVISION_6			REG(FBDC_REVISION_6)
87*4882a593Smuzhiyun #define FBDC_COMMON_CONTROL		REG(FBDC_COMMON_CONTROL)
88*4882a593Smuzhiyun #define FBDC_CONSTANT_COLOR_0		REG(FBDC_CONSTANT_COLOR_0)
89*4882a593Smuzhiyun #define FBDC_CONSTANT_COLOR_1		REG(FBDC_CONSTANT_COLOR_1)
90*4882a593Smuzhiyun #define DISPC_CONNECTIONS		REG(DISPC_CONNECTIONS)
91*4882a593Smuzhiyun #define DISPC_MSS_VP1			REG(DISPC_MSS_VP1)
92*4882a593Smuzhiyun #define DISPC_MSS_VP3			REG(DISPC_MSS_VP3)
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun /* VID */
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun #define DISPC_VID_ACCUH_0		0x0
97*4882a593Smuzhiyun #define DISPC_VID_ACCUH_1		0x4
98*4882a593Smuzhiyun #define DISPC_VID_ACCUH2_0		0x8
99*4882a593Smuzhiyun #define DISPC_VID_ACCUH2_1		0xc
100*4882a593Smuzhiyun #define DISPC_VID_ACCUV_0		0x10
101*4882a593Smuzhiyun #define DISPC_VID_ACCUV_1		0x14
102*4882a593Smuzhiyun #define DISPC_VID_ACCUV2_0		0x18
103*4882a593Smuzhiyun #define DISPC_VID_ACCUV2_1		0x1c
104*4882a593Smuzhiyun #define DISPC_VID_ATTRIBUTES		0x20
105*4882a593Smuzhiyun #define DISPC_VID_ATTRIBUTES2		0x24
106*4882a593Smuzhiyun #define DISPC_VID_BA_0			0x28
107*4882a593Smuzhiyun #define DISPC_VID_BA_1			0x2c
108*4882a593Smuzhiyun #define DISPC_VID_BA_UV_0		0x30
109*4882a593Smuzhiyun #define DISPC_VID_BA_UV_1		0x34
110*4882a593Smuzhiyun #define DISPC_VID_BUF_SIZE_STATUS	0x38
111*4882a593Smuzhiyun #define DISPC_VID_BUF_THRESHOLD		0x3c
112*4882a593Smuzhiyun #define DISPC_VID_CSC_COEF(n)		(0x40 + (n) * 4)
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun #define DISPC_VID_FIRH			0x5c
115*4882a593Smuzhiyun #define DISPC_VID_FIRH2			0x60
116*4882a593Smuzhiyun #define DISPC_VID_FIRV			0x64
117*4882a593Smuzhiyun #define DISPC_VID_FIRV2			0x68
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_H0		0x6c
120*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_H0(phase)	(0x6c + (phase) * 4)
121*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_H0_C	0x90
122*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_H0_C(phase)	(0x90 + (phase) * 4)
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_H12		0xb4
125*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_H12(phase)	(0xb4 + (phase) * 4)
126*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_H12_C	0xf4
127*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_H12_C(phase)	(0xf4 + (phase) * 4)
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_V0		0x134
130*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_V0(phase)	(0x134 + (phase) * 4)
131*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_V0_C	0x158
132*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_V0_C(phase)	(0x158 + (phase) * 4)
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_V12		0x17c
135*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_V12(phase)	(0x17c + (phase) * 4)
136*4882a593Smuzhiyun #define DISPC_VID_FIR_COEFS_V12_C	0x1bc
137*4882a593Smuzhiyun #define DISPC_VID_FIR_COEF_V12_C(phase)	(0x1bc + (phase) * 4)
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun #define DISPC_VID_GLOBAL_ALPHA		0x1fc
140*4882a593Smuzhiyun #define DISPC_VID_K2G_IRQENABLE		0x200 /* K2G */
141*4882a593Smuzhiyun #define DISPC_VID_K2G_IRQSTATUS		0x204 /* K2G */
142*4882a593Smuzhiyun #define DISPC_VID_MFLAG_THRESHOLD	0x208
143*4882a593Smuzhiyun #define DISPC_VID_PICTURE_SIZE		0x20c
144*4882a593Smuzhiyun #define DISPC_VID_PIXEL_INC		0x210
145*4882a593Smuzhiyun #define DISPC_VID_K2G_POSITION		0x214 /* K2G */
146*4882a593Smuzhiyun #define DISPC_VID_PRELOAD		0x218
147*4882a593Smuzhiyun #define DISPC_VID_ROW_INC		0x21c
148*4882a593Smuzhiyun #define DISPC_VID_SIZE			0x220
149*4882a593Smuzhiyun #define DISPC_VID_BA_EXT_0		0x22c
150*4882a593Smuzhiyun #define DISPC_VID_BA_EXT_1		0x230
151*4882a593Smuzhiyun #define DISPC_VID_BA_UV_EXT_0		0x234
152*4882a593Smuzhiyun #define DISPC_VID_BA_UV_EXT_1		0x238
153*4882a593Smuzhiyun #define DISPC_VID_CSC_COEF7		0x23c
154*4882a593Smuzhiyun #define DISPC_VID_ROW_INC_UV		0x248
155*4882a593Smuzhiyun #define DISPC_VID_CLUT			0x260
156*4882a593Smuzhiyun #define DISPC_VID_SAFETY_ATTRIBUTES	0x2a0
157*4882a593Smuzhiyun #define DISPC_VID_SAFETY_CAPT_SIGNATURE	0x2a4
158*4882a593Smuzhiyun #define DISPC_VID_SAFETY_POSITION	0x2a8
159*4882a593Smuzhiyun #define DISPC_VID_SAFETY_REF_SIGNATURE	0x2ac
160*4882a593Smuzhiyun #define DISPC_VID_SAFETY_SIZE		0x2b0
161*4882a593Smuzhiyun #define DISPC_VID_SAFETY_LFSR_SEED	0x2b4
162*4882a593Smuzhiyun #define DISPC_VID_LUMAKEY		0x2b8
163*4882a593Smuzhiyun #define DISPC_VID_DMA_BUFSIZE		0x2bc /* J721E */
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun /* OVR */
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun #define DISPC_OVR_CONFIG		0x0
168*4882a593Smuzhiyun #define DISPC_OVR_VIRTVP		0x4 /* J721E */
169*4882a593Smuzhiyun #define DISPC_OVR_DEFAULT_COLOR		0x8
170*4882a593Smuzhiyun #define DISPC_OVR_DEFAULT_COLOR2	0xc
171*4882a593Smuzhiyun #define DISPC_OVR_TRANS_COLOR_MAX	0x10
172*4882a593Smuzhiyun #define DISPC_OVR_TRANS_COLOR_MAX2	0x14
173*4882a593Smuzhiyun #define DISPC_OVR_TRANS_COLOR_MIN	0x18
174*4882a593Smuzhiyun #define DISPC_OVR_TRANS_COLOR_MIN2	0x1c
175*4882a593Smuzhiyun #define DISPC_OVR_ATTRIBUTES(n)		(0x20 + (n) * 4)
176*4882a593Smuzhiyun #define DISPC_OVR_ATTRIBUTES2(n)	(0x34 + (n) * 4) /* J721E */
177*4882a593Smuzhiyun /* VP */
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun #define DISPC_VP_CONFIG				0x0
180*4882a593Smuzhiyun #define DISPC_VP_CONTROL			0x4
181*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF0			0x8
182*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF1			0xc
183*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF2			0x10
184*4882a593Smuzhiyun #define DISPC_VP_DATA_CYCLE_0			0x14
185*4882a593Smuzhiyun #define DISPC_VP_DATA_CYCLE_1			0x18
186*4882a593Smuzhiyun #define DISPC_VP_K2G_GAMMA_TABLE		0x20 /* K2G */
187*4882a593Smuzhiyun #define DISPC_VP_K2G_IRQENABLE			0x3c /* K2G */
188*4882a593Smuzhiyun #define DISPC_VP_K2G_IRQSTATUS			0x40 /* K2G */
189*4882a593Smuzhiyun #define DISPC_VP_DATA_CYCLE_2			0x1c
190*4882a593Smuzhiyun #define DISPC_VP_LINE_NUMBER			0x44
191*4882a593Smuzhiyun #define DISPC_VP_POL_FREQ			0x4c
192*4882a593Smuzhiyun #define DISPC_VP_SIZE_SCREEN			0x50
193*4882a593Smuzhiyun #define DISPC_VP_TIMING_H			0x54
194*4882a593Smuzhiyun #define DISPC_VP_TIMING_V			0x58
195*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF3			0x5c
196*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF4			0x60
197*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF5			0x64
198*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF6			0x68
199*4882a593Smuzhiyun #define DISPC_VP_CSC_COEF7			0x6c
200*4882a593Smuzhiyun #define DISPC_VP_SAFETY_ATTRIBUTES_0		0x70
201*4882a593Smuzhiyun #define DISPC_VP_SAFETY_ATTRIBUTES_1		0x74
202*4882a593Smuzhiyun #define DISPC_VP_SAFETY_ATTRIBUTES_2		0x78
203*4882a593Smuzhiyun #define DISPC_VP_SAFETY_ATTRIBUTES_3		0x7c
204*4882a593Smuzhiyun #define DISPC_VP_SAFETY_CAPT_SIGNATURE_0	0x90
205*4882a593Smuzhiyun #define DISPC_VP_SAFETY_CAPT_SIGNATURE_1	0x94
206*4882a593Smuzhiyun #define DISPC_VP_SAFETY_CAPT_SIGNATURE_2	0x98
207*4882a593Smuzhiyun #define DISPC_VP_SAFETY_CAPT_SIGNATURE_3	0x9c
208*4882a593Smuzhiyun #define DISPC_VP_SAFETY_POSITION_0		0xb0
209*4882a593Smuzhiyun #define DISPC_VP_SAFETY_POSITION_1		0xb4
210*4882a593Smuzhiyun #define DISPC_VP_SAFETY_POSITION_2		0xb8
211*4882a593Smuzhiyun #define DISPC_VP_SAFETY_POSITION_3		0xbc
212*4882a593Smuzhiyun #define DISPC_VP_SAFETY_REF_SIGNATURE_0		0xd0
213*4882a593Smuzhiyun #define DISPC_VP_SAFETY_REF_SIGNATURE_1		0xd4
214*4882a593Smuzhiyun #define DISPC_VP_SAFETY_REF_SIGNATURE_2		0xd8
215*4882a593Smuzhiyun #define DISPC_VP_SAFETY_REF_SIGNATURE_3		0xdc
216*4882a593Smuzhiyun #define DISPC_VP_SAFETY_SIZE_0			0xf0
217*4882a593Smuzhiyun #define DISPC_VP_SAFETY_SIZE_1			0xf4
218*4882a593Smuzhiyun #define DISPC_VP_SAFETY_SIZE_2			0xf8
219*4882a593Smuzhiyun #define DISPC_VP_SAFETY_SIZE_3			0xfc
220*4882a593Smuzhiyun #define DISPC_VP_SAFETY_LFSR_SEED		0x110
221*4882a593Smuzhiyun #define DISPC_VP_GAMMA_TABLE			0x120
222*4882a593Smuzhiyun #define DISPC_VP_DSS_OLDI_CFG			0x160
223*4882a593Smuzhiyun #define DISPC_VP_DSS_OLDI_STATUS		0x164
224*4882a593Smuzhiyun #define DISPC_VP_DSS_OLDI_LB			0x168
225*4882a593Smuzhiyun #define DISPC_VP_DSS_MERGE_SPLIT		0x16c /* J721E */
226*4882a593Smuzhiyun #define DISPC_VP_DSS_DMA_THREADSIZE		0x170 /* J721E */
227*4882a593Smuzhiyun #define DISPC_VP_DSS_DMA_THREADSIZE_STATUS	0x174 /* J721E */
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun /*
230*4882a593Smuzhiyun  * OLDI IO_CTRL register offsets. On AM654 the registers are found
231*4882a593Smuzhiyun  * from CTRL_MMR0, there the syscon regmap should map 0x14 bytes from
232*4882a593Smuzhiyun  * CTRLMMR0P1_OLDI_DAT0_IO_CTRL to CTRLMMR0P1_OLDI_CLK_IO_CTRL
233*4882a593Smuzhiyun  * register range.
234*4882a593Smuzhiyun  */
235*4882a593Smuzhiyun #define OLDI_DAT0_IO_CTRL			0x00
236*4882a593Smuzhiyun #define OLDI_DAT1_IO_CTRL			0x04
237*4882a593Smuzhiyun #define OLDI_DAT2_IO_CTRL			0x08
238*4882a593Smuzhiyun #define OLDI_DAT3_IO_CTRL			0x0C
239*4882a593Smuzhiyun #define OLDI_CLK_IO_CTRL			0x10
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun #define OLDI_PWRDN_TX				BIT(8)
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun #endif /* __TIDSS_DISPC_REGS_H */
244