ASoC: rt5665: calibration should be done before jack detection
We will set some volatile registers in jack detection function. But those volatile registers will be clear in rt5665_calibrate function because we set cache bypass and reset codec in rt5665_calibrate function. This patch add a flag to make sure that rt5665_calibrate is done before starting jack detection. Signed-off-by: Bard Liao <bardliao@realtek.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
18fe786976
Коммит
b059ca720e
|
@ -70,6 +70,7 @@ struct rt5665_priv {
|
|||
int jack_type;
|
||||
int irq_work_delay_time;
|
||||
unsigned int sar_adc_value;
|
||||
bool calibration_done;
|
||||
};
|
||||
|
||||
static const struct reg_default rt5665_reg[] = {
|
||||
|
@ -1305,6 +1306,11 @@ static void rt5665_jack_detect_handler(struct work_struct *work)
|
|||
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;
|
||||
|
@ -4695,6 +4701,7 @@ static void rt5665_calibrate(struct rt5665_priv *rt5665)
|
|||
regmap_write(rt5665->regmap, RT5665_ASRC_8, 0x0120);
|
||||
|
||||
out_unlock:
|
||||
rt5665->calibration_done = true;
|
||||
mutex_unlock(&rt5665->calibrate_mutex);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче