ASoC: rt722: add delay time to wait for the calibration procedure

The calibration procedure needs some time to finish.
This patch adds the delay time to ensure the calibration procedure is completed correctly.

Signed-off-by: Shuming Fan <shumingf@realtek.com>
Link: https://patch.msgid.link/20241218091307.96656-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Shuming Fan 2024-12-18 17:13:07 +08:00 committed by Mark Brown
parent e8d0ba147d
commit c9e3ebdc52
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -1468,13 +1468,18 @@ static void rt722_sdca_jack_preset(struct rt722_sdca_priv *rt722)
0x008d); 0x008d);
/* check HP calibration FSM status */ /* check HP calibration FSM status */
for (loop_check = 0; loop_check < chk_cnt; loop_check++) { for (loop_check = 0; loop_check < chk_cnt; loop_check++) {
usleep_range(10000, 11000);
ret = rt722_sdca_index_read(rt722, RT722_VENDOR_CALI, ret = rt722_sdca_index_read(rt722, RT722_VENDOR_CALI,
RT722_DAC_DC_CALI_CTL3, &calib_status); RT722_DAC_DC_CALI_CTL3, &calib_status);
if (ret < 0 || loop_check == chk_cnt) if (ret < 0)
dev_dbg(&rt722->slave->dev, "calibration failed!, ret=%d\n", ret); dev_dbg(&rt722->slave->dev, "calibration failed!, ret=%d\n", ret);
if ((calib_status & 0x0040) == 0x0) if ((calib_status & 0x0040) == 0x0)
break; break;
} }
if (loop_check == chk_cnt)
dev_dbg(&rt722->slave->dev, "%s, calibration time-out!\n", __func__);
/* Set ADC09 power entity floating control */ /* Set ADC09 power entity floating control */
rt722_sdca_index_write(rt722, RT722_VENDOR_HDA_CTL, RT722_ADC0A_08_PDE_FLOAT_CTL, rt722_sdca_index_write(rt722, RT722_VENDOR_HDA_CTL, RT722_ADC0A_08_PDE_FLOAT_CTL,
0x2a12); 0x2a12);