lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 25 Oct 2019 09:05:12 -0500
From:   Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>
To:     Brent Lu <brent.lu@...el.com>, alsa-devel@...a-project.org
Cc:     Cezary Rojewski <cezary.rojewski@...el.com>,
        Liam Girdwood <liam.r.girdwood@...ux.intel.com>,
        Jie Yang <yang.jie@...ux.intel.com>,
        Mark Brown <broonie@...nel.org>,
        Jaroslav Kysela <perex@...ex.cz>,
        Takashi Iwai <tiwai@...e.com>,
        "Subhransu S . Prusty" <subhransu.s.prusty@...el.com>,
        Richard Fontana <rfontana@...hat.com>,
        Tzung-Bi Shih <tzungbi@...gle.com>,
        Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Naveen M <naveen.m@...el.com>, linux-kernel@...r.kernel.org
Subject: Re: [alsa-devel] [PATCH] ASoC: eve: implement set_bias_level function
 for rt5514



On 10/25/19 4:11 AM, Brent Lu wrote:
> The first DMIC capture always fail (zero sequence data from PCM port)
> after using DSP hotwording function (i.e. Google assistant).

Can you clarify where the DSP hotwording is done? Intel DSP or rt5514?

Turning on the MCLK with the BIAS info might force the Intel DSP to 
remain on, which would impact power consumption if it was supposed to 
remain off.

> This rt5514 codec requires to control mclk directly in the set_bias_level
> function. Implement this function in machine driver to control the
> ssp1_mclk clock explicitly could fix this issue.
> 
> Signed-off-by: Brent Lu <brent.lu@...el.com>
> ---
>   .../soc/intel/boards/kbl_rt5663_rt5514_max98927.c  | 50 ++++++++++++++++++++++
>   1 file changed, 50 insertions(+)
> 
> diff --git a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
> index dc09a85..b546de8 100644
> --- a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
> +++ b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
> @@ -653,6 +653,55 @@ static struct snd_soc_dai_link kabylake_dais[] = {
>   	},
>   };
>   
> +static int kabylake_set_bias_level(struct snd_soc_card *card,
> +	struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level)
> +{
> +	struct snd_soc_component *component = dapm->component;
> +	struct kbl_codec_private *priv = snd_soc_card_get_drvdata(card);
> +	int ret = 0;
> +
> +	if (!component || strcmp(component->name, RT5514_DEV_NAME))
> +		return 0;
> +
> +	if (IS_ERR(priv->mclk))
> +		return 0;
> +
> +	/*
> +	 * It's required to control mclk directly in the set_bias_level
> +	 * function for rt5514 codec or the recording function could
> +	 * break.
> +	 */
> +	switch (level) {
> +	case SND_SOC_BIAS_PREPARE:
> +		if (dapm->bias_level == SND_SOC_BIAS_ON) {
> +			dev_dbg(card->dev, "Disable mclk");
> +			clk_disable_unprepare(priv->mclk);
> +		} else {
> +			dev_dbg(card->dev, "Enable mclk");
> +			ret = clk_set_rate(priv->mclk, 24000000);
> +			if (ret) {
> +				dev_err(card->dev, "Can't set rate for mclk, err: %d\n",
> +					ret);
> +				return ret;
> +			}
> +
> +			ret = clk_prepare_enable(priv->mclk);
> +			if (ret) {
> +				dev_err(card->dev, "Can't enable mclk, err: %d\n",
> +					ret);
> +
> +				/* mclk is already enabled in FW */
> +				ret = 0;
> +			}
> +		}
> +		break;
> +	default:
> +		break;
> +	}
> +
> +	return ret;
> +}
> +
>   static int kabylake_card_late_probe(struct snd_soc_card *card)
>   {
>   	struct kbl_codec_private *ctx = snd_soc_card_get_drvdata(card);
> @@ -692,6 +741,7 @@ static struct snd_soc_card kabylake_audio_card = {
>   	.owner = THIS_MODULE,
>   	.dai_link = kabylake_dais,
>   	.num_links = ARRAY_SIZE(kabylake_dais),
> +	.set_bias_level = kabylake_set_bias_level,
>   	.controls = kabylake_controls,
>   	.num_controls = ARRAY_SIZE(kabylake_controls),
>   	.dapm_widgets = kabylake_widgets,
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ