aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/rockchip/rk3066_hdmi.h
blob: 39a31c62a4284602385029674cf75e0e0aeccfa2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
 *    Zheng Yang <zhengyang@rock-chips.com>
 */

#ifndef __RK3066_HDMI_H__
#define __RK3066_HDMI_H__

#define GRF_SOC_CON0				0x150
#define HDMI_VIDEO_SEL				BIT(14)

#define DDC_SEGMENT_ADDR			0x30
#define HDMI_SCL_RATE				(50 * 1000)
#define HDMI_MAXIMUM_INFO_FRAME_SIZE		0x11

#define N_32K					0x1000
#define N_441K					0x1880
#define N_882K					0x3100
#define N_1764K					0x6200
#define N_48K					0x1800
#define N_96K					0x3000
#define N_192K					0x6000

#define HDMI_SYS_CTRL				0x000
#define HDMI_LR_SWAP_N3				0x004
#define HDMI_N2					0x008
#define HDMI_N1					0x00c
#define HDMI_SPDIF_FS_CTS_INT3			0x010
#define HDMI_CTS_INT2				0x014
#define HDMI_CTS_INT1				0x018
#define HDMI_CTS_EXT3				0x01c
#define HDMI_CTS_EXT2				0x020
#define HDMI_CTS_EXT1				0x024
#define HDMI_AUDIO_CTRL1			0x028
#define HDMI_AUDIO_CTRL2			0x02c
#define HDMI_I2S_AUDIO_CTRL			0x030
#define HDMI_I2S_SWAP				0x040
#define HDMI_AUDIO_STA_BIT_CTRL1		0x044
#define HDMI_AUDIO_STA_BIT_CTRL2		0x048
#define HDMI_AUDIO_SRC_NUM_AND_LENGTH		0x050
#define HDMI_AV_CTRL1				0x054
#define HDMI_VIDEO_CTRL1			0x058
#define HDMI_DEEP_COLOR_MODE			0x05c

#define HDMI_EXT_VIDEO_PARA			0x0c0
#define HDMI_EXT_HTOTAL_L			0x0c4
#define HDMI_EXT_HTOTAL_H			0x0c8
#define HDMI_EXT_HBLANK_L			0x0cc
#define HDMI_EXT_HBLANK_H			0x0d0
#define HDMI_EXT_HDELAY_L			0x0d4
#define HDMI_EXT_HDELAY_H			0x0d8
#define HDMI_EXT_HDURATION_L			0x0dc
#define HDMI_EXT_HDURATION_H			0x0e0
#define HDMI_EXT_VTOTAL_L			0x0e4
#define HDMI_EXT_VTOTAL_H			0x0e8
#define HDMI_AV_CTRL2				0x0ec
#define HDMI_EXT_VBLANK_L			0x0f4
#define HDMI_EXT_VBLANK_H			0x10c
#define HDMI_EXT_VDELAY				0x0f8
#define HDMI_EXT_VDURATION			0x0fc

#define HDMI_CP_MANU_SEND_CTRL			0x100
#define HDMI_CP_AUTO_SEND_CTRL			0x104
#define HDMI_AUTO_CHECKSUM_OPT			0x108

#define HDMI_VIDEO_CTRL2			0x114

#define HDMI_PHY_OPTION				0x144

#define HDMI_CP_BUF_INDEX			0x17c
#define HDMI_CP_BUF_ACC_HB0			0x180
#define HDMI_CP_BUF_ACC_HB1			0x184
#define HDMI_CP_BUF_ACC_HB2			0x188
#define HDMI_CP_BUF_ACC_PB0			0x18c

#define HDMI_DDC_READ_FIFO_ADDR			0x200
#define HDMI_DDC_BUS_FREQ_L			0x204
#define HDMI_DDC_BUS_FREQ_H			0x208
#define HDMI_DDC_BUS_CTRL			0x2dc
#define HDMI_DDC_I2C_LEN			0x278
#define HDMI_DDC_I2C_OFFSET			0x280
#define HDMI_DDC_I2C_CTRL			0x284
#define HDMI_DDC_I2C_READ_BUF0			0x288
#define HDMI_DDC_I2C_READ_BUF1			0x28c
#define HDMI_DDC_I2C_READ_BUF2			0x290
#define HDMI_DDC_I2C_READ_BUF3			0x294
#define HDMI_DDC_I2C_WRITE_BUF0			0x298
#define HDMI_DDC_I2C_WRITE_BUF1			0x29c
#define HDMI_DDC_I2C_WRITE_BUF2			0x2a0
#define HDMI_DDC_I2C_WRITE_BUF3			0x2a4
#define HDMI_DDC_I2C_WRITE_BUF4			0x2ac
#define HDMI_DDC_I2C_WRITE_BUF5			0x2b0
#define HDMI_DDC_I2C_WRITE_BUF6			0x2b4

#define HDMI_INTR_MASK1				0x248
#define HDMI_INTR_MASK2				0x24c
#define HDMI_INTR_STATUS1			0x250
#define HDMI_INTR_STATUS2			0x254
#define HDMI_INTR_MASK3				0x258
#define HDMI_INTR_MASK4				0x25c
#define HDMI_INTR_STATUS3			0x260
#define HDMI_INTR_STATUS4			0x264

#define HDMI_HDCP_CTRL				0x2bc

#define HDMI_EDID_SEGMENT_POINTER		0x310
#define HDMI_EDID_WORD_ADDR			0x314
#define HDMI_EDID_FIFO_ADDR			0x318

#define HDMI_HPG_MENS_STA			0x37c

#define HDMI_INTERNAL_CLK_DIVIDER		0x800

enum {
	/* HDMI_SYS_CTRL */
	HDMI_SYS_POWER_MODE_MASK = 0xf0,
	HDMI_SYS_POWER_MODE_A = 0x10,
	HDMI_SYS_POWER_MODE_B = 0x20,
	HDMI_SYS_POWER_MODE_D = 0x40,
	HDMI_SYS_POWER_MODE_E = 0x80,
	HDMI_SYS_PLL_RESET_MASK = 0x0c,
	HDMI_SYS_PLL_RESET = 0x0c,
	HDMI_SYS_PLLB_RESET = 0x08,

	/* HDMI_LR_SWAP_N3 */
	HDMI_AUDIO_LR_SWAP_MASK = 0xf0,
	HDMI_AUDIO_LR_SWAP_SUBPACKET0 = 0x10,
	HDMI_AUDIO_LR_SWAP_SUBPACKET1 = 0x20,
	HDMI_AUDIO_LR_SWAP_SUBPACKET2 = 0x40,
	HDMI_AUDIO_LR_SWAP_SUBPACKET3 = 0x80,
	HDMI_AUDIO_N_19_16_MASK = 0x0f,

	/* HDMI_AUDIO_CTRL1 */
	HDMI_AUDIO_EXTERNAL_CTS = BIT(7),
	HDMI_AUDIO_INPUT_IIS = 0,
	HDMI_AUDIO_INPUT_SPDIF = 0x08,
	HDMI_AUDIO_INPUT_MCLK_ACTIVE = 0x04,
	HDMI_AUDIO_INPUT_MCLK_DEACTIVE = 0,
	HDMI_AUDIO_INPUT_MCLK_RATE_128X = 0,
	HDMI_AUDIO_INPUT_MCLK_RATE_256X = 1,
	HDMI_AUDIO_INPUT_MCLK_RATE_384X = 2,
	HDMI_AUDIO_INPUT_MCLK_RATE_512X = 3,

	/* HDMI_I2S_AUDIO_CTRL */
	HDMI_AUDIO_I2S_FORMAT_STANDARD = 0,
	HDMI_AUDIO_I2S_CHANNEL_1_2 = 0x04,
	HDMI_AUDIO_I2S_CHANNEL_3_4 = 0x0c,
	HDMI_AUDIO_I2S_CHANNEL_5_6 = 0x1c,
	HDMI_AUDIO_I2S_CHANNEL_7_8 = 0x3c,

	/* HDMI_AV_CTRL1 */
	HDMI_AUDIO_SAMPLE_FRE_MASK = 0xf0,
	HDMI_AUDIO_SAMPLE_FRE_32000 = 0x30,
	HDMI_AUDIO_SAMPLE_FRE_44100 = 0,
	HDMI_AUDIO_SAMPLE_FRE_48000 = 0x20,
	HDMI_AUDIO_SAMPLE_FRE_88200 = 0x80,
	HDMI_AUDIO_SAMPLE_FRE_96000 = 0xa0,
	HDMI_AUDIO_SAMPLE_FRE_176400 = 0xc0,
	HDMI_AUDIO_SAMPLE_FRE_192000 = 0xe0,
	HDMI_AUDIO_SAMPLE_FRE_768000 = 0x90,

	HDMI_VIDEO_INPUT_FORMAT_MASK = 0x0e,
	HDMI_VIDEO_INPUT_RGB_YCBCR444 = 0,
	HDMI_VIDEO_INPUT_YCBCR422 = 0x02,
	HDMI_VIDEO_DE_MASK = 0x1,
	HDMI_VIDEO_INTERNAL_DE = 0,
	HDMI_VIDEO_EXTERNAL_DE = 0x01,

	/* HDMI_VIDEO_CTRL1 */
	HDMI_VIDEO_OUTPUT_FORMAT_MASK = 0xc0,
	HDMI_VIDEO_OUTPUT_RGB444 = 0,
	HDMI_VIDEO_OUTPUT_YCBCR444 = 0x40,
	HDMI_VIDEO_OUTPUT_YCBCR422 = 0x80,
	HDMI_VIDEO_INPUT_DATA_DEPTH_MASK = 0x30,
	HDMI_VIDEO_INPUT_DATA_DEPTH_12BIT = 0,
	HDMI_VIDEO_INPUT_DATA_DEPTH_10BIT = 0x10,
	HDMI_VIDEO_INPUT_DATA_DEPTH_8BIT = 0x30,
	HDMI_VIDEO_INPUT_COLOR_MASK = 1,
	HDMI_VIDEO_INPUT_COLOR_RGB = 0,
	HDMI_VIDEO_INPUT_COLOR_YCBCR = 1,

	/* HDMI_EXT_VIDEO_PARA */
	HDMI_VIDEO_VSYNC_OFFSET_SHIFT = 4,
	HDMI_VIDEO_VSYNC_ACTIVE_HIGH = BIT(3),
	HDMI_VIDEO_VSYNC_ACTIVE_LOW = 0,
	HDMI_VIDEO_HSYNC_ACTIVE_HIGH = BIT(2),
	HDMI_VIDEO_HSYNC_ACTIVE_LOW = 0,
	HDMI_VIDEO_MODE_INTERLACE = BIT(1),
	HDMI_VIDEO_MODE_PROGRESSIVE = 0,
	HDMI_EXT_VIDEO_SET_EN = BIT(0),

	/* HDMI_CP_AUTO_SEND_CTRL */

	/* HDMI_VIDEO_CTRL2 */
	HDMI_VIDEO_AV_MUTE_MASK = 0xc0,
	HDMI_VIDEO_CLR_AV_MUTE = BIT(7),
	HDMI_VIDEO_SET_AV_MUTE = BIT(6),
	HDMI_AUDIO_CP_LOGIC_RESET_MASK = BIT(2),
	HDMI_AUDIO_CP_LOGIC_RESET = BIT(2),
	HDMI_VIDEO_AUDIO_DISABLE_MASK = 0x3,
	HDMI_AUDIO_DISABLE = BIT(1),
	HDMI_VIDEO_DISABLE = BIT(0),

	/* HDMI_CP_BUF_INDEX */
	HDMI_INFOFRAME_VSI = 0x05,
	HDMI_INFOFRAME_AVI = 0x06,
	HDMI_INFOFRAME_AAI = 0x08,

	/* HDMI_INTR_MASK1 */
	/* HDMI_INTR_STATUS1 */
	HDMI_INTR_HOTPLUG = BIT(7),
	HDMI_INTR_MSENS = BIT(6),
	HDMI_INTR_VSYNC = BIT(5),
	HDMI_INTR_AUDIO_FIFO_FULL = BIT(4),
	HDMI_INTR_EDID_MASK = 0x6,
	HDMI_INTR_EDID_READY = BIT(2),
	HDMI_INTR_EDID_ERR = BIT(1),

	/* HDMI_HDCP_CTRL */
	HDMI_VIDEO_MODE_MASK = BIT(1),
	HDMI_VIDEO_MODE_HDMI = BIT(1),

	/* HDMI_HPG_MENS_STA */
	HDMI_HPG_IN_STATUS_HIGH = BIT(7),
	HDMI_MSENS_IN_STATUS_HIGH = BIT(6),
};

#endif /* __RK3066_HDMI_H__ */