aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/bridge/dw_hdmi.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c
index b75922d4901e..cca1c3d165e2 100644
--- a/drivers/gpu/drm/bridge/dw_hdmi.c
+++ b/drivers/gpu/drm/bridge/dw_hdmi.c
@@ -182,20 +182,20 @@ static void hdmi_mask_writeb(struct dw_hdmi *hdmi, u8 data, unsigned int reg,
182static void hdmi_set_cts_n(struct dw_hdmi *hdmi, unsigned int cts, 182static void hdmi_set_cts_n(struct dw_hdmi *hdmi, unsigned int cts,
183 unsigned int n) 183 unsigned int n)
184{ 184{
185 hdmi_writeb(hdmi, n & 0xff, HDMI_AUD_N1); 185 /* Must be set/cleared first */
186 hdmi_writeb(hdmi, (n >> 8) & 0xff, HDMI_AUD_N2); 186 hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
187 hdmi_writeb(hdmi, (n >> 16) & 0x0f, HDMI_AUD_N3);
188 187
189 /* nshift factor = 0 */ 188 /* nshift factor = 0 */
190 hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_N_SHIFT_MASK, HDMI_AUD_CTS3); 189 hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_N_SHIFT_MASK, HDMI_AUD_CTS3);
191 190
192 /* Must be set/cleared first */
193 hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
194
195 hdmi_writeb(hdmi, cts & 0xff, HDMI_AUD_CTS1);
196 hdmi_writeb(hdmi, (cts >> 8) & 0xff, HDMI_AUD_CTS2);
197 hdmi_writeb(hdmi, ((cts >> 16) & HDMI_AUD_CTS3_AUDCTS19_16_MASK) | 191 hdmi_writeb(hdmi, ((cts >> 16) & HDMI_AUD_CTS3_AUDCTS19_16_MASK) |
198 HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3); 192 HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
193 hdmi_writeb(hdmi, (cts >> 8) & 0xff, HDMI_AUD_CTS2);
194 hdmi_writeb(hdmi, cts & 0xff, HDMI_AUD_CTS1);
195
196 hdmi_writeb(hdmi, (n >> 16) & 0x0f, HDMI_AUD_N3);
197 hdmi_writeb(hdmi, (n >> 8) & 0xff, HDMI_AUD_N2);
198 hdmi_writeb(hdmi, n & 0xff, HDMI_AUD_N1);
199} 199}
200 200
201static unsigned int hdmi_compute_n(unsigned int freq, unsigned long pixel_clk, 201static unsigned int hdmi_compute_n(unsigned int freq, unsigned long pixel_clk,