* [PATCH] ASoC: rt722: reset codec to fix abnormal sound
@ 2026-07-28 9:01 shumingf
2026-07-29 22:25 ` Mark Brown
0 siblings, 1 reply; 3+ messages in thread
From: shumingf @ 2026-07-28 9:01 UTC (permalink / raw)
To: broonie, lgirdwood
Cc: linux-sound, lars, flove, oder_chiou, jack.yu, derek.fang,
Shuming Fan
From: Shuming Fan <shumingf@realtek.com>
The audio output may become abnormal after a warm reboot from Windows.
Reset the codec once during hardware initialization to restore it to a known
state and prevent the issue.
BugLink: https://github.com/thesofproject/linux/issues/5845
Signed-off-by: Shuming Fan <shumingf@realtek.com>
---
sound/soc/codecs/rt722-sdca-sdw.c | 4 ++++
sound/soc/codecs/rt722-sdca.c | 14 ++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/sound/soc/codecs/rt722-sdca-sdw.c b/sound/soc/codecs/rt722-sdca-sdw.c
index 05e8e23f1f43..5bc9aed58d14 100644
--- a/sound/soc/codecs/rt722-sdca-sdw.c
+++ b/sound/soc/codecs/rt722-sdca-sdw.c
@@ -114,6 +114,7 @@ static int rt722_sdca_mbq_size(struct device *dev, unsigned int reg)
case 0x2000090 ... 0x2000094:
case 0x20000b1:
case 0x20000b4:
+ case 0x3010000:
case 0x3110000:
case 0x5300000 ... 0x5300300:
case 0x5400002:
@@ -197,15 +198,18 @@ static bool rt722_sdca_volatile_register(struct device *dev, unsigned int reg)
case 0x2000007:
case 0x200000d:
case 0x2000019:
+ case 0x200001a:
case 0x2000020:
case 0x2000030:
case 0x2000046:
case 0x2000067:
case 0x2000084:
case 0x2000086:
+ case 0x3010000:
case 0x3110000:
case 0x5800003:
case 0x5810000:
+ case 0x6100008:
case 0x44011000 ... 0x440115ff:
case 0x44012000:
case 0x44012021:
diff --git a/sound/soc/codecs/rt722-sdca.c b/sound/soc/codecs/rt722-sdca.c
index decf9407ab6d..a26253864d48 100644
--- a/sound/soc/codecs/rt722-sdca.c
+++ b/sound/soc/codecs/rt722-sdca.c
@@ -1851,6 +1851,17 @@ static void rt722_sdca_jack_preset(struct rt722_sdca_priv *rt722)
}
}
+static void rt722_sdca_reset(struct rt722_sdca_priv *rt722)
+{
+ rt722_sdca_index_update_bits(rt722, RT722_VENDOR_REG,
+ RT722_LDO1_CTL, RT722_HIDDEN_REG_SW_RESET,
+ RT722_HIDDEN_REG_SW_RESET);
+ rt722_sdca_index_update_bits(rt722, RT722_VENDOR_HDA_CTL,
+ RT722_HDA_LEGACY_RESET_CTL, 0x1, 0x1);
+ if (rt722->hw_vid == RT722_VA)
+ rt722_sdca_index_write(rt722, RT722_VENDOR_REG, RT722_LDO1_CTL, 0xb091);
+}
+
int rt722_sdca_io_init(struct device *dev, struct sdw_slave *slave)
{
struct rt722_sdca_priv *rt722 = dev_get_drvdata(dev);
@@ -1888,6 +1899,9 @@ int rt722_sdca_io_init(struct device *dev, struct sdw_slave *slave)
rt722->hw_vid = (val & 0x0f00) >> 8;
dev_dbg(&slave->dev, "%s hw_vid=0x%x\n", __func__, rt722->hw_vid);
+ if (!rt722->first_hw_init)
+ rt722_sdca_reset(rt722);
+
rt722_sdca_dmic_preset(rt722);
rt722_sdca_amp_preset(rt722);
rt722_sdca_jack_preset(rt722);
--
2.54.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] ASoC: rt722: reset codec to fix abnormal sound
2026-07-28 9:01 [PATCH] ASoC: rt722: reset codec to fix abnormal sound shumingf
@ 2026-07-29 22:25 ` Mark Brown
2026-07-30 2:47 ` Shuming [范書銘]
0 siblings, 1 reply; 3+ messages in thread
From: Mark Brown @ 2026-07-29 22:25 UTC (permalink / raw)
To: shumingf
Cc: lgirdwood, linux-sound, lars, flove, oder_chiou, jack.yu,
derek.fang
[-- Attachment #1: Type: text/plain, Size: 793 bytes --]
On Tue, Jul 28, 2026 at 05:01:11PM +0800, shumingf@realtek.com wrote:
> The audio output may become abnormal after a warm reboot from Windows.
> Reset the codec once during hardware initialization to restore it to a known
> state and prevent the issue.
> @@ -1888,6 +1899,9 @@ int rt722_sdca_io_init(struct device *dev, struct sdw_slave *slave)
> rt722->hw_vid = (val & 0x0f00) >> 8;
> dev_dbg(&slave->dev, "%s hw_vid=0x%x\n", __func__, rt722->hw_vid);
>
> + if (!rt722->first_hw_init)
> + rt722_sdca_reset(rt722);
> +
> rt722_sdca_dmic_preset(rt722);
> rt722_sdca_amp_preset(rt722);
> rt722_sdca_jack_preset(rt722);
Slirhgly separate issue but you probably need a _jack_init() after the
reset - your other devices do that, I think there's some races there.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] ASoC: rt722: reset codec to fix abnormal sound
2026-07-29 22:25 ` Mark Brown
@ 2026-07-30 2:47 ` Shuming [范書銘]
0 siblings, 0 replies; 3+ messages in thread
From: Shuming [范書銘] @ 2026-07-30 2:47 UTC (permalink / raw)
To: Mark Brown
Cc: lgirdwood@gmail.com, linux-sound@vger.kernel.org, lars@metafoo.de,
Flove(HsinFu), Oder Chiou, Jack Yu,
Derek [方德義]
> > The audio output may become abnormal after a warm reboot from
> Windows.
> > Reset the codec once during hardware initialization to restore it to a
> > known state and prevent the issue.
>
> > @@ -1888,6 +1899,9 @@ int rt722_sdca_io_init(struct device *dev, struct
> sdw_slave *slave)
> > rt722->hw_vid = (val & 0x0f00) >> 8;
> > dev_dbg(&slave->dev, "%s hw_vid=0x%x\n", __func__, rt722->hw_vid);
> >
> > + if (!rt722->first_hw_init)
> > + rt722_sdca_reset(rt722);
> > +
> > rt722_sdca_dmic_preset(rt722);
> > rt722_sdca_amp_preset(rt722);
> > rt722_sdca_jack_preset(rt722);
>
> Slirhgly separate issue but you probably need a _jack_init() after the reset -
> your other devices do that, I think there's some races there.
Understood. I'll add _jack_init() after the reset to avoid its settings being reset by the reset.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-30 2:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 9:01 [PATCH] ASoC: rt722: reset codec to fix abnormal sound shumingf
2026-07-29 22:25 ` Mark Brown
2026-07-30 2:47 ` Shuming [范書銘]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox