[PATCH] ASoC: rt1015p: delay 300ms after SDB pulling high for calibration
Tzung-Bi Shih
tzungbi at google.com
Wed Dec 9 04:37:42 CET 2020
RT1015p needs 300ms delay after SDB pulling high for internal
calibration during the power on sequence.
Delays 300ms right before data sends out to avoid data truncated.
Signed-off-by: Tzung-Bi Shih <tzungbi at google.com>
---
sound/soc/codecs/rt1015p.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/codecs/rt1015p.c b/sound/soc/codecs/rt1015p.c
index 59bb60682270..515357474eba 100644
--- a/sound/soc/codecs/rt1015p.c
+++ b/sound/soc/codecs/rt1015p.c
@@ -4,6 +4,7 @@
//
// Copyright 2020 The Linux Foundation. All rights reserved.
+#include <linux/delay.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/gpio.h>
@@ -20,6 +21,7 @@
struct rt1015p_priv {
struct gpio_desc *sdb;
int sdb_switch;
+ bool calib_done;
};
static int rt1015p_daiops_trigger(struct snd_pcm_substream *substream,
@@ -39,6 +41,11 @@ static int rt1015p_daiops_trigger(struct snd_pcm_substream *substream,
if (rt1015p->sdb_switch) {
gpiod_set_value(rt1015p->sdb, 1);
dev_dbg(component->dev, "set sdb to 1");
+
+ if (!rt1015p->calib_done) {
+ mdelay(300);
+ rt1015p->calib_done = true;
+ }
}
break;
case SNDRV_PCM_TRIGGER_STOP:
--
2.29.2.576.ga3fc446d84-goog
More information about the Alsa-devel
mailing list