2019-06-25 07:54:53

by Oleksandr Suvorov

[permalink] [raw]
Subject: [PATCH v2 3/6] ASoC: sgtl5000: Fix of unmute outputs on probe

To enable "zero cross detect" for ADC/HP, change
HP_ZCD_EN/ADC_ZCD_EN bits only instead of writing the whole
CHIP_ANA_CTRL register.

Signed-off-by: Oleksandr Suvorov <[email protected]>
---

sound/soc/codecs/sgtl5000.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
index bb58c997c6914..e813a37910af4 100644
--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -1289,6 +1289,7 @@ static int sgtl5000_probe(struct snd_soc_component *component)
int ret;
u16 reg;
struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
+ unsigned int zcd_mask = SGTL5000_HP_ZCD_EN | SGTL5000_ADC_ZCD_EN;

/* power up sgtl5000 */
ret = sgtl5000_set_power_regs(component);
@@ -1316,9 +1317,8 @@ static int sgtl5000_probe(struct snd_soc_component *component)
0x1f);
snd_soc_component_write(component, SGTL5000_CHIP_PAD_STRENGTH, reg);

- snd_soc_component_write(component, SGTL5000_CHIP_ANA_CTRL,
- SGTL5000_HP_ZCD_EN |
- SGTL5000_ADC_ZCD_EN);
+ snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_CTRL,
+ zcd_mask, zcd_mask);

snd_soc_component_update_bits(component, SGTL5000_CHIP_MIC_CTRL,
SGTL5000_BIAS_R_MASK,
--
2.20.1


2019-07-11 10:36:44

by Igor Opaniuk

[permalink] [raw]
Subject: Re: [PATCH v2 3/6] ASoC: sgtl5000: Fix of unmute outputs on probe

On Tue, Jun 25, 2019 at 10:54 AM Oleksandr Suvorov
<[email protected]> wrote:
>
> To enable "zero cross detect" for ADC/HP, change
> HP_ZCD_EN/ADC_ZCD_EN bits only instead of writing the whole
> CHIP_ANA_CTRL register.
>
> Signed-off-by: Oleksandr Suvorov <[email protected]>
> ---
>
> sound/soc/codecs/sgtl5000.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
> index bb58c997c6914..e813a37910af4 100644
> --- a/sound/soc/codecs/sgtl5000.c
> +++ b/sound/soc/codecs/sgtl5000.c
> @@ -1289,6 +1289,7 @@ static int sgtl5000_probe(struct snd_soc_component *component)
> int ret;
> u16 reg;
> struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
> + unsigned int zcd_mask = SGTL5000_HP_ZCD_EN | SGTL5000_ADC_ZCD_EN;
>
> /* power up sgtl5000 */
> ret = sgtl5000_set_power_regs(component);
> @@ -1316,9 +1317,8 @@ static int sgtl5000_probe(struct snd_soc_component *component)
> 0x1f);
> snd_soc_component_write(component, SGTL5000_CHIP_PAD_STRENGTH, reg);
>
> - snd_soc_component_write(component, SGTL5000_CHIP_ANA_CTRL,
> - SGTL5000_HP_ZCD_EN |
> - SGTL5000_ADC_ZCD_EN);
> + snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_CTRL,
> + zcd_mask, zcd_mask);
>
> snd_soc_component_update_bits(component, SGTL5000_CHIP_MIC_CTRL,
> SGTL5000_BIAS_R_MASK,
> --
> 2.20.1
>

Reviewed-by: Igor Opaniuk <[email protected]>

--
Best regards - Freundliche GrĂ¼sse - Meilleures salutations

Senior Development Engineer,
Igor Opaniuk

Toradex AG
Altsagenstrasse 5 | 6048 Horw/Luzern | Switzerland | T: +41 41 500 48
00 (main line)