History

ASoC: tas2764: Add post reset delays

Make sure there is at least 1 ms delay from reset to first command as is specified in the datasheet. This is a fix similar to commit 307f31452078 ("ASoC: tas2770: Insert post reset delay").

Martin Povišer committed 4 years ago

Commit cd10bb81 parent 94c65df1 file · +8 −2Browse files

Unified · Split

sound/soc/codecs/tas2764.c+8−2
@@ -42,10 +42,12 @@ static void tas2764_reset(struct tas2764_priv *tas2764) · 41 unmodified lines
42 gpiod_set_value_cansleep(tas2764->reset_gpio, 0);42 gpiod_set_value_cansleep(tas2764->reset_gpio, 0);
43 msleep(20);43 msleep(20);
44 gpiod_set_value_cansleep(tas2764->reset_gpio, 1);44 gpiod_set_value_cansleep(tas2764->reset_gpio, 1);
45 usleep_range(1000, 2000);
45 }46 }
46 47
47 snd_soc_component_write(tas2764->component, TAS2764_SW_RST,48 snd_soc_component_write(tas2764->component, TAS2764_SW_RST,
48 TAS2764_RST);49 TAS2764_RST);
50 usleep_range(1000, 2000);
49}51}
50 52
51static int tas2764_set_bias_level(struct snd_soc_component *component,53static int tas2764_set_bias_level(struct snd_soc_component *component,
@@ -107,8 +109,10 @@ static int tas2764_codec_resume(struct snd_soc_component *component) · 55 unmodified lines
107 struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component);109 struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component);
108 int ret;110 int ret;
109 111
110 if (tas2764->sdz_gpio)112 if (tas2764->sdz_gpio) {
111 gpiod_set_value_cansleep(tas2764->sdz_gpio, 1);113 gpiod_set_value_cansleep(tas2764->sdz_gpio, 1);
114 usleep_range(1000, 2000);
115 }
112 116
113 ret = snd_soc_component_update_bits(component, TAS2764_PWR_CTRL,117 ret = snd_soc_component_update_bits(component, TAS2764_PWR_CTRL,
114 TAS2764_PWR_CTRL_MASK,118 TAS2764_PWR_CTRL_MASK,
@@ -501,8 +505,10 @@ static int tas2764_codec_probe(struct snd_soc_component *component) · 386 unmodified lines
501 505
502 tas2764->component = component;506 tas2764->component = component;
503 507
504 if (tas2764->sdz_gpio)508 if (tas2764->sdz_gpio) {
505 gpiod_set_value_cansleep(tas2764->sdz_gpio, 1);509 gpiod_set_value_cansleep(tas2764->sdz_gpio, 1);
510 usleep_range(1000, 2000);
511 }
506 512
507 tas2764_reset(tas2764);513 tas2764_reset(tas2764);
508 514