@@ -1982,6 +1982,15 @@ static void hdmi_disable_overflow_interrupts(struct dw_hdmi *hdmi)
HDMI_IH_MUTE_FC_STAT2);
}
+static void dw_hdmi_audio_restore(struct dw_hdmi *hdmi)
+{
+ mutex_lock(&hdmi->audio_mutex);
+
+ hdmi_enable_audio_clk(hdmi, hdmi->audio_enable);
+
+ mutex_unlock(&hdmi->audio_mutex);
+}
+
static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
{
int ret;
@@ -2045,7 +2054,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
/* HDMI Initialization Step E - Configure audio */
hdmi_clk_regenerator_update_pixel_clock(hdmi);
- hdmi_enable_audio_clk(hdmi, true);
+ dw_hdmi_audio_restore(hdmi);
}
/* not for DVI mode */