Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / gpu / drm / amd / display / dc / dce / dce_stream_encoder.h
1 /*
2  * Copyright 2012-15 Advanced Micro Devices, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  *  and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20  * OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * Authors: AMD
23  *
24  */
25
26 #ifndef __DC_STREAM_ENCODER_DCE110_H__
27 #define __DC_STREAM_ENCODER_DCE110_H__
28
29 #include "stream_encoder.h"
30
31 #define DCE110STRENC_FROM_STRENC(stream_encoder)\
32         container_of(stream_encoder, struct dce110_stream_encoder, base)
33
34 #ifndef TMDS_CNTL__TMDS_PIXEL_ENCODING_MASK
35         #define TMDS_CNTL__TMDS_PIXEL_ENCODING_MASK       0x00000010L
36         #define TMDS_CNTL__TMDS_COLOR_FORMAT_MASK         0x00000300L
37         #define TMDS_CNTL__TMDS_PIXEL_ENCODING__SHIFT     0x00000004
38         #define TMDS_CNTL__TMDS_COLOR_FORMAT__SHIFT       0x00000008
39 #endif
40
41
42 #define SE_COMMON_REG_LIST_DCE_BASE(id) \
43         SE_COMMON_REG_LIST_BASE(id),\
44         SRI(AFMT_AVI_INFO0, DIG, id), \
45         SRI(AFMT_AVI_INFO1, DIG, id), \
46         SRI(AFMT_AVI_INFO2, DIG, id), \
47         SRI(AFMT_AVI_INFO3, DIG, id)
48
49 #define SE_COMMON_REG_LIST_BASE(id) \
50         SRI(AFMT_GENERIC_0, DIG, id), \
51         SRI(AFMT_GENERIC_1, DIG, id), \
52         SRI(AFMT_GENERIC_2, DIG, id), \
53         SRI(AFMT_GENERIC_3, DIG, id), \
54         SRI(AFMT_GENERIC_4, DIG, id), \
55         SRI(AFMT_GENERIC_5, DIG, id), \
56         SRI(AFMT_GENERIC_6, DIG, id), \
57         SRI(AFMT_GENERIC_7, DIG, id), \
58         SRI(AFMT_GENERIC_HDR, DIG, id), \
59         SRI(AFMT_INFOFRAME_CONTROL0, DIG, id), \
60         SRI(AFMT_VBI_PACKET_CONTROL, DIG, id), \
61         SRI(AFMT_AUDIO_PACKET_CONTROL, DIG, id), \
62         SRI(AFMT_AUDIO_PACKET_CONTROL2, DIG, id), \
63         SRI(AFMT_AUDIO_SRC_CONTROL, DIG, id), \
64         SRI(AFMT_60958_0, DIG, id), \
65         SRI(AFMT_60958_1, DIG, id), \
66         SRI(AFMT_60958_2, DIG, id), \
67         SRI(DIG_FE_CNTL, DIG, id), \
68         SRI(HDMI_CONTROL, DIG, id), \
69         SRI(HDMI_GC, DIG, id), \
70         SRI(HDMI_GENERIC_PACKET_CONTROL0, DIG, id), \
71         SRI(HDMI_GENERIC_PACKET_CONTROL1, DIG, id), \
72         SRI(HDMI_INFOFRAME_CONTROL0, DIG, id), \
73         SRI(HDMI_INFOFRAME_CONTROL1, DIG, id), \
74         SRI(HDMI_VBI_PACKET_CONTROL, DIG, id), \
75         SRI(HDMI_AUDIO_PACKET_CONTROL, DIG, id),\
76         SRI(HDMI_ACR_PACKET_CONTROL, DIG, id),\
77         SRI(HDMI_ACR_32_0, DIG, id),\
78         SRI(HDMI_ACR_32_1, DIG, id),\
79         SRI(HDMI_ACR_44_0, DIG, id),\
80         SRI(HDMI_ACR_44_1, DIG, id),\
81         SRI(HDMI_ACR_48_0, DIG, id),\
82         SRI(HDMI_ACR_48_1, DIG, id),\
83         SRI(TMDS_CNTL, DIG, id), \
84         SRI(DP_MSE_RATE_CNTL, DP, id), \
85         SRI(DP_MSE_RATE_UPDATE, DP, id), \
86         SRI(DP_PIXEL_FORMAT, DP, id), \
87         SRI(DP_SEC_CNTL, DP, id), \
88         SRI(DP_STEER_FIFO, DP, id), \
89         SRI(DP_VID_M, DP, id), \
90         SRI(DP_VID_N, DP, id), \
91         SRI(DP_VID_STREAM_CNTL, DP, id), \
92         SRI(DP_VID_TIMING, DP, id), \
93         SRI(DP_SEC_AUD_N, DP, id), \
94         SRI(DP_SEC_TIMESTAMP, DP, id)
95
96 #define SE_COMMON_REG_LIST(id)\
97         SE_COMMON_REG_LIST_DCE_BASE(id), \
98         SRI(AFMT_CNTL, DIG, id)
99
100 #define SE_DCN_REG_LIST(id)\
101         SE_COMMON_REG_LIST_BASE(id),\
102         SRI(AFMT_CNTL, DIG, id),\
103         SRI(AFMT_VBI_PACKET_CONTROL1, DIG, id),\
104         SRI(HDMI_GENERIC_PACKET_CONTROL2, DIG, id), \
105         SRI(HDMI_GENERIC_PACKET_CONTROL3, DIG, id), \
106         SRI(DP_DB_CNTL, DP, id), \
107         SRI(DP_MSA_MISC, DP, id), \
108         SRI(DP_MSA_COLORIMETRY, DP, id), \
109         SRI(DP_MSA_TIMING_PARAM1, DP, id), \
110         SRI(DP_MSA_TIMING_PARAM2, DP, id), \
111         SRI(DP_MSA_TIMING_PARAM3, DP, id), \
112         SRI(DP_MSA_TIMING_PARAM4, DP, id), \
113         SRI(HDMI_DB_CONTROL, DIG, id)
114
115 #define SE_SF(reg_name, field_name, post_fix)\
116         .field_name = reg_name ## __ ## field_name ## post_fix
117
118 #define SE_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh)\
119         SE_SF(AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC_INDEX, mask_sh),\
120         SE_SF(AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC0_UPDATE, mask_sh),\
121         SE_SF(AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC2_UPDATE, mask_sh),\
122         SE_SF(AFMT_GENERIC_HDR, AFMT_GENERIC_HB0, mask_sh),\
123         SE_SF(AFMT_GENERIC_HDR, AFMT_GENERIC_HB1, mask_sh),\
124         SE_SF(AFMT_GENERIC_HDR, AFMT_GENERIC_HB2, mask_sh),\
125         SE_SF(AFMT_GENERIC_HDR, AFMT_GENERIC_HB3, mask_sh),\
126         SE_SF(HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_CONT, mask_sh),\
127         SE_SF(HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_SEND, mask_sh),\
128         SE_SF(HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_LINE, mask_sh),\
129         SE_SF(HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_CONT, mask_sh),\
130         SE_SF(HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_SEND, mask_sh),\
131         SE_SF(HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_LINE, mask_sh),\
132         SE_SF(DP_PIXEL_FORMAT, DP_PIXEL_ENCODING, mask_sh),\
133         SE_SF(DP_PIXEL_FORMAT, DP_COMPONENT_DEPTH, mask_sh),\
134         SE_SF(DP_PIXEL_FORMAT, DP_DYN_RANGE, mask_sh),\
135         SE_SF(DP_PIXEL_FORMAT, DP_YCBCR_RANGE, mask_sh),\
136         SE_SF(HDMI_CONTROL, HDMI_PACKET_GEN_VERSION, mask_sh),\
137         SE_SF(HDMI_CONTROL, HDMI_KEEPOUT_MODE, mask_sh),\
138         SE_SF(HDMI_CONTROL, HDMI_DEEP_COLOR_ENABLE, mask_sh),\
139         SE_SF(HDMI_CONTROL, HDMI_DEEP_COLOR_DEPTH, mask_sh),\
140         SE_SF(HDMI_VBI_PACKET_CONTROL, HDMI_GC_CONT, mask_sh),\
141         SE_SF(HDMI_VBI_PACKET_CONTROL, HDMI_GC_SEND, mask_sh),\
142         SE_SF(HDMI_VBI_PACKET_CONTROL, HDMI_NULL_SEND, mask_sh),\
143         SE_SF(HDMI_INFOFRAME_CONTROL0, HDMI_AUDIO_INFO_SEND, mask_sh),\
144         SE_SF(AFMT_INFOFRAME_CONTROL0, AFMT_AUDIO_INFO_UPDATE, mask_sh),\
145         SE_SF(HDMI_INFOFRAME_CONTROL1, HDMI_AUDIO_INFO_LINE, mask_sh),\
146         SE_SF(HDMI_GC, HDMI_GC_AVMUTE, mask_sh),\
147         SE_SF(DP_MSE_RATE_CNTL, DP_MSE_RATE_X, mask_sh),\
148         SE_SF(DP_MSE_RATE_CNTL, DP_MSE_RATE_Y, mask_sh),\
149         SE_SF(DP_MSE_RATE_UPDATE, DP_MSE_RATE_UPDATE_PENDING, mask_sh),\
150         SE_SF(AFMT_AVI_INFO3, AFMT_AVI_INFO_VERSION, mask_sh),\
151         SE_SF(HDMI_INFOFRAME_CONTROL0, HDMI_AVI_INFO_SEND, mask_sh),\
152         SE_SF(HDMI_INFOFRAME_CONTROL0, HDMI_AVI_INFO_CONT, mask_sh),\
153         SE_SF(HDMI_INFOFRAME_CONTROL1, HDMI_AVI_INFO_LINE, mask_sh),\
154         SE_SF(DP_SEC_CNTL, DP_SEC_GSP0_ENABLE, mask_sh),\
155         SE_SF(DP_SEC_CNTL, DP_SEC_STREAM_ENABLE, mask_sh),\
156         SE_SF(DP_SEC_CNTL, DP_SEC_GSP1_ENABLE, mask_sh),\
157         SE_SF(DP_SEC_CNTL, DP_SEC_GSP2_ENABLE, mask_sh),\
158         SE_SF(DP_SEC_CNTL, DP_SEC_GSP3_ENABLE, mask_sh),\
159         SE_SF(DP_SEC_CNTL, DP_SEC_AVI_ENABLE, mask_sh),\
160         SE_SF(DP_SEC_CNTL, DP_SEC_MPG_ENABLE, mask_sh),\
161         SE_SF(DP_VID_STREAM_CNTL, DP_VID_STREAM_DIS_DEFER, mask_sh),\
162         SE_SF(DP_VID_STREAM_CNTL, DP_VID_STREAM_ENABLE, mask_sh),\
163         SE_SF(DP_VID_STREAM_CNTL, DP_VID_STREAM_STATUS, mask_sh),\
164         SE_SF(DP_STEER_FIFO, DP_STEER_FIFO_RESET, mask_sh),\
165         SE_SF(DP_VID_TIMING, DP_VID_M_N_GEN_EN, mask_sh),\
166         SE_SF(DP_VID_N, DP_VID_N, mask_sh),\
167         SE_SF(DP_VID_M, DP_VID_M, mask_sh),\
168         SE_SF(DIG_FE_CNTL, DIG_START, mask_sh),\
169         SE_SF(DIG_FE_CNTL, DIG_STEREOSYNC_SELECT, mask_sh),\
170         SE_SF(DIG_FE_CNTL, DIG_STEREOSYNC_GATE_EN, mask_sh),\
171         SE_SF(AFMT_AUDIO_SRC_CONTROL, AFMT_AUDIO_SRC_SELECT, mask_sh),\
172         SE_SF(AFMT_AUDIO_PACKET_CONTROL2, AFMT_AUDIO_CHANNEL_ENABLE, mask_sh),\
173         SE_SF(HDMI_AUDIO_PACKET_CONTROL, HDMI_AUDIO_PACKETS_PER_LINE, mask_sh),\
174         SE_SF(HDMI_AUDIO_PACKET_CONTROL, HDMI_AUDIO_DELAY_EN, mask_sh),\
175         SE_SF(AFMT_AUDIO_PACKET_CONTROL, AFMT_60958_CS_UPDATE, mask_sh),\
176         SE_SF(AFMT_AUDIO_PACKET_CONTROL2, AFMT_AUDIO_LAYOUT_OVRD, mask_sh),\
177         SE_SF(AFMT_AUDIO_PACKET_CONTROL2, AFMT_60958_OSF_OVRD, mask_sh),\
178         SE_SF(HDMI_ACR_PACKET_CONTROL, HDMI_ACR_AUTO_SEND, mask_sh),\
179         SE_SF(HDMI_ACR_PACKET_CONTROL, HDMI_ACR_SOURCE, mask_sh),\
180         SE_SF(HDMI_ACR_PACKET_CONTROL, HDMI_ACR_AUDIO_PRIORITY, mask_sh),\
181         SE_SF(HDMI_ACR_32_0, HDMI_ACR_CTS_32, mask_sh),\
182         SE_SF(HDMI_ACR_32_1, HDMI_ACR_N_32, mask_sh),\
183         SE_SF(HDMI_ACR_44_0, HDMI_ACR_CTS_44, mask_sh),\
184         SE_SF(HDMI_ACR_44_1, HDMI_ACR_N_44, mask_sh),\
185         SE_SF(HDMI_ACR_48_0, HDMI_ACR_CTS_48, mask_sh),\
186         SE_SF(HDMI_ACR_48_1, HDMI_ACR_N_48, mask_sh),\
187         SE_SF(AFMT_60958_0, AFMT_60958_CS_CHANNEL_NUMBER_L, mask_sh),\
188         SE_SF(AFMT_60958_0, AFMT_60958_CS_CLOCK_ACCURACY, mask_sh),\
189         SE_SF(AFMT_60958_1, AFMT_60958_CS_CHANNEL_NUMBER_R, mask_sh),\
190         SE_SF(AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_2, mask_sh),\
191         SE_SF(AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_3, mask_sh),\
192         SE_SF(AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_4, mask_sh),\
193         SE_SF(AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_5, mask_sh),\
194         SE_SF(AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_6, mask_sh),\
195         SE_SF(AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_7, mask_sh),\
196         SE_SF(DP_SEC_AUD_N, DP_SEC_AUD_N, mask_sh),\
197         SE_SF(DP_SEC_TIMESTAMP, DP_SEC_TIMESTAMP_MODE, mask_sh),\
198         SE_SF(DP_SEC_CNTL, DP_SEC_ASP_ENABLE, mask_sh),\
199         SE_SF(DP_SEC_CNTL, DP_SEC_ATP_ENABLE, mask_sh),\
200         SE_SF(DP_SEC_CNTL, DP_SEC_AIP_ENABLE, mask_sh),\
201         SE_SF(DP_SEC_CNTL, DP_SEC_ACM_ENABLE, mask_sh),\
202         SE_SF(AFMT_AUDIO_PACKET_CONTROL, AFMT_AUDIO_SAMPLE_SEND, mask_sh),\
203         SE_SF(DIG_FE_CNTL, DIG_SOURCE_SELECT, mask_sh)
204
205 #define SE_COMMON_MASK_SH_LIST_DCE_COMMON(mask_sh)\
206         SE_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh)
207
208 #define SE_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh)\
209         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC_INDEX, mask_sh),\
210         SE_SF(DIG0_AFMT_GENERIC_HDR, AFMT_GENERIC_HB0, mask_sh),\
211         SE_SF(DIG0_AFMT_GENERIC_HDR, AFMT_GENERIC_HB1, mask_sh),\
212         SE_SF(DIG0_AFMT_GENERIC_HDR, AFMT_GENERIC_HB2, mask_sh),\
213         SE_SF(DIG0_AFMT_GENERIC_HDR, AFMT_GENERIC_HB3, mask_sh),\
214         SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_CONT, mask_sh),\
215         SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_SEND, mask_sh),\
216         SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_LINE, mask_sh),\
217         SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_CONT, mask_sh),\
218         SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_SEND, mask_sh),\
219         SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_LINE, mask_sh),\
220         SE_SF(DP0_DP_PIXEL_FORMAT, DP_PIXEL_ENCODING, mask_sh),\
221         SE_SF(DP0_DP_PIXEL_FORMAT, DP_COMPONENT_DEPTH, mask_sh),\
222         SE_SF(DIG0_HDMI_CONTROL, HDMI_PACKET_GEN_VERSION, mask_sh),\
223         SE_SF(DIG0_HDMI_CONTROL, HDMI_KEEPOUT_MODE, mask_sh),\
224         SE_SF(DIG0_HDMI_CONTROL, HDMI_DEEP_COLOR_ENABLE, mask_sh),\
225         SE_SF(DIG0_HDMI_CONTROL, HDMI_DEEP_COLOR_DEPTH, mask_sh),\
226         SE_SF(DIG0_HDMI_CONTROL, HDMI_DATA_SCRAMBLE_EN, mask_sh),\
227         SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_GC_CONT, mask_sh),\
228         SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_GC_SEND, mask_sh),\
229         SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_NULL_SEND, mask_sh),\
230         SE_SF(DIG0_HDMI_INFOFRAME_CONTROL0, HDMI_AUDIO_INFO_SEND, mask_sh),\
231         SE_SF(DIG0_AFMT_INFOFRAME_CONTROL0, AFMT_AUDIO_INFO_UPDATE, mask_sh),\
232         SE_SF(DIG0_HDMI_INFOFRAME_CONTROL1, HDMI_AUDIO_INFO_LINE, mask_sh),\
233         SE_SF(DIG0_HDMI_GC, HDMI_GC_AVMUTE, mask_sh),\
234         SE_SF(DP0_DP_MSE_RATE_CNTL, DP_MSE_RATE_X, mask_sh),\
235         SE_SF(DP0_DP_MSE_RATE_CNTL, DP_MSE_RATE_Y, mask_sh),\
236         SE_SF(DP0_DP_MSE_RATE_UPDATE, DP_MSE_RATE_UPDATE_PENDING, mask_sh),\
237         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP0_ENABLE, mask_sh),\
238         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_STREAM_ENABLE, mask_sh),\
239         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP1_ENABLE, mask_sh),\
240         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP2_ENABLE, mask_sh),\
241         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP3_ENABLE, mask_sh),\
242         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_MPG_ENABLE, mask_sh),\
243         SE_SF(DP0_DP_VID_STREAM_CNTL, DP_VID_STREAM_DIS_DEFER, mask_sh),\
244         SE_SF(DP0_DP_VID_STREAM_CNTL, DP_VID_STREAM_ENABLE, mask_sh),\
245         SE_SF(DP0_DP_VID_STREAM_CNTL, DP_VID_STREAM_STATUS, mask_sh),\
246         SE_SF(DP0_DP_STEER_FIFO, DP_STEER_FIFO_RESET, mask_sh),\
247         SE_SF(DP0_DP_VID_TIMING, DP_VID_M_N_GEN_EN, mask_sh),\
248         SE_SF(DP0_DP_VID_N, DP_VID_N, mask_sh),\
249         SE_SF(DP0_DP_VID_M, DP_VID_M, mask_sh),\
250         SE_SF(DIG0_DIG_FE_CNTL, DIG_START, mask_sh),\
251         SE_SF(DIG0_AFMT_AUDIO_SRC_CONTROL, AFMT_AUDIO_SRC_SELECT, mask_sh),\
252         SE_SF(DIG0_AFMT_AUDIO_PACKET_CONTROL2, AFMT_AUDIO_CHANNEL_ENABLE, mask_sh),\
253         SE_SF(DIG0_HDMI_AUDIO_PACKET_CONTROL, HDMI_AUDIO_PACKETS_PER_LINE, mask_sh),\
254         SE_SF(DIG0_HDMI_AUDIO_PACKET_CONTROL, HDMI_AUDIO_DELAY_EN, mask_sh),\
255         SE_SF(DIG0_AFMT_AUDIO_PACKET_CONTROL, AFMT_60958_CS_UPDATE, mask_sh),\
256         SE_SF(DIG0_AFMT_AUDIO_PACKET_CONTROL2, AFMT_AUDIO_LAYOUT_OVRD, mask_sh),\
257         SE_SF(DIG0_AFMT_AUDIO_PACKET_CONTROL2, AFMT_60958_OSF_OVRD, mask_sh),\
258         SE_SF(DIG0_HDMI_ACR_PACKET_CONTROL, HDMI_ACR_AUTO_SEND, mask_sh),\
259         SE_SF(DIG0_HDMI_ACR_PACKET_CONTROL, HDMI_ACR_SOURCE, mask_sh),\
260         SE_SF(DIG0_HDMI_ACR_PACKET_CONTROL, HDMI_ACR_AUDIO_PRIORITY, mask_sh),\
261         SE_SF(DIG0_HDMI_ACR_32_0, HDMI_ACR_CTS_32, mask_sh),\
262         SE_SF(DIG0_HDMI_ACR_32_1, HDMI_ACR_N_32, mask_sh),\
263         SE_SF(DIG0_HDMI_ACR_44_0, HDMI_ACR_CTS_44, mask_sh),\
264         SE_SF(DIG0_HDMI_ACR_44_1, HDMI_ACR_N_44, mask_sh),\
265         SE_SF(DIG0_HDMI_ACR_48_0, HDMI_ACR_CTS_48, mask_sh),\
266         SE_SF(DIG0_HDMI_ACR_48_1, HDMI_ACR_N_48, mask_sh),\
267         SE_SF(DIG0_AFMT_60958_0, AFMT_60958_CS_CHANNEL_NUMBER_L, mask_sh),\
268         SE_SF(DIG0_AFMT_60958_0, AFMT_60958_CS_CLOCK_ACCURACY, mask_sh),\
269         SE_SF(DIG0_AFMT_60958_1, AFMT_60958_CS_CHANNEL_NUMBER_R, mask_sh),\
270         SE_SF(DIG0_AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_2, mask_sh),\
271         SE_SF(DIG0_AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_3, mask_sh),\
272         SE_SF(DIG0_AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_4, mask_sh),\
273         SE_SF(DIG0_AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_5, mask_sh),\
274         SE_SF(DIG0_AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_6, mask_sh),\
275         SE_SF(DIG0_AFMT_60958_2, AFMT_60958_CS_CHANNEL_NUMBER_7, mask_sh),\
276         SE_SF(DP0_DP_SEC_AUD_N, DP_SEC_AUD_N, mask_sh),\
277         SE_SF(DP0_DP_SEC_TIMESTAMP, DP_SEC_TIMESTAMP_MODE, mask_sh),\
278         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_ASP_ENABLE, mask_sh),\
279         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_ATP_ENABLE, mask_sh),\
280         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_AIP_ENABLE, mask_sh),\
281         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_ACM_ENABLE, mask_sh),\
282         SE_SF(DIG0_AFMT_AUDIO_PACKET_CONTROL, AFMT_AUDIO_SAMPLE_SEND, mask_sh),\
283         SE_SF(DIG0_AFMT_CNTL, AFMT_AUDIO_CLOCK_EN, mask_sh),\
284         SE_SF(DIG0_HDMI_CONTROL, HDMI_CLOCK_CHANNEL_RATE, mask_sh),\
285         SE_SF(DIG0_DIG_FE_CNTL, TMDS_PIXEL_ENCODING, mask_sh),\
286         SE_SF(DIG0_DIG_FE_CNTL, TMDS_COLOR_FORMAT, mask_sh),\
287         SE_SF(DIG0_DIG_FE_CNTL, DIG_STEREOSYNC_SELECT, mask_sh),\
288         SE_SF(DIG0_DIG_FE_CNTL, DIG_STEREOSYNC_GATE_EN, mask_sh),\
289         SE_SF(DIG0_DIG_FE_CNTL, DIG_SOURCE_SELECT, mask_sh)
290
291 #define SE_COMMON_MASK_SH_LIST_SOC(mask_sh)\
292         SE_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh)
293
294 #define SE_COMMON_MASK_SH_LIST_DCE80_100(mask_sh)\
295         SE_COMMON_MASK_SH_LIST_DCE_COMMON(mask_sh),\
296         SE_SF(TMDS_CNTL, TMDS_PIXEL_ENCODING, mask_sh),\
297         SE_SF(TMDS_CNTL, TMDS_COLOR_FORMAT, mask_sh)
298
299 #define SE_COMMON_MASK_SH_LIST_DCE110(mask_sh)\
300         SE_COMMON_MASK_SH_LIST_DCE_COMMON(mask_sh),\
301         SE_SF(AFMT_CNTL, AFMT_AUDIO_CLOCK_EN, mask_sh),\
302         SE_SF(HDMI_CONTROL, HDMI_CLOCK_CHANNEL_RATE, mask_sh),\
303         SE_SF(HDMI_CONTROL, HDMI_DATA_SCRAMBLE_EN, mask_sh),\
304         SE_SF(DIG_FE_CNTL, TMDS_PIXEL_ENCODING, mask_sh),\
305         SE_SF(DIG_FE_CNTL, TMDS_COLOR_FORMAT, mask_sh),\
306         SE_SF(DIG_FE_CNTL, DIG_STEREOSYNC_SELECT, mask_sh),\
307         SE_SF(DIG_FE_CNTL, DIG_STEREOSYNC_GATE_EN, mask_sh)
308
309 #define SE_COMMON_MASK_SH_LIST_DCE112(mask_sh)\
310         SE_COMMON_MASK_SH_LIST_DCE_COMMON(mask_sh),\
311         SE_SF(AFMT_CNTL, AFMT_AUDIO_CLOCK_EN, mask_sh),\
312         SE_SF(HDMI_CONTROL, HDMI_CLOCK_CHANNEL_RATE, mask_sh),\
313         SE_SF(HDMI_CONTROL, HDMI_DATA_SCRAMBLE_EN, mask_sh),\
314         SE_SF(DIG_FE_CNTL, TMDS_PIXEL_ENCODING, mask_sh),\
315         SE_SF(DIG_FE_CNTL, TMDS_COLOR_FORMAT, mask_sh),\
316         SE_SF(DP_VID_TIMING, DP_VID_M_DOUBLE_VALUE_EN, mask_sh)
317
318 #define SE_COMMON_MASK_SH_LIST_DCE120(mask_sh)\
319         SE_COMMON_MASK_SH_LIST_SOC(mask_sh),\
320         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC0_UPDATE, mask_sh),\
321         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC2_UPDATE, mask_sh),\
322         SE_SF(DP0_DP_PIXEL_FORMAT, DP_DYN_RANGE, mask_sh),\
323         SE_SF(DP0_DP_PIXEL_FORMAT, DP_YCBCR_RANGE, mask_sh),\
324         SE_SF(DIG0_HDMI_INFOFRAME_CONTROL0, HDMI_AVI_INFO_SEND, mask_sh),\
325         SE_SF(DIG0_HDMI_INFOFRAME_CONTROL0, HDMI_AVI_INFO_CONT, mask_sh),\
326         SE_SF(DIG0_HDMI_INFOFRAME_CONTROL1, HDMI_AVI_INFO_LINE, mask_sh),\
327         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_AVI_ENABLE, mask_sh),\
328         SE_SF(DIG0_AFMT_AVI_INFO3, AFMT_AVI_INFO_VERSION, mask_sh),\
329         SE_SF(DP0_DP_VID_TIMING, DP_VID_M_DOUBLE_VALUE_EN, mask_sh)
330
331 #define SE_COMMON_MASK_SH_LIST_DCN10(mask_sh)\
332         SE_COMMON_MASK_SH_LIST_SOC(mask_sh),\
333         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC_LOCK_STATUS, mask_sh),\
334         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC_CONFLICT, mask_sh),\
335         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL, AFMT_GENERIC_CONFLICT_CLR, mask_sh),\
336         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC0_FRAME_UPDATE_PENDING, mask_sh),\
337         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC1_FRAME_UPDATE_PENDING, mask_sh),\
338         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC2_FRAME_UPDATE_PENDING, mask_sh),\
339         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC3_FRAME_UPDATE_PENDING, mask_sh),\
340         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC4_FRAME_UPDATE_PENDING, mask_sh),\
341         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC5_FRAME_UPDATE_PENDING, mask_sh),\
342         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC6_FRAME_UPDATE_PENDING, mask_sh),\
343         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC7_FRAME_UPDATE_PENDING, mask_sh),\
344         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC0_FRAME_UPDATE, mask_sh),\
345         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC1_FRAME_UPDATE, mask_sh),\
346         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC2_FRAME_UPDATE, mask_sh),\
347         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC3_FRAME_UPDATE, mask_sh),\
348         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC4_FRAME_UPDATE, mask_sh),\
349         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC5_FRAME_UPDATE, mask_sh),\
350         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC6_FRAME_UPDATE, mask_sh),\
351         SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC7_FRAME_UPDATE, mask_sh),\
352         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP4_ENABLE, mask_sh),\
353         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP5_ENABLE, mask_sh),\
354         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP6_ENABLE, mask_sh),\
355         SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP7_ENABLE, mask_sh),\
356         SE_SF(DP0_DP_DB_CNTL, DP_DB_DISABLE, mask_sh),\
357         SE_SF(DP0_DP_MSA_COLORIMETRY, DP_MSA_MISC0, mask_sh),\
358         SE_SF(DP0_DP_MSA_TIMING_PARAM1, DP_MSA_HTOTAL, mask_sh),\
359         SE_SF(DP0_DP_MSA_TIMING_PARAM1, DP_MSA_VTOTAL, mask_sh),\
360         SE_SF(DP0_DP_MSA_TIMING_PARAM2, DP_MSA_HSTART, mask_sh),\
361         SE_SF(DP0_DP_MSA_TIMING_PARAM2, DP_MSA_VSTART, mask_sh),\
362         SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_HSYNCWIDTH, mask_sh),\
363         SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_HSYNCPOLARITY, mask_sh),\
364         SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_VSYNCWIDTH, mask_sh),\
365         SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_VSYNCPOLARITY, mask_sh),\
366         SE_SF(DP0_DP_MSA_TIMING_PARAM4, DP_MSA_HWIDTH, mask_sh),\
367         SE_SF(DP0_DP_MSA_TIMING_PARAM4, DP_MSA_VHEIGHT, mask_sh),\
368         SE_SF(DIG0_HDMI_DB_CONTROL, HDMI_DB_DISABLE, mask_sh),\
369         SE_SF(DP0_DP_VID_TIMING, DP_VID_N_MUL, mask_sh)
370
371 struct dce_stream_encoder_shift {
372         uint8_t AFMT_GENERIC_INDEX;
373         uint8_t AFMT_GENERIC0_UPDATE;
374         uint8_t AFMT_GENERIC2_UPDATE;
375         uint8_t AFMT_GENERIC_HB0;
376         uint8_t AFMT_GENERIC_HB1;
377         uint8_t AFMT_GENERIC_HB2;
378         uint8_t AFMT_GENERIC_HB3;
379         uint8_t AFMT_GENERIC_LOCK_STATUS;
380         uint8_t AFMT_GENERIC_CONFLICT;
381         uint8_t AFMT_GENERIC_CONFLICT_CLR;
382         uint8_t AFMT_GENERIC0_FRAME_UPDATE_PENDING;
383         uint8_t AFMT_GENERIC1_FRAME_UPDATE_PENDING;
384         uint8_t AFMT_GENERIC2_FRAME_UPDATE_PENDING;
385         uint8_t AFMT_GENERIC3_FRAME_UPDATE_PENDING;
386         uint8_t AFMT_GENERIC4_FRAME_UPDATE_PENDING;
387         uint8_t AFMT_GENERIC5_FRAME_UPDATE_PENDING;
388         uint8_t AFMT_GENERIC6_FRAME_UPDATE_PENDING;
389         uint8_t AFMT_GENERIC7_FRAME_UPDATE_PENDING;
390         uint8_t AFMT_GENERIC0_FRAME_UPDATE;
391         uint8_t AFMT_GENERIC1_FRAME_UPDATE;
392         uint8_t AFMT_GENERIC2_FRAME_UPDATE;
393         uint8_t AFMT_GENERIC3_FRAME_UPDATE;
394         uint8_t AFMT_GENERIC4_FRAME_UPDATE;
395         uint8_t AFMT_GENERIC5_FRAME_UPDATE;
396         uint8_t AFMT_GENERIC6_FRAME_UPDATE;
397         uint8_t AFMT_GENERIC7_FRAME_UPDATE;
398         uint8_t HDMI_GENERIC0_CONT;
399         uint8_t HDMI_GENERIC0_SEND;
400         uint8_t HDMI_GENERIC0_LINE;
401         uint8_t HDMI_GENERIC1_CONT;
402         uint8_t HDMI_GENERIC1_SEND;
403         uint8_t HDMI_GENERIC1_LINE;
404         uint8_t DP_PIXEL_ENCODING;
405         uint8_t DP_COMPONENT_DEPTH;
406         uint8_t DP_DYN_RANGE;
407         uint8_t DP_YCBCR_RANGE;
408         uint8_t HDMI_PACKET_GEN_VERSION;
409         uint8_t HDMI_KEEPOUT_MODE;
410         uint8_t HDMI_DEEP_COLOR_ENABLE;
411         uint8_t HDMI_CLOCK_CHANNEL_RATE;
412         uint8_t HDMI_DEEP_COLOR_DEPTH;
413         uint8_t HDMI_GC_CONT;
414         uint8_t HDMI_GC_SEND;
415         uint8_t HDMI_NULL_SEND;
416         uint8_t HDMI_DATA_SCRAMBLE_EN;
417         uint8_t HDMI_AUDIO_INFO_SEND;
418         uint8_t AFMT_AUDIO_INFO_UPDATE;
419         uint8_t HDMI_AUDIO_INFO_LINE;
420         uint8_t HDMI_GC_AVMUTE;
421         uint8_t DP_MSE_RATE_X;
422         uint8_t DP_MSE_RATE_Y;
423         uint8_t DP_MSE_RATE_UPDATE_PENDING;
424         uint8_t AFMT_AVI_INFO_VERSION;
425         uint8_t HDMI_AVI_INFO_SEND;
426         uint8_t HDMI_AVI_INFO_CONT;
427         uint8_t HDMI_AVI_INFO_LINE;
428         uint8_t DP_SEC_GSP0_ENABLE;
429         uint8_t DP_SEC_STREAM_ENABLE;
430         uint8_t DP_SEC_GSP1_ENABLE;
431         uint8_t DP_SEC_GSP2_ENABLE;
432         uint8_t DP_SEC_GSP3_ENABLE;
433         uint8_t DP_SEC_GSP4_ENABLE;
434         uint8_t DP_SEC_GSP5_ENABLE;
435         uint8_t DP_SEC_GSP6_ENABLE;
436         uint8_t DP_SEC_GSP7_ENABLE;
437         uint8_t DP_SEC_AVI_ENABLE;
438         uint8_t DP_SEC_MPG_ENABLE;
439         uint8_t DP_VID_STREAM_DIS_DEFER;
440         uint8_t DP_VID_STREAM_ENABLE;
441         uint8_t DP_VID_STREAM_STATUS;
442         uint8_t DP_STEER_FIFO_RESET;
443         uint8_t DP_VID_M_N_GEN_EN;
444         uint8_t DP_VID_N;
445         uint8_t DP_VID_M;
446         uint8_t DIG_START;
447         uint8_t AFMT_AUDIO_SRC_SELECT;
448         uint8_t AFMT_AUDIO_CHANNEL_ENABLE;
449         uint8_t HDMI_AUDIO_PACKETS_PER_LINE;
450         uint8_t HDMI_AUDIO_DELAY_EN;
451         uint8_t AFMT_60958_CS_UPDATE;
452         uint8_t AFMT_AUDIO_LAYOUT_OVRD;
453         uint8_t AFMT_60958_OSF_OVRD;
454         uint8_t HDMI_ACR_AUTO_SEND;
455         uint8_t HDMI_ACR_SOURCE;
456         uint8_t HDMI_ACR_AUDIO_PRIORITY;
457         uint8_t HDMI_ACR_CTS_32;
458         uint8_t HDMI_ACR_N_32;
459         uint8_t HDMI_ACR_CTS_44;
460         uint8_t HDMI_ACR_N_44;
461         uint8_t HDMI_ACR_CTS_48;
462         uint8_t HDMI_ACR_N_48;
463         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_L;
464         uint8_t AFMT_60958_CS_CLOCK_ACCURACY;
465         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_R;
466         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_2;
467         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_3;
468         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_4;
469         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_5;
470         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_6;
471         uint8_t AFMT_60958_CS_CHANNEL_NUMBER_7;
472         uint8_t DP_SEC_AUD_N;
473         uint8_t DP_SEC_TIMESTAMP_MODE;
474         uint8_t DP_SEC_ASP_ENABLE;
475         uint8_t DP_SEC_ATP_ENABLE;
476         uint8_t DP_SEC_AIP_ENABLE;
477         uint8_t DP_SEC_ACM_ENABLE;
478         uint8_t AFMT_AUDIO_SAMPLE_SEND;
479         uint8_t AFMT_AUDIO_CLOCK_EN;
480         uint8_t TMDS_PIXEL_ENCODING;
481         uint8_t TMDS_COLOR_FORMAT;
482         uint8_t DIG_STEREOSYNC_SELECT;
483         uint8_t DIG_STEREOSYNC_GATE_EN;
484         uint8_t DP_DB_DISABLE;
485         uint8_t DP_MSA_MISC0;
486         uint8_t DP_MSA_HTOTAL;
487         uint8_t DP_MSA_VTOTAL;
488         uint8_t DP_MSA_HSTART;
489         uint8_t DP_MSA_VSTART;
490         uint8_t DP_MSA_HSYNCWIDTH;
491         uint8_t DP_MSA_HSYNCPOLARITY;
492         uint8_t DP_MSA_VSYNCWIDTH;
493         uint8_t DP_MSA_VSYNCPOLARITY;
494         uint8_t DP_MSA_HWIDTH;
495         uint8_t DP_MSA_VHEIGHT;
496         uint8_t HDMI_DB_DISABLE;
497         uint8_t DP_VID_N_MUL;
498         uint8_t DP_VID_M_DOUBLE_VALUE_EN;
499         uint8_t DIG_SOURCE_SELECT;
500 };
501
502 struct dce_stream_encoder_mask {
503         uint32_t AFMT_GENERIC_INDEX;
504         uint32_t AFMT_GENERIC0_UPDATE;
505         uint32_t AFMT_GENERIC2_UPDATE;
506         uint32_t AFMT_GENERIC_HB0;
507         uint32_t AFMT_GENERIC_HB1;
508         uint32_t AFMT_GENERIC_HB2;
509         uint32_t AFMT_GENERIC_HB3;
510         uint32_t AFMT_GENERIC_LOCK_STATUS;
511         uint32_t AFMT_GENERIC_CONFLICT;
512         uint32_t AFMT_GENERIC_CONFLICT_CLR;
513         uint32_t AFMT_GENERIC0_FRAME_UPDATE_PENDING;
514         uint32_t AFMT_GENERIC1_FRAME_UPDATE_PENDING;
515         uint32_t AFMT_GENERIC2_FRAME_UPDATE_PENDING;
516         uint32_t AFMT_GENERIC3_FRAME_UPDATE_PENDING;
517         uint32_t AFMT_GENERIC4_FRAME_UPDATE_PENDING;
518         uint32_t AFMT_GENERIC5_FRAME_UPDATE_PENDING;
519         uint32_t AFMT_GENERIC6_FRAME_UPDATE_PENDING;
520         uint32_t AFMT_GENERIC7_FRAME_UPDATE_PENDING;
521         uint32_t AFMT_GENERIC0_FRAME_UPDATE;
522         uint32_t AFMT_GENERIC1_FRAME_UPDATE;
523         uint32_t AFMT_GENERIC2_FRAME_UPDATE;
524         uint32_t AFMT_GENERIC3_FRAME_UPDATE;
525         uint32_t AFMT_GENERIC4_FRAME_UPDATE;
526         uint32_t AFMT_GENERIC5_FRAME_UPDATE;
527         uint32_t AFMT_GENERIC6_FRAME_UPDATE;
528         uint32_t AFMT_GENERIC7_FRAME_UPDATE;
529         uint32_t HDMI_GENERIC0_CONT;
530         uint32_t HDMI_GENERIC0_SEND;
531         uint32_t HDMI_GENERIC0_LINE;
532         uint32_t HDMI_GENERIC1_CONT;
533         uint32_t HDMI_GENERIC1_SEND;
534         uint32_t HDMI_GENERIC1_LINE;
535         uint32_t DP_PIXEL_ENCODING;
536         uint32_t DP_COMPONENT_DEPTH;
537         uint32_t DP_DYN_RANGE;
538         uint32_t DP_YCBCR_RANGE;
539         uint32_t HDMI_PACKET_GEN_VERSION;
540         uint32_t HDMI_KEEPOUT_MODE;
541         uint32_t HDMI_DEEP_COLOR_ENABLE;
542         uint32_t HDMI_CLOCK_CHANNEL_RATE;
543         uint32_t HDMI_DEEP_COLOR_DEPTH;
544         uint32_t HDMI_GC_CONT;
545         uint32_t HDMI_GC_SEND;
546         uint32_t HDMI_NULL_SEND;
547         uint32_t HDMI_DATA_SCRAMBLE_EN;
548         uint32_t HDMI_AUDIO_INFO_SEND;
549         uint32_t AFMT_AUDIO_INFO_UPDATE;
550         uint32_t HDMI_AUDIO_INFO_LINE;
551         uint32_t HDMI_GC_AVMUTE;
552         uint32_t DP_MSE_RATE_X;
553         uint32_t DP_MSE_RATE_Y;
554         uint32_t DP_MSE_RATE_UPDATE_PENDING;
555         uint32_t AFMT_AVI_INFO_VERSION;
556         uint32_t HDMI_AVI_INFO_SEND;
557         uint32_t HDMI_AVI_INFO_CONT;
558         uint32_t HDMI_AVI_INFO_LINE;
559         uint32_t DP_SEC_GSP0_ENABLE;
560         uint32_t DP_SEC_STREAM_ENABLE;
561         uint32_t DP_SEC_GSP1_ENABLE;
562         uint32_t DP_SEC_GSP2_ENABLE;
563         uint32_t DP_SEC_GSP3_ENABLE;
564         uint32_t DP_SEC_GSP4_ENABLE;
565         uint32_t DP_SEC_GSP5_ENABLE;
566         uint32_t DP_SEC_GSP6_ENABLE;
567         uint32_t DP_SEC_GSP7_ENABLE;
568         uint32_t DP_SEC_AVI_ENABLE;
569         uint32_t DP_SEC_MPG_ENABLE;
570         uint32_t DP_VID_STREAM_DIS_DEFER;
571         uint32_t DP_VID_STREAM_ENABLE;
572         uint32_t DP_VID_STREAM_STATUS;
573         uint32_t DP_STEER_FIFO_RESET;
574         uint32_t DP_VID_M_N_GEN_EN;
575         uint32_t DP_VID_N;
576         uint32_t DP_VID_M;
577         uint32_t DIG_START;
578         uint32_t AFMT_AUDIO_SRC_SELECT;
579         uint32_t AFMT_AUDIO_CHANNEL_ENABLE;
580         uint32_t HDMI_AUDIO_PACKETS_PER_LINE;
581         uint32_t HDMI_AUDIO_DELAY_EN;
582         uint32_t AFMT_60958_CS_UPDATE;
583         uint32_t AFMT_AUDIO_LAYOUT_OVRD;
584         uint32_t AFMT_60958_OSF_OVRD;
585         uint32_t HDMI_ACR_AUTO_SEND;
586         uint32_t HDMI_ACR_SOURCE;
587         uint32_t HDMI_ACR_AUDIO_PRIORITY;
588         uint32_t HDMI_ACR_CTS_32;
589         uint32_t HDMI_ACR_N_32;
590         uint32_t HDMI_ACR_CTS_44;
591         uint32_t HDMI_ACR_N_44;
592         uint32_t HDMI_ACR_CTS_48;
593         uint32_t HDMI_ACR_N_48;
594         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_L;
595         uint32_t AFMT_60958_CS_CLOCK_ACCURACY;
596         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_R;
597         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_2;
598         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_3;
599         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_4;
600         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_5;
601         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_6;
602         uint32_t AFMT_60958_CS_CHANNEL_NUMBER_7;
603         uint32_t DP_SEC_AUD_N;
604         uint32_t DP_SEC_TIMESTAMP_MODE;
605         uint32_t DP_SEC_ASP_ENABLE;
606         uint32_t DP_SEC_ATP_ENABLE;
607         uint32_t DP_SEC_AIP_ENABLE;
608         uint32_t DP_SEC_ACM_ENABLE;
609         uint32_t AFMT_AUDIO_SAMPLE_SEND;
610         uint32_t AFMT_AUDIO_CLOCK_EN;
611         uint32_t TMDS_PIXEL_ENCODING;
612         uint32_t DIG_STEREOSYNC_SELECT;
613         uint32_t DIG_STEREOSYNC_GATE_EN;
614         uint32_t TMDS_COLOR_FORMAT;
615         uint32_t DP_DB_DISABLE;
616         uint32_t DP_MSA_MISC0;
617         uint32_t DP_MSA_HTOTAL;
618         uint32_t DP_MSA_VTOTAL;
619         uint32_t DP_MSA_HSTART;
620         uint32_t DP_MSA_VSTART;
621         uint32_t DP_MSA_HSYNCWIDTH;
622         uint32_t DP_MSA_HSYNCPOLARITY;
623         uint32_t DP_MSA_VSYNCWIDTH;
624         uint32_t DP_MSA_VSYNCPOLARITY;
625         uint32_t DP_MSA_HWIDTH;
626         uint32_t DP_MSA_VHEIGHT;
627         uint32_t HDMI_DB_DISABLE;
628         uint32_t DP_VID_N_MUL;
629         uint32_t DP_VID_M_DOUBLE_VALUE_EN;
630         uint32_t DIG_SOURCE_SELECT;
631 };
632
633 struct dce110_stream_enc_registers {
634         uint32_t AFMT_CNTL;
635         uint32_t AFMT_AVI_INFO0;
636         uint32_t AFMT_AVI_INFO1;
637         uint32_t AFMT_AVI_INFO2;
638         uint32_t AFMT_AVI_INFO3;
639         uint32_t AFMT_GENERIC_0;
640         uint32_t AFMT_GENERIC_1;
641         uint32_t AFMT_GENERIC_2;
642         uint32_t AFMT_GENERIC_3;
643         uint32_t AFMT_GENERIC_4;
644         uint32_t AFMT_GENERIC_5;
645         uint32_t AFMT_GENERIC_6;
646         uint32_t AFMT_GENERIC_7;
647         uint32_t AFMT_GENERIC_HDR;
648         uint32_t AFMT_INFOFRAME_CONTROL0;
649         uint32_t AFMT_VBI_PACKET_CONTROL;
650         uint32_t AFMT_VBI_PACKET_CONTROL1;
651         uint32_t AFMT_AUDIO_PACKET_CONTROL;
652         uint32_t AFMT_AUDIO_PACKET_CONTROL2;
653         uint32_t AFMT_AUDIO_SRC_CONTROL;
654         uint32_t AFMT_60958_0;
655         uint32_t AFMT_60958_1;
656         uint32_t AFMT_60958_2;
657         uint32_t DIG_FE_CNTL;
658         uint32_t DP_MSE_RATE_CNTL;
659         uint32_t DP_MSE_RATE_UPDATE;
660         uint32_t DP_PIXEL_FORMAT;
661         uint32_t DP_SEC_CNTL;
662         uint32_t DP_STEER_FIFO;
663         uint32_t DP_VID_M;
664         uint32_t DP_VID_N;
665         uint32_t DP_VID_STREAM_CNTL;
666         uint32_t DP_VID_TIMING;
667         uint32_t DP_SEC_AUD_N;
668         uint32_t DP_SEC_TIMESTAMP;
669         uint32_t HDMI_CONTROL;
670         uint32_t HDMI_GC;
671         uint32_t HDMI_GENERIC_PACKET_CONTROL0;
672         uint32_t HDMI_GENERIC_PACKET_CONTROL1;
673         uint32_t HDMI_GENERIC_PACKET_CONTROL2;
674         uint32_t HDMI_GENERIC_PACKET_CONTROL3;
675         uint32_t HDMI_INFOFRAME_CONTROL0;
676         uint32_t HDMI_INFOFRAME_CONTROL1;
677         uint32_t HDMI_VBI_PACKET_CONTROL;
678         uint32_t HDMI_AUDIO_PACKET_CONTROL;
679         uint32_t HDMI_ACR_PACKET_CONTROL;
680         uint32_t HDMI_ACR_32_0;
681         uint32_t HDMI_ACR_32_1;
682         uint32_t HDMI_ACR_44_0;
683         uint32_t HDMI_ACR_44_1;
684         uint32_t HDMI_ACR_48_0;
685         uint32_t HDMI_ACR_48_1;
686         uint32_t TMDS_CNTL;
687         uint32_t DP_DB_CNTL;
688         uint32_t DP_MSA_MISC;
689         uint32_t DP_MSA_COLORIMETRY;
690         uint32_t DP_MSA_TIMING_PARAM1;
691         uint32_t DP_MSA_TIMING_PARAM2;
692         uint32_t DP_MSA_TIMING_PARAM3;
693         uint32_t DP_MSA_TIMING_PARAM4;
694         uint32_t HDMI_DB_CONTROL;
695 };
696
697 struct dce110_stream_encoder {
698         struct stream_encoder base;
699         const struct dce110_stream_enc_registers *regs;
700         const struct dce_stream_encoder_shift *se_shift;
701         const struct dce_stream_encoder_mask *se_mask;
702 };
703
704 void dce110_stream_encoder_construct(
705         struct dce110_stream_encoder *enc110,
706         struct dc_context *ctx,
707         struct dc_bios *bp,
708         enum engine_id eng_id,
709         const struct dce110_stream_enc_registers *regs,
710         const struct dce_stream_encoder_shift *se_shift,
711         const struct dce_stream_encoder_mask *se_mask);
712
713
714 void dce110_se_audio_mute_control(
715         struct stream_encoder *enc, bool mute);
716
717 void dce110_se_dp_audio_setup(
718         struct stream_encoder *enc,
719         unsigned int az_inst,
720         struct audio_info *info);
721
722 void dce110_se_dp_audio_enable(
723                 struct stream_encoder *enc);
724
725 void dce110_se_dp_audio_disable(
726                 struct stream_encoder *enc);
727
728 void dce110_se_hdmi_audio_setup(
729         struct stream_encoder *enc,
730         unsigned int az_inst,
731         struct audio_info *info,
732         struct audio_crtc_info *audio_crtc_info);
733
734 void dce110_se_hdmi_audio_disable(
735         struct stream_encoder *enc);
736
737 #endif /* __DC_STREAM_ENCODER_DCE110_H__ */