All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Cc: broonie@kernel.org, alsa-devel@alsa-project.org,
	Vijendar.Mukunda@amd.com, Basavaraj.Hiregoudar@amd.com,
	Sunil-kumar.Dommati@amd.com, syed.sabakareem@amd.com,
	Liam Girdwood <lgirdwood@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Peter Zijlstra <peterz@infradead.org>,
	"open list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM..."
	<linux-sound@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] ASoC: amd: acp: Adjust pdm dmic gain using module parameter
Date: Mon, 28 Jul 2025 12:52:04 +0200	[thread overview]
Message-ID: <2025072814-stardom-anointer-0a62@gregkh> (raw)
In-Reply-To: <20250728094243.3824450-1-venkataprasad.potturu@amd.com>

On Mon, Jul 28, 2025 at 03:12:27PM +0530, Venkata Prasad Potturu wrote:
> Adjust pdm dimc gain value using module param.
> In case of regressions for any users that the new pdm_gain value is
> too high and for additional debugging, introduce a module parameter
> that would let them configure it.
> 
> This parameter should be removed in the future:
>  * If it's determined that the parameter is not needed, just hardcode
>    the correct value as before
>  * If users do end up using it to debug and report different values
>    we should introduce a config knob that can have policy set by ucm.
> 
> Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
> ---
>  sound/soc/amd/acp/acp-legacy-common.c | 3 ++-
>  sound/soc/amd/acp/acp-pdm.c           | 3 ++-
>  sound/soc/amd/acp/amd.h               | 6 +++++-
>  3 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/soc/amd/acp/acp-legacy-common.c b/sound/soc/amd/acp/acp-legacy-common.c
> index 57982d057c3a..dd804fb95790 100644
> --- a/sound/soc/amd/acp/acp-legacy-common.c
> +++ b/sound/soc/amd/acp/acp-legacy-common.c
> @@ -173,7 +173,8 @@ static void set_acp_pdm_clk(struct snd_pcm_substream *substream,
>  	/* Enable default ACP PDM clk */
>  	writel(PDM_CLK_FREQ_MASK, chip->base + ACP_WOV_CLK_CTRL);
>  	pdm_ctrl = readl(chip->base + ACP_WOV_MISC_CTRL);
> -	pdm_ctrl |= PDM_MISC_CTRL_MASK;
> +	pdm_ctrl &= ~ACP_WOV_GAIN_CONTROL;
> +	pdm_ctrl |= FIELD_PREP(ACP_WOV_GAIN_CONTROL, clamp(pdm_gain, 0, 3));
>  	writel(pdm_ctrl, chip->base + ACP_WOV_MISC_CTRL);
>  	set_acp_pdm_ring_buffer(substream, dai);
>  }
> diff --git a/sound/soc/amd/acp/acp-pdm.c b/sound/soc/amd/acp/acp-pdm.c
> index 1bfc34c2aa53..ffb622a7a69a 100644
> --- a/sound/soc/amd/acp/acp-pdm.c
> +++ b/sound/soc/amd/acp/acp-pdm.c
> @@ -38,7 +38,8 @@ static int acp_dmic_prepare(struct snd_pcm_substream *substream,
>  	/* Enable default DMIC clk */
>  	writel(PDM_CLK_FREQ_MASK, chip->base + ACP_WOV_CLK_CTRL);
>  	dmic_ctrl = readl(chip->base + ACP_WOV_MISC_CTRL);
> -	dmic_ctrl |= PDM_MISC_CTRL_MASK;
> +	dmic_ctrl &= ~ACP_WOV_GAIN_CONTROL;
> +	dmic_ctrl |= FIELD_PREP(ACP_WOV_GAIN_CONTROL, clamp(pdm_gain, 0, 3));
>  	writel(dmic_ctrl, chip->base + ACP_WOV_MISC_CTRL);
>  
>  	period_bytes = frames_to_bytes(substream->runtime,
> diff --git a/sound/soc/amd/acp/amd.h b/sound/soc/amd/acp/amd.h
> index cb8d97122f95..f2567e06ccd3 100644
> --- a/sound/soc/amd/acp/amd.h
> +++ b/sound/soc/amd/acp/amd.h
> @@ -130,7 +130,7 @@
>  #define PDM_DMA_INTR_MASK       0x10000
>  #define PDM_DEC_64              0x2
>  #define PDM_CLK_FREQ_MASK       0x07
> -#define PDM_MISC_CTRL_MASK      0x10
> +#define ACP_WOV_GAIN_CONTROL	GENMASK(4, 3)
>  #define PDM_ENABLE              0x01
>  #define PDM_DISABLE             0x00
>  #define DMA_EN_MASK             0x02
> @@ -138,6 +138,10 @@
>  #define PDM_TIMEOUT             1000
>  #define ACP_REGION2_OFFSET      0x02000000
>  
> +static int pdm_gain = 3;
> +module_param(pdm_gain, int, 0644);
> +MODULE_PARM_DESC(pdm_gain, "Gain control (0-3)");

This is not the 1990's, please do not add new module parameters, it will
not work for modern systems and is a horrible thing to attempt to
support over time :(

Please do this properly, with a per-device setting.

thanks,

greg k-h

  reply	other threads:[~2025-07-28 10:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-28  9:42 [PATCH] ASoC: amd: acp: Adjust pdm dmic gain using module parameter Venkata Prasad Potturu
2025-07-28 10:52 ` Greg KH [this message]
2025-07-29  6:04   ` Mario Limonciello
2025-07-29 10:36     ` Mark Brown
2025-07-28 10:52 ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2025072814-stardom-anointer-0a62@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=Basavaraj.Hiregoudar@amd.com \
    --cc=Sunil-kumar.Dommati@amd.com \
    --cc=Vijendar.Mukunda@amd.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --cc=perex@perex.cz \
    --cc=peterz@infradead.org \
    --cc=syed.sabakareem@amd.com \
    --cc=tiwai@suse.com \
    --cc=venkataprasad.potturu@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.