hc
2023-03-21 4b55d97acc464242bcd6a8ae77b8ff37c22dec58
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
230
231
232
233
234
/*
 * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
 *    Zheng Yang <zhengyang@rock-chips.com>
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */
 
#ifndef __RK3066_HDMI_H__
#define __RK3066_HDMI_H__
 
#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__ */