xref: /OK3568_Linux_fs/kernel/drivers/misc/rk628/rk628_hdmitx.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2020 Rockchip Electronics Co. Ltd.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Author: Chen Shunqing <csq@rock-chips.com>
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef HDMITX_H
9*4882a593Smuzhiyun #define HDMITX_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include "rk628.h"
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define HDMI_BASE			0x70000
14*4882a593Smuzhiyun #define HDMI_REG_STRIDE			4
15*4882a593Smuzhiyun #define HDMITX_REG(x)			((x * HDMI_REG_STRIDE) + HDMI_BASE)
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #define DDC_SEGMENT_ADDR		0x30
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun enum PWR_MODE {
20*4882a593Smuzhiyun 	NORMAL,
21*4882a593Smuzhiyun 	LOWER_PWR,
22*4882a593Smuzhiyun };
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #define HDMI_SCL_RATE			(100 * 1000)
25*4882a593Smuzhiyun #define DDC_BUS_FREQ_L			HDMITX_REG(0x4b)
26*4882a593Smuzhiyun #define DDC_BUS_FREQ_H			HDMITX_REG(0x4c)
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #define HDMI_SYS_CTRL			HDMITX_REG(0x00)
29*4882a593Smuzhiyun #define RST_ANALOG_MASK			BIT(6)
30*4882a593Smuzhiyun #define NOT_RST_ANALOG(x)		UPDATE(x, 6, 6)
31*4882a593Smuzhiyun #define RST_DIGITAL_MASK		BIT(5)
32*4882a593Smuzhiyun #define NOT_RST_DIGITAL(x)		UPDATE(x, 5, 5)
33*4882a593Smuzhiyun #define REG_CLK_INV_MASK		BIT(4)
34*4882a593Smuzhiyun #define REG_CLK_INV(x)			UPDATE(x, 4, 4)
35*4882a593Smuzhiyun #define VCLK_INV_MASK			BIT(3)
36*4882a593Smuzhiyun #define VCLK_INV(x)			UPDATE(x, 3, 3)
37*4882a593Smuzhiyun #define REG_CLK_SOURCE_MASK		BIT(2)
38*4882a593Smuzhiyun #define REG_CLK_SOURCE(x)		UPDATE(x, 2, 2)
39*4882a593Smuzhiyun #define POWER_MASK			BIT(1)
40*4882a593Smuzhiyun #define PWR_OFF(x)			UPDATE(x, 1, 1)
41*4882a593Smuzhiyun #define INT_POL_MASK			BIT(0)
42*4882a593Smuzhiyun #define INT_POL(x)			UPDATE(x, 0, 0)
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL1		HDMITX_REG(0x01)
45*4882a593Smuzhiyun #define VIDEO_INPUT_FORMAT_MASK		GENMASK(3, 1)
46*4882a593Smuzhiyun #define VIDEO_INPUT_SDR_RGB444		UPDATE(0x0, 3, 1)
47*4882a593Smuzhiyun #define VIDEO_INPUT_DDR_RGB444		UPDATE(0x5, 3, 1)
48*4882a593Smuzhiyun #define VIDEO_INPUT_DDR_YCBCR422	UPDATE(0x6, 3, 1)
49*4882a593Smuzhiyun #define DE_SOURCE_MASK			BIT(0)
50*4882a593Smuzhiyun #define DE_SOURCE(x)			UPDATE(x, 0, 0)
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL2		HDMITX_REG(0x02)
53*4882a593Smuzhiyun #define VIDEO_OUTPUT_COLOR_MASK		GENMASK(7, 6)
54*4882a593Smuzhiyun #define VIDEO_OUTPUT_RRGB444		UPDATE(0x0, 7, 6)
55*4882a593Smuzhiyun #define VIDEO_OUTPUT_YCBCR444		UPDATE(0x1, 7, 6)
56*4882a593Smuzhiyun #define VIDEO_OUTPUT_YCBCR422		UPDATE(0x2, 7, 6)
57*4882a593Smuzhiyun #define VIDEO_INPUT_BITS_MASK		GENMASK(5, 4)
58*4882a593Smuzhiyun #define VIDEO_INPUT_12BITS		UPDATE(0x0, 5, 4)
59*4882a593Smuzhiyun #define VIDEO_INPUT_10BITS		UPDATE(0x1, 5, 4)
60*4882a593Smuzhiyun #define VIDEO_INPUT_REVERT		UPDATE(0x2, 5, 4)
61*4882a593Smuzhiyun #define VIDEO_INPUT_8BITS		UPDATE(0x3, 5, 4)
62*4882a593Smuzhiyun #define VIDEO_INPUT_CSP_MASK		BIT(1)
63*4882a593Smuzhiyun #define VIDEO_INPUT_CSP(x)		UPDATE(x, 0, 0)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL		HDMITX_REG(0x03)
66*4882a593Smuzhiyun #define VIDEO_AUTO_CSC_MASK		BIT(7)
67*4882a593Smuzhiyun #define VIDEO_AUTO_CSC(x)		UPDATE(x, 7, 7)
68*4882a593Smuzhiyun #define VIDEO_C0_C2_SWAP_MASK		BIT(0)
69*4882a593Smuzhiyun #define VIDEO_C0_C2_SWAP(x)		UPDATE(x, 0, 0)
70*4882a593Smuzhiyun enum {
71*4882a593Smuzhiyun 	C0_C2_CHANGE_ENABLE = 0,
72*4882a593Smuzhiyun 	C0_C2_CHANGE_DISABLE = 1,
73*4882a593Smuzhiyun 	AUTO_CSC_DISABLE = 0,
74*4882a593Smuzhiyun 	AUTO_CSC_ENABLE = 1,
75*4882a593Smuzhiyun };
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define HDMI_VIDEO_CONTROL3		HDMITX_REG(0x04)
78*4882a593Smuzhiyun #define COLOR_DEPTH_NOT_INDICATED_MASK	BIT(4)
79*4882a593Smuzhiyun #define COLOR_DEPTH_NOT_INDICATED(x)	UPDATE(x, 4, 4)
80*4882a593Smuzhiyun #define SOF_MASK			BIT(3)
81*4882a593Smuzhiyun #define SOF_DISABLE(x)			UPDATE(x, 3, 3)
82*4882a593Smuzhiyun #define CSC_MASK			BIT(0)
83*4882a593Smuzhiyun #define CSC_ENABLE(x)			UPDATE(x, 0, 0)
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define HDMI_AV_MUTE			HDMITX_REG(0x05)
86*4882a593Smuzhiyun #define AVMUTE_CLEAR_MASK		BIT(7)
87*4882a593Smuzhiyun #define AVMUTE_CLEAR(x)			UPDATE(x, 7, 7)
88*4882a593Smuzhiyun #define AVMUTE_ENABLE_MASK		BIT(6)
89*4882a593Smuzhiyun #define AVMUTE_ENABLE(x)		UPDATE(x, 6, 6)
90*4882a593Smuzhiyun #define AUDIO_PD_MASK			BIT(2)
91*4882a593Smuzhiyun #define AUDIO_PD(x)			UPDATE(x, 2, 2)
92*4882a593Smuzhiyun #define AUDIO_MUTE_MASK			BIT(1)
93*4882a593Smuzhiyun #define AUDIO_MUTE(x)			UPDATE(x, 1, 1)
94*4882a593Smuzhiyun #define VIDEO_BLACK_MASK		BIT(0)
95*4882a593Smuzhiyun #define VIDEO_MUTE(x)			UPDATE(x, 0, 0)
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define HDMI_VIDEO_TIMING_CTL		HDMITX_REG(0x08)
98*4882a593Smuzhiyun #define HSYNC_POLARITY(x)		UPDATE(x, 3, 3)
99*4882a593Smuzhiyun #define VSYNC_POLARITY(x)		UPDATE(x, 2, 2)
100*4882a593Smuzhiyun #define INETLACE(x)			UPDATE(x, 1, 1)
101*4882a593Smuzhiyun #define EXTERANL_VIDEO(x)		UPDATE(x, 0, 0)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HTOTAL_L		HDMITX_REG(0x09)
104*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HTOTAL_H		HDMITX_REG(0x0a)
105*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HBLANK_L		HDMITX_REG(0x0b)
106*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HBLANK_H		HDMITX_REG(0x0c)
107*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDELAY_L		HDMITX_REG(0x0d)
108*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDELAY_H		HDMITX_REG(0x0e)
109*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDURATION_L	HDMITX_REG(0x0f)
110*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_HDURATION_H	HDMITX_REG(0x10)
111*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VTOTAL_L		HDMITX_REG(0x11)
112*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VTOTAL_H		HDMITX_REG(0x12)
113*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VBLANK		HDMITX_REG(0x13)
114*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VDELAY		HDMITX_REG(0x14)
115*4882a593Smuzhiyun #define HDMI_VIDEO_EXT_VDURATION	HDMITX_REG(0x15)
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define HDMI_VIDEO_CSC_COEF		HDMITX_REG(0x18)
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define HDMI_AUDIO_CTRL1		HDMITX_REG(0x35)
120*4882a593Smuzhiyun enum {
121*4882a593Smuzhiyun 	CTS_SOURCE_INTERNAL = 0,
122*4882a593Smuzhiyun 	CTS_SOURCE_EXTERNAL = 1,
123*4882a593Smuzhiyun };
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define CTS_SOURCE(x)			UPDATE(x, 7, 7)
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun enum {
128*4882a593Smuzhiyun 	DOWNSAMPLE_DISABLE = 0,
129*4882a593Smuzhiyun 	DOWNSAMPLE_1_2 = 1,
130*4882a593Smuzhiyun 	DOWNSAMPLE_1_4 = 2,
131*4882a593Smuzhiyun };
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #define DOWN_SAMPLE(x)			UPDATE(x, 6, 5)
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun enum {
136*4882a593Smuzhiyun 	AUDIO_SOURCE_IIS = 0,
137*4882a593Smuzhiyun 	AUDIO_SOURCE_SPDIF = 1,
138*4882a593Smuzhiyun };
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun #define AUDIO_SOURCE(x)			UPDATE(x, 4, 3)
141*4882a593Smuzhiyun #define MCLK_ENABLE(x)			UPDATE(x, 2, 2)
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun enum {
144*4882a593Smuzhiyun 	MCLK_128FS = 0,
145*4882a593Smuzhiyun 	MCLK_256FS = 1,
146*4882a593Smuzhiyun 	MCLK_384FS = 2,
147*4882a593Smuzhiyun 	MCLK_512FS = 3,
148*4882a593Smuzhiyun };
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #define MCLK_RATIO(x)			UPDATE(x, 1, 0)
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #define AUDIO_SAMPLE_RATE		HDMITX_REG(0x37)
153*4882a593Smuzhiyun enum {
154*4882a593Smuzhiyun 	AUDIO_32K = 0x3,
155*4882a593Smuzhiyun 	AUDIO_441K = 0x0,
156*4882a593Smuzhiyun 	AUDIO_48K = 0x2,
157*4882a593Smuzhiyun 	AUDIO_882K = 0x8,
158*4882a593Smuzhiyun 	AUDIO_96K = 0xa,
159*4882a593Smuzhiyun 	AUDIO_1764K = 0xc,
160*4882a593Smuzhiyun 	AUDIO_192K = 0xe,
161*4882a593Smuzhiyun };
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun #define AUDIO_I2S_MODE			HDMITX_REG(0x38)
164*4882a593Smuzhiyun enum {
165*4882a593Smuzhiyun 	I2S_CHANNEL_1_2 = 1,
166*4882a593Smuzhiyun 	I2S_CHANNEL_3_4 = 3,
167*4882a593Smuzhiyun 	I2S_CHANNEL_5_6 = 7,
168*4882a593Smuzhiyun 	I2S_CHANNEL_7_8 = 0xf
169*4882a593Smuzhiyun };
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun #define I2S_CHANNEL(x)			UPDATE(x, 5, 2)
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun enum {
174*4882a593Smuzhiyun 	I2S_STANDARD = 0,
175*4882a593Smuzhiyun 	I2S_LEFT_JUSTIFIED = 1,
176*4882a593Smuzhiyun 	I2S_RIGHT_JUSTIFIED = 2,
177*4882a593Smuzhiyun };
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun #define I2S_MODE(x)			UPDATE(x, 1, 0)
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun #define AUDIO_I2S_MAP			HDMITX_REG(0x39)
182*4882a593Smuzhiyun #define AUDIO_I2S_SWAPS_SPDIF		HDMITX_REG(0x3a)
183*4882a593Smuzhiyun #define N_32K				0x1000
184*4882a593Smuzhiyun #define N_441K				0x1880
185*4882a593Smuzhiyun #define N_882K				0x3100
186*4882a593Smuzhiyun #define N_1764K				0x6200
187*4882a593Smuzhiyun #define N_48K				0x1800
188*4882a593Smuzhiyun #define N_96K				0x3000
189*4882a593Smuzhiyun #define N_192K				0x6000
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun #define HDMI_AUDIO_CHANNEL_STATUS	HDMITX_REG(0x3e)
192*4882a593Smuzhiyun #define AUDIO_STATUS_NLPCM_MASK		BIT(7)
193*4882a593Smuzhiyun #define AUDIO_STATUS_NLPCM(x)		UPDATE(x, 7, 7)
194*4882a593Smuzhiyun #define AUDIO_STATUS_USE_MASK		BIT(6)
195*4882a593Smuzhiyun #define AUDIO_STATUS_COPYRIGHT_MASK	BIT(5)
196*4882a593Smuzhiyun #define AUDIO_STATUS_ADDITION_MASK	GENMASK(3, 2)
197*4882a593Smuzhiyun #define AUDIO_STATUS_CLK_ACCURACY_MASK	GENMASK(1, 1)
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define AUDIO_N_H			HDMITX_REG(0x3f)
200*4882a593Smuzhiyun #define AUDIO_N_M			HDMITX_REG(0x40)
201*4882a593Smuzhiyun #define AUDIO_N_L			HDMITX_REG(0x41)
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun #define HDMI_AUDIO_CTS_H		HDMITX_REG(0x45)
204*4882a593Smuzhiyun #define HDMI_AUDIO_CTS_M		HDMITX_REG(0x46)
205*4882a593Smuzhiyun #define HDMI_AUDIO_CTS_L		HDMITX_REG(0x47)
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun #define HDMI_DDC_CLK_L			HDMITX_REG(0x4b)
208*4882a593Smuzhiyun #define HDMI_DDC_CLK_H			HDMITX_REG(0x4c)
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun #define HDMI_EDID_SEGMENT_POINTER	HDMITX_REG(0x4d)
211*4882a593Smuzhiyun #define HDMI_EDID_WORD_ADDR		HDMITX_REG(0x4e)
212*4882a593Smuzhiyun #define HDMI_EDID_FIFO_OFFSET		HDMITX_REG(0x4f)
213*4882a593Smuzhiyun #define HDMI_EDID_FIFO_ADDR		HDMITX_REG(0x50)
214*4882a593Smuzhiyun 
215*4882a593Smuzhiyun #define HDMI_PACKET_SEND_MANUAL		HDMITX_REG(0x9c)
216*4882a593Smuzhiyun #define HDMI_PACKET_SEND_AUTO		HDMITX_REG(0x9d)
217*4882a593Smuzhiyun #define PACKET_GCP_EN_MASK		BIT(7)
218*4882a593Smuzhiyun #define PACKET_GCP_EN(x)		UPDATE(x, 7, 7)
219*4882a593Smuzhiyun #define PACKET_MSI_EN_MASK		BIT(6)
220*4882a593Smuzhiyun #define PACKET_MSI_EN(x)		UPDATE(x, 6, 6)
221*4882a593Smuzhiyun #define PACKET_SDI_EN_MASK		BIT(5)
222*4882a593Smuzhiyun #define PACKET_SDI_EN(x)		UPDATE(x, 5, 5)
223*4882a593Smuzhiyun #define PACKET_VSI_EN_MASK		BIT(4)
224*4882a593Smuzhiyun #define PACKET_VSI_EN(x)		UPDATE(x, 4, 4)
225*4882a593Smuzhiyun 
226*4882a593Smuzhiyun #define HDMI_CONTROL_PACKET_BUF_INDEX	HDMITX_REG(0x9f)
227*4882a593Smuzhiyun enum {
228*4882a593Smuzhiyun 	INFOFRAME_VSI = 0x05,
229*4882a593Smuzhiyun 	INFOFRAME_AVI = 0x06,
230*4882a593Smuzhiyun 	INFOFRAME_AAI = 0x08,
231*4882a593Smuzhiyun };
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun #define HDMI_CONTROL_PACKET_ADDR	HDMITX_REG(0xa0)
234*4882a593Smuzhiyun #define HDMI_MAXIMUM_INFO_FRAME_SIZE	0x11
235*4882a593Smuzhiyun enum {
236*4882a593Smuzhiyun 	AVI_COLOR_MODE_RGB = 0,
237*4882a593Smuzhiyun 	AVI_COLOR_MODE_YCBCR422 = 1,
238*4882a593Smuzhiyun 	AVI_COLOR_MODE_YCBCR444 = 2,
239*4882a593Smuzhiyun 	AVI_COLORIMETRY_NO_DATA = 0,
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun 	AVI_COLORIMETRY_SMPTE_170M = 1,
242*4882a593Smuzhiyun 	AVI_COLORIMETRY_ITU709 = 2,
243*4882a593Smuzhiyun 	AVI_COLORIMETRY_EXTENDED = 3,
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun 	AVI_CODED_FRAME_ASPECT_NO_DATA = 0,
246*4882a593Smuzhiyun 	AVI_CODED_FRAME_ASPECT_4_3 = 1,
247*4882a593Smuzhiyun 	AVI_CODED_FRAME_ASPECT_16_9 = 2,
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun 	ACTIVE_ASPECT_RATE_SAME_AS_CODED_FRAME = 0x08,
250*4882a593Smuzhiyun 	ACTIVE_ASPECT_RATE_4_3 = 0x09,
251*4882a593Smuzhiyun 	ACTIVE_ASPECT_RATE_16_9 = 0x0A,
252*4882a593Smuzhiyun 	ACTIVE_ASPECT_RATE_14_9 = 0x0B,
253*4882a593Smuzhiyun };
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun #define HDMI_HDCP_CTRL			HDMITX_REG(0x52)
256*4882a593Smuzhiyun #define HDMI_DVI_MASK			BIT(1)
257*4882a593Smuzhiyun #define HDMI_DVI(x)			UPDATE(x, 1, 1)
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun #define HDMI_INTERRUPT_MASK1		HDMITX_REG(0xc0)
260*4882a593Smuzhiyun #define INT_EDID_READY_MASK		BIT(2)
261*4882a593Smuzhiyun #define HDMI_INTERRUPT_STATUS1		HDMITX_REG(0xc1)
262*4882a593Smuzhiyun #define	INT_ACTIVE_VSYNC_MASK		BIT(5)
263*4882a593Smuzhiyun #define INT_EDID_READY			BIT(2)
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun #define HDMI_INTERRUPT_MASK2		HDMITX_REG(0xc2)
266*4882a593Smuzhiyun #define HDMI_INTERRUPT_STATUS2		HDMITX_REG(0xc3)
267*4882a593Smuzhiyun #define INT_HDCP_ERR			BIT(7)
268*4882a593Smuzhiyun #define INT_BKSV_FLAG			BIT(6)
269*4882a593Smuzhiyun #define INT_HDCP_OK			BIT(4)
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun #define HDMI_STATUS			HDMITX_REG(0xc8)
272*4882a593Smuzhiyun #define HOTPLUG_STATUS			BIT(7)
273*4882a593Smuzhiyun #define MASK_INT_HOTPLUG_MASK		BIT(5)
274*4882a593Smuzhiyun #define MASK_INT_HOTPLUG(x)		UPDATE(x, 5, 5)
275*4882a593Smuzhiyun #define INT_HOTPLUG			BIT(1)
276*4882a593Smuzhiyun 
277*4882a593Smuzhiyun #define HDMI_COLORBAR                   HDMITX_REG(0xc9)
278*4882a593Smuzhiyun 
279*4882a593Smuzhiyun #define HDMI_PHY_SYNC			HDMITX_REG(0xce)
280*4882a593Smuzhiyun #define HDMI_PHY_SYS_CTL		HDMITX_REG(0xe0)
281*4882a593Smuzhiyun #define TMDS_CLK_SOURCE_MASK		BIT(5)
282*4882a593Smuzhiyun #define TMDS_CLK_SOURCE(x)		UPDATE(x, 5, 5)
283*4882a593Smuzhiyun #define PHASE_CLK_MASK			BIT(4)
284*4882a593Smuzhiyun #define PHASE_CLK(x)			UPDATE(x, 4, 4)
285*4882a593Smuzhiyun #define TMDS_PHASE_SEL_MASK		BIT(3)
286*4882a593Smuzhiyun #define TMDS_PHASE_SEL(x)		UPDATE(x, 3, 3)
287*4882a593Smuzhiyun #define BANDGAP_PWR_MASK		BIT(2)
288*4882a593Smuzhiyun #define BANDGAP_PWR(x)			UPDATE(x, 2, 2)
289*4882a593Smuzhiyun #define PLL_PWR_DOWN_MASK		BIT(1)
290*4882a593Smuzhiyun #define PLL_PWR_DOWN(x)			UPDATE(x, 1, 1)
291*4882a593Smuzhiyun #define TMDS_CHG_PWR_DOWN_MASK		BIT(0)
292*4882a593Smuzhiyun #define TMDS_CHG_PWR_DOWN(x)		UPDATE(x, 0, 0)
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun #define HDMI_PHY_CHG_PWR		HDMITX_REG(0xe1)
295*4882a593Smuzhiyun #define CLK_CHG_PWR(x)			UPDATE(x, 3, 3)
296*4882a593Smuzhiyun #define DATA_CHG_PWR(x)			UPDATE(x, 2, 0)
297*4882a593Smuzhiyun 
298*4882a593Smuzhiyun #define HDMI_PHY_DRIVER			HDMITX_REG(0xe2)
299*4882a593Smuzhiyun #define CLK_MAIN_DRIVER(x)		UPDATE(x, 7, 4)
300*4882a593Smuzhiyun #define DATA_MAIN_DRIVER(x)		UPDATE(x, 3, 0)
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun #define HDMI_PHY_PRE_EMPHASIS		HDMITX_REG(0xe3)
303*4882a593Smuzhiyun #define PRE_EMPHASIS(x)			UPDATE(x, 6, 4)
304*4882a593Smuzhiyun #define CLK_PRE_DRIVER(x)		UPDATE(x, 3, 2)
305*4882a593Smuzhiyun #define DATA_PRE_DRIVER(x)		UPDATE(x, 1, 0)
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun #define PHY_FEEDBACK_DIV_RATIO_LOW	HDMITX_REG(0xe7)
308*4882a593Smuzhiyun #define FEEDBACK_DIV_LOW(x)		UPDATE(x, 7, 0)
309*4882a593Smuzhiyun #define PHY_FEEDBACK_DIV_RATIO_HIGH	HDMITX_REG(0xe8)
310*4882a593Smuzhiyun #define FEEDBACK_DIV_HIGH(x)		UPDATE(x, 0, 0)
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun #define HDMI_PHY_PRE_DIV_RATIO		HDMITX_REG(0xed)
313*4882a593Smuzhiyun #define PRE_DIV_RATIO(x)		UPDATE(x, 4, 0)
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun #define HDMI_CEC_CTRL			HDMITX_REG(0xd0)
316*4882a593Smuzhiyun #define ADJUST_FOR_HISENSE_MASK		BIT(6)
317*4882a593Smuzhiyun #define REJECT_RX_BROADCAST_MASK	BIT(5)
318*4882a593Smuzhiyun #define BUSFREETIME_ENABLE_MASK		BIT(2)
319*4882a593Smuzhiyun #define REJECT_RX_MASK			BIT(1)
320*4882a593Smuzhiyun #define START_TX_MASK			BIT(0)
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #define HDMI_CEC_DATA			HDMITX_REG(0xd1)
323*4882a593Smuzhiyun #define HDMI_CEC_TX_OFFSET		HDMITX_REG(0xd2)
324*4882a593Smuzhiyun #define HDMI_CEC_RX_OFFSET		HDMITX_REG(0xd3)
325*4882a593Smuzhiyun #define HDMI_CEC_CLK_H			HDMITX_REG(0xd4)
326*4882a593Smuzhiyun #define HDMI_CEC_CLK_L			HDMITX_REG(0xd5)
327*4882a593Smuzhiyun #define HDMI_CEC_TX_LENGTH		HDMITX_REG(0xd6)
328*4882a593Smuzhiyun #define HDMI_CEC_RX_LENGTH		HDMITX_REG(0xd7)
329*4882a593Smuzhiyun #define HDMI_CEC_TX_INT_MASK		HDMITX_REG(0xd8)
330*4882a593Smuzhiyun #define TX_DONE_MASK			BIT(3)
331*4882a593Smuzhiyun #define TX_NOACK_MASK			BIT(2)
332*4882a593Smuzhiyun #define TX_BROADCAST_REJ_MASK		BIT(1)
333*4882a593Smuzhiyun #define TX_BUSNOTFREE_MASK		BIT(0)
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun #define HDMI_CEC_RX_INT_MASK		HDMITX_REG(0xd9)
336*4882a593Smuzhiyun #define RX_LA_ERR_MASK			BIT(4)
337*4882a593Smuzhiyun #define RX_GLITCH_MASK			BIT(3)
338*4882a593Smuzhiyun #define RX_DONE_MASK			BIT(0)
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun #define HDMI_CEC_TX_INT			HDMITX_REG(0xda)
341*4882a593Smuzhiyun #define HDMI_CEC_RX_INT			HDMITX_REG(0xdb)
342*4882a593Smuzhiyun #define HDMI_CEC_BUSFREETIME_L		HDMITX_REG(0xdc)
343*4882a593Smuzhiyun #define HDMI_CEC_BUSFREETIME_H		HDMITX_REG(0xdd)
344*4882a593Smuzhiyun #define HDMI_CEC_LOGICADDR		HDMITX_REG(0xde)
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun #define HDMI_MAX_REG			HDMITX_REG(0xed)
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun int rk628_hdmitx_enable(struct rk628 *rk628);
349*4882a593Smuzhiyun 
350*4882a593Smuzhiyun #endif
351