[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87jz3j1ug9.wl-tiwai@suse.de>
Date: Mon, 04 Aug 2025 08:17:58 +0200
From: Takashi Iwai <tiwai@...e.de>
To: wangdich9700@....com
Cc: lgirdwood@...il.com,
broonie@...nel.org,
perex@...ex.cz,
tiwai@...e.com,
linux-kernel@...r.kernel.org,
alsa-devel@...a-project.org,
linux-arm-kernel@...ts.infradead.org,
wangdicheng <wangdicheng@...inos.cn>
Subject: Re: [PATCH 1/2] ALSA: hda/realtek: Accelerate the front MIC charging and discharging of the 897 codec
On Mon, 04 Aug 2025 05:05:17 +0200,
wangdich9700@....com wrote:
>
> From: wangdicheng <wangdicheng@...inos.cn>
>
> The front MIC capacitance of the Inspur board is too large, resulting in a longer charging and discharging time required,
> which in turn prevents recording for 5 seconds before startup.
> Therefore, software is used to increase the delay by 2 seconds to avoid this issue.
First off, the HD-audio code was replaced in the latest Linus tree to
sound/hda/* directories, so please adapt the patches accordingly.
About the code change:
- The 2.5 seconds wait is way too long and inappropriate to be put in
the resume callback. It has to be fixed differently.
- Does it apply really to all devices with 0x10ec1304? It's Realtek's
vendor id, so this can match to many devices.
- Last but not least, it's not nice to have a code that depends on the
certain vendor id there. Again, please implement in a different way
so that it can be handled in more device-specific code rather than
the common function.
thanks,
Takashi
>
> Signed-off-by: wangdicheng <wangdicheng@...inos.cn>
> ---
> sound/pci/hda/patch_realtek.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 877137cb09ac..88675eae9447 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -1001,6 +1001,14 @@ static int alc_resume(struct hda_codec *codec)
> if (!spec->no_depop_delay)
> msleep(150); /* to avoid pop noise */
> codec->patch_ops.init(codec);
> +
> + if (codec->core.subsystem_id == 0x10ec1304) {
> + snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x04);
> + msleep(50);
> + snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x44);
> + msleep(2000);
> + snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80);
> + }
> snd_hda_regmap_sync(codec);
> hda_call_check_power_status(codec, 0x01);
> return 0;
> --
> 2.25.1
>
Powered by blists - more mailing lists