From: Mario Limonciello <mario.limonciello@amd.com>
To: Greg KH <gregkh@linuxfoundation.org>,
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>,
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: Tue, 29 Jul 2025 11:34:59 +0530 [thread overview]
Message-ID: <7d8c0bbf-2911-4e18-8287-e7c72fab396c@amd.com> (raw)
In-Reply-To: <2025072814-stardom-anointer-0a62@gregkh>
On 7/28/2025 4:22 PM, Greg KH wrote:
> 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
As the main purpose for this parameter is for being able to tune whether
the property is correct, how about adding a debugfs file instead?
AFAICT it should just be a single register write, so debugfs to read
current value and write the debugging value seems pretty straightforward.
next prev parent reply other threads:[~2025-07-29 6:06 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
2025-07-29 6:04 ` Mario Limonciello [this message]
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=7d8c0bbf-2911-4e18-8287-e7c72fab396c@amd.com \
--to=mario.limonciello@amd.com \
--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=gregkh@linuxfoundation.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--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.