xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/rockchip/cdn-dp-reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
4*4882a593Smuzhiyun  * Author: Chris Zhong <zyw@rock-chips.com>
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _CDN_DP_REG_H
8*4882a593Smuzhiyun #define _CDN_DP_REG_H
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <linux/bitops.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define ADDR_IMEM		0x10000
13*4882a593Smuzhiyun #define ADDR_DMEM		0x20000
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* APB CFG addr */
16*4882a593Smuzhiyun #define APB_CTRL			0
17*4882a593Smuzhiyun #define XT_INT_CTRL			0x04
18*4882a593Smuzhiyun #define MAILBOX_FULL_ADDR		0x08
19*4882a593Smuzhiyun #define MAILBOX_EMPTY_ADDR		0x0c
20*4882a593Smuzhiyun #define MAILBOX0_WR_DATA		0x10
21*4882a593Smuzhiyun #define MAILBOX0_RD_DATA		0x14
22*4882a593Smuzhiyun #define KEEP_ALIVE			0x18
23*4882a593Smuzhiyun #define VER_L				0x1c
24*4882a593Smuzhiyun #define VER_H				0x20
25*4882a593Smuzhiyun #define VER_LIB_L_ADDR			0x24
26*4882a593Smuzhiyun #define VER_LIB_H_ADDR			0x28
27*4882a593Smuzhiyun #define SW_DEBUG_L			0x2c
28*4882a593Smuzhiyun #define SW_DEBUG_H			0x30
29*4882a593Smuzhiyun #define MAILBOX_INT_MASK		0x34
30*4882a593Smuzhiyun #define MAILBOX_INT_STATUS		0x38
31*4882a593Smuzhiyun #define SW_CLK_L			0x3c
32*4882a593Smuzhiyun #define SW_CLK_H			0x40
33*4882a593Smuzhiyun #define SW_EVENTS0			0x44
34*4882a593Smuzhiyun #define SW_EVENTS1			0x48
35*4882a593Smuzhiyun #define SW_EVENTS2			0x4c
36*4882a593Smuzhiyun #define SW_EVENTS3			0x50
37*4882a593Smuzhiyun #define XT_OCD_CTRL			0x60
38*4882a593Smuzhiyun #define APB_INT_MASK			0x6c
39*4882a593Smuzhiyun #define APB_STATUS_MASK			0x70
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /* audio decoder addr */
42*4882a593Smuzhiyun #define AUDIO_SRC_CNTL			0x30000
43*4882a593Smuzhiyun #define AUDIO_SRC_CNFG			0x30004
44*4882a593Smuzhiyun #define COM_CH_STTS_BITS		0x30008
45*4882a593Smuzhiyun #define STTS_BIT_CH(x)			(0x3000c + ((x) << 2))
46*4882a593Smuzhiyun #define SPDIF_CTRL_ADDR			0x3004c
47*4882a593Smuzhiyun #define SPDIF_CH1_CS_3100_ADDR		0x30050
48*4882a593Smuzhiyun #define SPDIF_CH1_CS_6332_ADDR		0x30054
49*4882a593Smuzhiyun #define SPDIF_CH1_CS_9564_ADDR		0x30058
50*4882a593Smuzhiyun #define SPDIF_CH1_CS_12796_ADDR		0x3005c
51*4882a593Smuzhiyun #define SPDIF_CH1_CS_159128_ADDR	0x30060
52*4882a593Smuzhiyun #define SPDIF_CH1_CS_191160_ADDR	0x30064
53*4882a593Smuzhiyun #define SPDIF_CH2_CS_3100_ADDR		0x30068
54*4882a593Smuzhiyun #define SPDIF_CH2_CS_6332_ADDR		0x3006c
55*4882a593Smuzhiyun #define SPDIF_CH2_CS_9564_ADDR		0x30070
56*4882a593Smuzhiyun #define SPDIF_CH2_CS_12796_ADDR		0x30074
57*4882a593Smuzhiyun #define SPDIF_CH2_CS_159128_ADDR	0x30078
58*4882a593Smuzhiyun #define SPDIF_CH2_CS_191160_ADDR	0x3007c
59*4882a593Smuzhiyun #define SMPL2PKT_CNTL			0x30080
60*4882a593Smuzhiyun #define SMPL2PKT_CNFG			0x30084
61*4882a593Smuzhiyun #define FIFO_CNTL			0x30088
62*4882a593Smuzhiyun #define FIFO_STTS			0x3008c
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun /* source pif addr */
65*4882a593Smuzhiyun #define SOURCE_PIF_WR_ADDR		0x30800
66*4882a593Smuzhiyun #define SOURCE_PIF_WR_REQ		0x30804
67*4882a593Smuzhiyun #define SOURCE_PIF_RD_ADDR		0x30808
68*4882a593Smuzhiyun #define SOURCE_PIF_RD_REQ		0x3080c
69*4882a593Smuzhiyun #define SOURCE_PIF_DATA_WR		0x30810
70*4882a593Smuzhiyun #define SOURCE_PIF_DATA_RD		0x30814
71*4882a593Smuzhiyun #define SOURCE_PIF_FIFO1_FLUSH		0x30818
72*4882a593Smuzhiyun #define SOURCE_PIF_FIFO2_FLUSH		0x3081c
73*4882a593Smuzhiyun #define SOURCE_PIF_STATUS		0x30820
74*4882a593Smuzhiyun #define SOURCE_PIF_INTERRUPT_SOURCE	0x30824
75*4882a593Smuzhiyun #define SOURCE_PIF_INTERRUPT_MASK	0x30828
76*4882a593Smuzhiyun #define SOURCE_PIF_PKT_ALLOC_REG	0x3082c
77*4882a593Smuzhiyun #define SOURCE_PIF_PKT_ALLOC_WR_EN	0x30830
78*4882a593Smuzhiyun #define SOURCE_PIF_SW_RESET		0x30834
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun /* bellow registers need access by mailbox */
81*4882a593Smuzhiyun /* source car addr */
82*4882a593Smuzhiyun #define SOURCE_HDTX_CAR			0x0900
83*4882a593Smuzhiyun #define SOURCE_DPTX_CAR			0x0904
84*4882a593Smuzhiyun #define SOURCE_PHY_CAR			0x0908
85*4882a593Smuzhiyun #define SOURCE_CEC_CAR			0x090c
86*4882a593Smuzhiyun #define SOURCE_CBUS_CAR			0x0910
87*4882a593Smuzhiyun #define SOURCE_PKT_CAR			0x0918
88*4882a593Smuzhiyun #define SOURCE_AIF_CAR			0x091c
89*4882a593Smuzhiyun #define SOURCE_CIPHER_CAR		0x0920
90*4882a593Smuzhiyun #define SOURCE_CRYPTO_CAR		0x0924
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun /* clock meters addr */
93*4882a593Smuzhiyun #define CM_CTRL				0x0a00
94*4882a593Smuzhiyun #define CM_I2S_CTRL			0x0a04
95*4882a593Smuzhiyun #define CM_SPDIF_CTRL			0x0a08
96*4882a593Smuzhiyun #define CM_VID_CTRL			0x0a0c
97*4882a593Smuzhiyun #define CM_LANE_CTRL			0x0a10
98*4882a593Smuzhiyun #define I2S_NM_STABLE			0x0a14
99*4882a593Smuzhiyun #define I2S_NCTS_STABLE			0x0a18
100*4882a593Smuzhiyun #define SPDIF_NM_STABLE			0x0a1c
101*4882a593Smuzhiyun #define SPDIF_NCTS_STABLE		0x0a20
102*4882a593Smuzhiyun #define NMVID_MEAS_STABLE		0x0a24
103*4882a593Smuzhiyun #define I2S_MEAS			0x0a40
104*4882a593Smuzhiyun #define SPDIF_MEAS			0x0a80
105*4882a593Smuzhiyun #define NMVID_MEAS			0x0ac0
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun /* source vif addr */
108*4882a593Smuzhiyun #define BND_HSYNC2VSYNC			0x0b00
109*4882a593Smuzhiyun #define HSYNC2VSYNC_F1_L1		0x0b04
110*4882a593Smuzhiyun #define HSYNC2VSYNC_F2_L1		0x0b08
111*4882a593Smuzhiyun #define HSYNC2VSYNC_STATUS		0x0b0c
112*4882a593Smuzhiyun #define HSYNC2VSYNC_POL_CTRL		0x0b10
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun /* dptx phy addr */
115*4882a593Smuzhiyun #define DP_TX_PHY_CONFIG_REG		0x2000
116*4882a593Smuzhiyun #define DP_TX_PHY_SW_RESET		0x2004
117*4882a593Smuzhiyun #define DP_TX_PHY_SCRAMBLER_SEED	0x2008
118*4882a593Smuzhiyun #define DP_TX_PHY_TRAINING_01_04	0x200c
119*4882a593Smuzhiyun #define DP_TX_PHY_TRAINING_05_08	0x2010
120*4882a593Smuzhiyun #define DP_TX_PHY_TRAINING_09_10	0x2014
121*4882a593Smuzhiyun #define TEST_COR			0x23fc
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun /* dptx hpd addr */
124*4882a593Smuzhiyun #define HPD_IRQ_DET_MIN_TIMER		0x2100
125*4882a593Smuzhiyun #define HPD_IRQ_DET_MAX_TIMER		0x2104
126*4882a593Smuzhiyun #define HPD_UNPLGED_DET_MIN_TIMER	0x2108
127*4882a593Smuzhiyun #define HPD_STABLE_TIMER		0x210c
128*4882a593Smuzhiyun #define HPD_FILTER_TIMER		0x2110
129*4882a593Smuzhiyun #define HPD_EVENT_MASK			0x211c
130*4882a593Smuzhiyun #define HPD_EVENT_DET			0x2120
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun /* dpyx framer addr */
133*4882a593Smuzhiyun #define DP_FRAMER_GLOBAL_CONFIG		0x2200
134*4882a593Smuzhiyun #define DP_SW_RESET			0x2204
135*4882a593Smuzhiyun #define DP_FRAMER_TU			0x2208
136*4882a593Smuzhiyun #define DP_FRAMER_PXL_REPR		0x220c
137*4882a593Smuzhiyun #define DP_FRAMER_SP			0x2210
138*4882a593Smuzhiyun #define AUDIO_PACK_CONTROL		0x2214
139*4882a593Smuzhiyun #define DP_VC_TABLE(x)			(0x2218 + ((x) << 2))
140*4882a593Smuzhiyun #define DP_VB_ID			0x2258
141*4882a593Smuzhiyun #define DP_MTPH_LVP_CONTROL		0x225c
142*4882a593Smuzhiyun #define DP_MTPH_SYMBOL_VALUES		0x2260
143*4882a593Smuzhiyun #define DP_MTPH_ECF_CONTROL		0x2264
144*4882a593Smuzhiyun #define DP_MTPH_ACT_CONTROL		0x2268
145*4882a593Smuzhiyun #define DP_MTPH_STATUS			0x226c
146*4882a593Smuzhiyun #define DP_INTERRUPT_SOURCE		0x2270
147*4882a593Smuzhiyun #define DP_INTERRUPT_MASK		0x2274
148*4882a593Smuzhiyun #define DP_FRONT_BACK_PORCH		0x2278
149*4882a593Smuzhiyun #define DP_BYTE_COUNT			0x227c
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun /* dptx stream addr */
152*4882a593Smuzhiyun #define MSA_HORIZONTAL_0		0x2280
153*4882a593Smuzhiyun #define MSA_HORIZONTAL_1		0x2284
154*4882a593Smuzhiyun #define MSA_VERTICAL_0			0x2288
155*4882a593Smuzhiyun #define MSA_VERTICAL_1			0x228c
156*4882a593Smuzhiyun #define MSA_MISC			0x2290
157*4882a593Smuzhiyun #define STREAM_CONFIG			0x2294
158*4882a593Smuzhiyun #define AUDIO_PACK_STATUS		0x2298
159*4882a593Smuzhiyun #define VIF_STATUS			0x229c
160*4882a593Smuzhiyun #define PCK_STUFF_STATUS_0		0x22a0
161*4882a593Smuzhiyun #define PCK_STUFF_STATUS_1		0x22a4
162*4882a593Smuzhiyun #define INFO_PACK_STATUS		0x22a8
163*4882a593Smuzhiyun #define RATE_GOVERNOR_STATUS		0x22ac
164*4882a593Smuzhiyun #define DP_HORIZONTAL			0x22b0
165*4882a593Smuzhiyun #define DP_VERTICAL_0			0x22b4
166*4882a593Smuzhiyun #define DP_VERTICAL_1			0x22b8
167*4882a593Smuzhiyun #define DP_BLOCK_SDP			0x22bc
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun /* dptx glbl addr */
170*4882a593Smuzhiyun #define DPTX_LANE_EN			0x2300
171*4882a593Smuzhiyun #define DPTX_ENHNCD			0x2304
172*4882a593Smuzhiyun #define DPTX_INT_MASK			0x2308
173*4882a593Smuzhiyun #define DPTX_INT_STATUS			0x230c
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun /* dp aux addr */
176*4882a593Smuzhiyun #define DP_AUX_HOST_CONTROL		0x2800
177*4882a593Smuzhiyun #define DP_AUX_INTERRUPT_SOURCE		0x2804
178*4882a593Smuzhiyun #define DP_AUX_INTERRUPT_MASK		0x2808
179*4882a593Smuzhiyun #define DP_AUX_SWAP_INVERSION_CONTROL	0x280c
180*4882a593Smuzhiyun #define DP_AUX_SEND_NACK_TRANSACTION	0x2810
181*4882a593Smuzhiyun #define DP_AUX_CLEAR_RX			0x2814
182*4882a593Smuzhiyun #define DP_AUX_CLEAR_TX			0x2818
183*4882a593Smuzhiyun #define DP_AUX_TIMER_STOP		0x281c
184*4882a593Smuzhiyun #define DP_AUX_TIMER_CLEAR		0x2820
185*4882a593Smuzhiyun #define DP_AUX_RESET_SW			0x2824
186*4882a593Smuzhiyun #define DP_AUX_DIVIDE_2M		0x2828
187*4882a593Smuzhiyun #define DP_AUX_TX_PREACHARGE_LENGTH	0x282c
188*4882a593Smuzhiyun #define DP_AUX_FREQUENCY_1M_MAX		0x2830
189*4882a593Smuzhiyun #define DP_AUX_FREQUENCY_1M_MIN		0x2834
190*4882a593Smuzhiyun #define DP_AUX_RX_PRE_MIN		0x2838
191*4882a593Smuzhiyun #define DP_AUX_RX_PRE_MAX		0x283c
192*4882a593Smuzhiyun #define DP_AUX_TIMER_PRESET		0x2840
193*4882a593Smuzhiyun #define DP_AUX_NACK_FORMAT		0x2844
194*4882a593Smuzhiyun #define DP_AUX_TX_DATA			0x2848
195*4882a593Smuzhiyun #define DP_AUX_RX_DATA			0x284c
196*4882a593Smuzhiyun #define DP_AUX_TX_STATUS		0x2850
197*4882a593Smuzhiyun #define DP_AUX_RX_STATUS		0x2854
198*4882a593Smuzhiyun #define DP_AUX_RX_CYCLE_COUNTER		0x2858
199*4882a593Smuzhiyun #define DP_AUX_MAIN_STATES		0x285c
200*4882a593Smuzhiyun #define DP_AUX_MAIN_TIMER		0x2860
201*4882a593Smuzhiyun #define DP_AUX_AFE_OUT			0x2864
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun /* crypto addr */
204*4882a593Smuzhiyun #define CRYPTO_HDCP_REVISION		0x5800
205*4882a593Smuzhiyun #define HDCP_CRYPTO_CONFIG		0x5804
206*4882a593Smuzhiyun #define CRYPTO_INTERRUPT_SOURCE		0x5808
207*4882a593Smuzhiyun #define CRYPTO_INTERRUPT_MASK		0x580c
208*4882a593Smuzhiyun #define CRYPTO22_CONFIG			0x5818
209*4882a593Smuzhiyun #define CRYPTO22_STATUS			0x581c
210*4882a593Smuzhiyun #define SHA_256_DATA_IN			0x583c
211*4882a593Smuzhiyun #define SHA_256_DATA_OUT_(x)		(0x5850 + ((x) << 2))
212*4882a593Smuzhiyun #define AES_32_KEY_(x)			(0x5870 + ((x) << 2))
213*4882a593Smuzhiyun #define AES_32_DATA_IN			0x5880
214*4882a593Smuzhiyun #define AES_32_DATA_OUT_(x)		(0x5884 + ((x) << 2))
215*4882a593Smuzhiyun #define CRYPTO14_CONFIG			0x58a0
216*4882a593Smuzhiyun #define CRYPTO14_STATUS			0x58a4
217*4882a593Smuzhiyun #define CRYPTO14_PRNM_OUT		0x58a8
218*4882a593Smuzhiyun #define CRYPTO14_KM_0			0x58ac
219*4882a593Smuzhiyun #define CRYPTO14_KM_1			0x58b0
220*4882a593Smuzhiyun #define CRYPTO14_AN_0			0x58b4
221*4882a593Smuzhiyun #define CRYPTO14_AN_1			0x58b8
222*4882a593Smuzhiyun #define CRYPTO14_YOUR_KSV_0		0x58bc
223*4882a593Smuzhiyun #define CRYPTO14_YOUR_KSV_1		0x58c0
224*4882a593Smuzhiyun #define CRYPTO14_MI_0			0x58c4
225*4882a593Smuzhiyun #define CRYPTO14_MI_1			0x58c8
226*4882a593Smuzhiyun #define CRYPTO14_TI_0			0x58cc
227*4882a593Smuzhiyun #define CRYPTO14_KI_0			0x58d0
228*4882a593Smuzhiyun #define CRYPTO14_KI_1			0x58d4
229*4882a593Smuzhiyun #define CRYPTO14_BLOCKS_NUM		0x58d8
230*4882a593Smuzhiyun #define CRYPTO14_KEY_MEM_DATA_0		0x58dc
231*4882a593Smuzhiyun #define CRYPTO14_KEY_MEM_DATA_1		0x58e0
232*4882a593Smuzhiyun #define CRYPTO14_SHA1_MSG_DATA		0x58e4
233*4882a593Smuzhiyun #define CRYPTO14_SHA1_V_VALUE_(x)	(0x58e8 + ((x) << 2))
234*4882a593Smuzhiyun #define TRNG_CTRL			0x58fc
235*4882a593Smuzhiyun #define TRNG_DATA_RDY			0x5900
236*4882a593Smuzhiyun #define TRNG_DATA			0x5904
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun /* cipher addr */
239*4882a593Smuzhiyun #define HDCP_REVISION			0x60000
240*4882a593Smuzhiyun #define INTERRUPT_SOURCE		0x60004
241*4882a593Smuzhiyun #define INTERRUPT_MASK			0x60008
242*4882a593Smuzhiyun #define HDCP_CIPHER_CONFIG		0x6000c
243*4882a593Smuzhiyun #define AES_128_KEY_0			0x60010
244*4882a593Smuzhiyun #define AES_128_KEY_1			0x60014
245*4882a593Smuzhiyun #define AES_128_KEY_2			0x60018
246*4882a593Smuzhiyun #define AES_128_KEY_3			0x6001c
247*4882a593Smuzhiyun #define AES_128_RANDOM_0		0x60020
248*4882a593Smuzhiyun #define AES_128_RANDOM_1		0x60024
249*4882a593Smuzhiyun #define CIPHER14_KM_0			0x60028
250*4882a593Smuzhiyun #define CIPHER14_KM_1			0x6002c
251*4882a593Smuzhiyun #define CIPHER14_STATUS			0x60030
252*4882a593Smuzhiyun #define CIPHER14_RI_PJ_STATUS		0x60034
253*4882a593Smuzhiyun #define CIPHER_MODE			0x60038
254*4882a593Smuzhiyun #define CIPHER14_AN_0			0x6003c
255*4882a593Smuzhiyun #define CIPHER14_AN_1			0x60040
256*4882a593Smuzhiyun #define CIPHER22_AUTH			0x60044
257*4882a593Smuzhiyun #define CIPHER14_R0_DP_STATUS		0x60048
258*4882a593Smuzhiyun #define CIPHER14_BOOTSTRAP		0x6004c
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun #define DPTX_FRMR_DATA_CLK_RSTN_EN	BIT(11)
261*4882a593Smuzhiyun #define DPTX_FRMR_DATA_CLK_EN		BIT(10)
262*4882a593Smuzhiyun #define DPTX_PHY_DATA_RSTN_EN		BIT(9)
263*4882a593Smuzhiyun #define DPTX_PHY_DATA_CLK_EN		BIT(8)
264*4882a593Smuzhiyun #define DPTX_PHY_CHAR_RSTN_EN		BIT(7)
265*4882a593Smuzhiyun #define DPTX_PHY_CHAR_CLK_EN		BIT(6)
266*4882a593Smuzhiyun #define SOURCE_AUX_SYS_CLK_RSTN_EN	BIT(5)
267*4882a593Smuzhiyun #define SOURCE_AUX_SYS_CLK_EN		BIT(4)
268*4882a593Smuzhiyun #define DPTX_SYS_CLK_RSTN_EN		BIT(3)
269*4882a593Smuzhiyun #define DPTX_SYS_CLK_EN			BIT(2)
270*4882a593Smuzhiyun #define CFG_DPTX_VIF_CLK_RSTN_EN	BIT(1)
271*4882a593Smuzhiyun #define CFG_DPTX_VIF_CLK_EN		BIT(0)
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun #define SOURCE_PHY_RSTN_EN		BIT(1)
274*4882a593Smuzhiyun #define SOURCE_PHY_CLK_EN		BIT(0)
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun #define SOURCE_PKT_SYS_RSTN_EN		BIT(3)
277*4882a593Smuzhiyun #define SOURCE_PKT_SYS_CLK_EN		BIT(2)
278*4882a593Smuzhiyun #define SOURCE_PKT_DATA_RSTN_EN		BIT(1)
279*4882a593Smuzhiyun #define SOURCE_PKT_DATA_CLK_EN		BIT(0)
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun #define SPDIF_CDR_CLK_RSTN_EN		BIT(5)
282*4882a593Smuzhiyun #define SPDIF_CDR_CLK_EN		BIT(4)
283*4882a593Smuzhiyun #define SOURCE_AIF_SYS_RSTN_EN		BIT(3)
284*4882a593Smuzhiyun #define SOURCE_AIF_SYS_CLK_EN		BIT(2)
285*4882a593Smuzhiyun #define SOURCE_AIF_CLK_RSTN_EN		BIT(1)
286*4882a593Smuzhiyun #define SOURCE_AIF_CLK_EN		BIT(0)
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun #define SOURCE_CIPHER_SYSTEM_CLK_RSTN_EN	BIT(3)
289*4882a593Smuzhiyun #define SOURCE_CIPHER_SYS_CLK_EN		BIT(2)
290*4882a593Smuzhiyun #define SOURCE_CIPHER_CHAR_CLK_RSTN_EN		BIT(1)
291*4882a593Smuzhiyun #define SOURCE_CIPHER_CHAR_CLK_EN		BIT(0)
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun #define SOURCE_CRYPTO_SYS_CLK_RSTN_EN	BIT(1)
294*4882a593Smuzhiyun #define SOURCE_CRYPTO_SYS_CLK_EN	BIT(0)
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun #define APB_IRAM_PATH			BIT(2)
297*4882a593Smuzhiyun #define APB_DRAM_PATH			BIT(1)
298*4882a593Smuzhiyun #define APB_XT_RESET			BIT(0)
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun #define MAILBOX_INT_MASK_BIT		BIT(1)
301*4882a593Smuzhiyun #define PIF_INT_MASK_BIT		BIT(0)
302*4882a593Smuzhiyun #define ALL_INT_MASK			3
303*4882a593Smuzhiyun 
304*4882a593Smuzhiyun /* mailbox */
305*4882a593Smuzhiyun #define MB_OPCODE_ID			0
306*4882a593Smuzhiyun #define MB_MODULE_ID			1
307*4882a593Smuzhiyun #define MB_SIZE_MSB_ID			2
308*4882a593Smuzhiyun #define MB_SIZE_LSB_ID			3
309*4882a593Smuzhiyun #define MB_DATA_ID			4
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun #define MB_MODULE_ID_DP_TX		0x01
312*4882a593Smuzhiyun #define MB_MODULE_ID_HDCP_TX		0x07
313*4882a593Smuzhiyun #define MB_MODULE_ID_HDCP_RX		0x08
314*4882a593Smuzhiyun #define MB_MODULE_ID_HDCP_GENERAL	0x09
315*4882a593Smuzhiyun #define MB_MODULE_ID_GENERAL		0x0a
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun /* general opcode */
318*4882a593Smuzhiyun #define GENERAL_MAIN_CONTROL            0x01
319*4882a593Smuzhiyun #define GENERAL_TEST_ECHO               0x02
320*4882a593Smuzhiyun #define GENERAL_BUS_SETTINGS            0x03
321*4882a593Smuzhiyun #define GENERAL_TEST_ACCESS             0x04
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun #define DPTX_SET_POWER_MNG			0x00
324*4882a593Smuzhiyun #define DPTX_SET_HOST_CAPABILITIES		0x01
325*4882a593Smuzhiyun #define DPTX_GET_EDID				0x02
326*4882a593Smuzhiyun #define DPTX_READ_DPCD				0x03
327*4882a593Smuzhiyun #define DPTX_WRITE_DPCD				0x04
328*4882a593Smuzhiyun #define DPTX_ENABLE_EVENT			0x05
329*4882a593Smuzhiyun #define DPTX_WRITE_REGISTER			0x06
330*4882a593Smuzhiyun #define DPTX_READ_REGISTER			0x07
331*4882a593Smuzhiyun #define DPTX_WRITE_FIELD			0x08
332*4882a593Smuzhiyun #define DPTX_TRAINING_CONTROL			0x09
333*4882a593Smuzhiyun #define DPTX_READ_EVENT				0x0a
334*4882a593Smuzhiyun #define DPTX_READ_LINK_STAT			0x0b
335*4882a593Smuzhiyun #define DPTX_SET_VIDEO				0x0c
336*4882a593Smuzhiyun #define DPTX_SET_AUDIO				0x0d
337*4882a593Smuzhiyun #define DPTX_GET_LAST_AUX_STAUS			0x0e
338*4882a593Smuzhiyun #define DPTX_SET_LINK_BREAK_POINT		0x0f
339*4882a593Smuzhiyun #define DPTX_FORCE_LANES			0x10
340*4882a593Smuzhiyun #define DPTX_HPD_STATE				0x11
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun #define FW_STANDBY				0
343*4882a593Smuzhiyun #define FW_ACTIVE				1
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun #define DPTX_EVENT_ENABLE_HPD			BIT(0)
346*4882a593Smuzhiyun #define DPTX_EVENT_ENABLE_TRAINING		BIT(1)
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun #define LINK_TRAINING_NOT_ACTIVE		0
349*4882a593Smuzhiyun #define LINK_TRAINING_RUN			1
350*4882a593Smuzhiyun #define LINK_TRAINING_RESTART			2
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun #define CONTROL_VIDEO_IDLE			0
353*4882a593Smuzhiyun #define CONTROL_VIDEO_VALID			1
354*4882a593Smuzhiyun 
355*4882a593Smuzhiyun #define TU_CNT_RST_EN				BIT(15)
356*4882a593Smuzhiyun #define VIF_BYPASS_INTERLACE			BIT(13)
357*4882a593Smuzhiyun #define INTERLACE_FMT_DET			BIT(12)
358*4882a593Smuzhiyun #define INTERLACE_DTCT_WIN			0x20
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun #define DP_FRAMER_SP_INTERLACE_EN		BIT(2)
361*4882a593Smuzhiyun #define DP_FRAMER_SP_HSP			BIT(1)
362*4882a593Smuzhiyun #define DP_FRAMER_SP_VSP			BIT(0)
363*4882a593Smuzhiyun 
364*4882a593Smuzhiyun /* capability */
365*4882a593Smuzhiyun #define AUX_HOST_INVERT				3
366*4882a593Smuzhiyun #define	FAST_LT_SUPPORT				1
367*4882a593Smuzhiyun #define FAST_LT_NOT_SUPPORT			0
368*4882a593Smuzhiyun #define LANE_MAPPING_NORMAL			0x1b
369*4882a593Smuzhiyun #define LANE_MAPPING_FLIPPED			0xe4
370*4882a593Smuzhiyun #define ENHANCED				1
371*4882a593Smuzhiyun #define SCRAMBLER_EN				BIT(4)
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun #define	FULL_LT_STARTED				BIT(0)
374*4882a593Smuzhiyun #define FASE_LT_STARTED				BIT(1)
375*4882a593Smuzhiyun #define CLK_RECOVERY_FINISHED			BIT(2)
376*4882a593Smuzhiyun #define EQ_PHASE_FINISHED			BIT(3)
377*4882a593Smuzhiyun #define FASE_LT_START_FINISHED			BIT(4)
378*4882a593Smuzhiyun #define CLK_RECOVERY_FAILED			BIT(5)
379*4882a593Smuzhiyun #define EQ_PHASE_FAILED				BIT(6)
380*4882a593Smuzhiyun #define FASE_LT_FAILED				BIT(7)
381*4882a593Smuzhiyun 
382*4882a593Smuzhiyun #define DPTX_HPD_EVENT				BIT(0)
383*4882a593Smuzhiyun #define DPTX_TRAINING_EVENT			BIT(1)
384*4882a593Smuzhiyun #define HDCP_TX_STATUS_EVENT			BIT(4)
385*4882a593Smuzhiyun #define HDCP2_TX_IS_KM_STORED_EVENT		BIT(5)
386*4882a593Smuzhiyun #define HDCP2_TX_STORE_KM_EVENT			BIT(6)
387*4882a593Smuzhiyun #define HDCP_TX_IS_RECEIVER_ID_VALID_EVENT	BIT(7)
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun #define TU_SIZE					30
390*4882a593Smuzhiyun #define CDN_DP_MAX_LINK_RATE			DP_LINK_BW_5_4
391*4882a593Smuzhiyun 
392*4882a593Smuzhiyun /* audio */
393*4882a593Smuzhiyun #define AUDIO_PACK_EN				BIT(8)
394*4882a593Smuzhiyun #define SAMPLING_FREQ(x)			(((x) & 0xf) << 16)
395*4882a593Smuzhiyun #define ORIGINAL_SAMP_FREQ(x)			(((x) & 0xf) << 24)
396*4882a593Smuzhiyun #define SYNC_WR_TO_CH_ZERO			BIT(1)
397*4882a593Smuzhiyun #define I2S_DEC_START				BIT(1)
398*4882a593Smuzhiyun #define AUDIO_SW_RST				BIT(0)
399*4882a593Smuzhiyun #define SMPL2PKT_EN				BIT(1)
400*4882a593Smuzhiyun #define MAX_NUM_CH(x)				(((x) & 0x1f) - 1)
401*4882a593Smuzhiyun #define NUM_OF_I2S_PORTS(x)			((((x) / 2 - 1) & 0x3) << 5)
402*4882a593Smuzhiyun #define AUDIO_TYPE_LPCM				(2 << 7)
403*4882a593Smuzhiyun #define CFG_SUB_PCKT_NUM(x)			((((x) - 1) & 0x7) << 11)
404*4882a593Smuzhiyun #define AUDIO_CH_NUM(x)				((((x) - 1) & 0x1f) << 2)
405*4882a593Smuzhiyun #define TRANS_SMPL_WIDTH_16			0
406*4882a593Smuzhiyun #define TRANS_SMPL_WIDTH_24			BIT(11)
407*4882a593Smuzhiyun #define TRANS_SMPL_WIDTH_32			(2 << 11)
408*4882a593Smuzhiyun #define I2S_DEC_PORT_EN(x)			(((x) & 0xf) << 17)
409*4882a593Smuzhiyun #define SPDIF_ENABLE				BIT(21)
410*4882a593Smuzhiyun #define SPDIF_AVG_SEL				BIT(20)
411*4882a593Smuzhiyun #define SPDIF_JITTER_BYPASS			BIT(19)
412*4882a593Smuzhiyun #define SPDIF_FIFO_MID_RANGE(x)			(((x) & 0xff) << 11)
413*4882a593Smuzhiyun #define SPDIF_JITTER_THRSH(x)			(((x) & 0xff) << 3)
414*4882a593Smuzhiyun #define SPDIF_JITTER_AVG_WIN(x)			((x) & 0x7)
415*4882a593Smuzhiyun 
416*4882a593Smuzhiyun /* Reference cycles when using lane clock as reference */
417*4882a593Smuzhiyun #define LANE_REF_CYC				0x8000
418*4882a593Smuzhiyun 
419*4882a593Smuzhiyun enum voltage_swing_level {
420*4882a593Smuzhiyun 	VOLTAGE_LEVEL_0,
421*4882a593Smuzhiyun 	VOLTAGE_LEVEL_1,
422*4882a593Smuzhiyun 	VOLTAGE_LEVEL_2,
423*4882a593Smuzhiyun 	VOLTAGE_LEVEL_3,
424*4882a593Smuzhiyun };
425*4882a593Smuzhiyun 
426*4882a593Smuzhiyun enum pre_emphasis_level {
427*4882a593Smuzhiyun 	PRE_EMPHASIS_LEVEL_0,
428*4882a593Smuzhiyun 	PRE_EMPHASIS_LEVEL_1,
429*4882a593Smuzhiyun 	PRE_EMPHASIS_LEVEL_2,
430*4882a593Smuzhiyun 	PRE_EMPHASIS_LEVEL_3,
431*4882a593Smuzhiyun };
432*4882a593Smuzhiyun 
433*4882a593Smuzhiyun enum pattern_set {
434*4882a593Smuzhiyun 	PTS1		= BIT(0),
435*4882a593Smuzhiyun 	PTS2		= BIT(1),
436*4882a593Smuzhiyun 	PTS3		= BIT(2),
437*4882a593Smuzhiyun 	PTS4		= BIT(3),
438*4882a593Smuzhiyun 	DP_NONE		= BIT(4)
439*4882a593Smuzhiyun };
440*4882a593Smuzhiyun 
441*4882a593Smuzhiyun enum vic_color_depth {
442*4882a593Smuzhiyun 	BCS_6 = 0x1,
443*4882a593Smuzhiyun 	BCS_8 = 0x2,
444*4882a593Smuzhiyun 	BCS_10 = 0x4,
445*4882a593Smuzhiyun 	BCS_12 = 0x8,
446*4882a593Smuzhiyun 	BCS_16 = 0x10,
447*4882a593Smuzhiyun };
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun enum vic_bt_type {
450*4882a593Smuzhiyun 	BT_601 = 0x0,
451*4882a593Smuzhiyun 	BT_709 = 0x1,
452*4882a593Smuzhiyun };
453*4882a593Smuzhiyun 
454*4882a593Smuzhiyun void cdn_dp_clock_reset(struct cdn_dp_device *dp);
455*4882a593Smuzhiyun 
456*4882a593Smuzhiyun void cdn_dp_set_fw_clk(struct cdn_dp_device *dp, unsigned long clk);
457*4882a593Smuzhiyun int cdn_dp_load_firmware(struct cdn_dp_device *dp, const u32 *i_mem,
458*4882a593Smuzhiyun 			 u32 i_size, const u32 *d_mem, u32 d_size);
459*4882a593Smuzhiyun int cdn_dp_set_firmware_active(struct cdn_dp_device *dp, bool enable);
460*4882a593Smuzhiyun int cdn_dp_set_host_cap(struct cdn_dp_device *dp, u8 lanes, bool flip);
461*4882a593Smuzhiyun int cdn_dp_event_config(struct cdn_dp_device *dp);
462*4882a593Smuzhiyun u32 cdn_dp_get_event(struct cdn_dp_device *dp);
463*4882a593Smuzhiyun int cdn_dp_get_hpd_status(struct cdn_dp_device *dp);
464*4882a593Smuzhiyun int cdn_dp_dpcd_write(struct cdn_dp_device *dp, u32 addr, u8 value);
465*4882a593Smuzhiyun int cdn_dp_dpcd_read(struct cdn_dp_device *dp, u32 addr, u8 *data, u16 len);
466*4882a593Smuzhiyun int cdn_dp_get_edid_block(void *dp, u8 *edid,
467*4882a593Smuzhiyun 			  unsigned int block, size_t length);
468*4882a593Smuzhiyun int cdn_dp_train_link(struct cdn_dp_device *dp);
469*4882a593Smuzhiyun int cdn_dp_set_video_status(struct cdn_dp_device *dp, int active);
470*4882a593Smuzhiyun int cdn_dp_config_video(struct cdn_dp_device *dp);
471*4882a593Smuzhiyun int cdn_dp_audio_stop(struct cdn_dp_device *dp, struct audio_info *audio);
472*4882a593Smuzhiyun int cdn_dp_audio_mute(struct cdn_dp_device *dp, bool enable);
473*4882a593Smuzhiyun int cdn_dp_audio_config(struct cdn_dp_device *dp, struct audio_info *audio);
474*4882a593Smuzhiyun #endif /* _CDN_DP_REG_H */
475