int jack_type;
        int irq_work_delay_time;
        unsigned int sar_adc_value;
+       bool calibration_done;
 };
 
 static const struct reg_default rt5665_reg[] = {
                usleep_range(10000, 15000);
        }
 
+       while (!rt5665->calibration_done) {
+               pr_debug("%s calibration not ready\n", __func__);
+               usleep_range(10000, 15000);
+       }
+
        mutex_lock(&rt5665->calibrate_mutex);
 
        val = snd_soc_read(rt5665->codec, RT5665_AJD1_CTRL) & 0x0010;
        regmap_write(rt5665->regmap, RT5665_ASRC_8, 0x0120);
 
 out_unlock:
+       rt5665->calibration_done = true;
        mutex_unlock(&rt5665->calibrate_mutex);
 }