#include <linux/err.h>
 #include <linux/clk.h>
 #include <linux/hdmi.h>
+#include <linux/mutex.h>
 #include <linux/of_device.h>
 
 #include <drm/drm_of.h>
        struct i2c_adapter *ddc;
        void __iomem *regs;
 
+       struct mutex audio_mutex;
        unsigned int sample_rate;
        int ratio;
 
 
 static void hdmi_init_clk_regenerator(struct dw_hdmi *hdmi)
 {
+       mutex_lock(&hdmi->audio_mutex);
        hdmi_set_clk_regenerator(hdmi, 74250000);
+       mutex_unlock(&hdmi->audio_mutex);
 }
 
 static void hdmi_clk_regenerator_update_pixel_clock(struct dw_hdmi *hdmi)
 {
+       mutex_lock(&hdmi->audio_mutex);
        hdmi_set_clk_regenerator(hdmi, hdmi->hdmi_data.video_mode.mpixelclock);
+       mutex_unlock(&hdmi->audio_mutex);
 }
 
 /*
        hdmi->ratio = 100;
        hdmi->encoder = encoder;
 
+       mutex_init(&hdmi->audio_mutex);
+
        of_property_read_u32(np, "reg-io-width", &val);
 
        switch (val) {