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]
Message-ID: 
 <CAGwozwGvibcndLz-Qd1awQ_E3SybbZ5--aROWZYJJrHTw1iOAA@mail.gmail.com>
Date: Thu, 8 Jan 2026 11:43:12 +0200
From: Antheas Kapenekakis <lkml@...heas.dev>
To: Matthew Schwartz <matthew.schwartz@...ux.dev>
Cc: Shenghao Ding <shenghao-ding@...com>, Baojun Xu <baojun.xu@...com>,
 tiwai@...e.de,
	linux-sound@...r.kernel.org, linux-kernel@...r.kernel.org,
	stable@...r.kernel.org
Subject: Re: [PATCH v2] ALSA: hda/tas2781: Skip UEFI calibration on ASUS ROG
 Xbox Ally X

On Thu, 8 Jan 2026 at 11:38, Matthew Schwartz
<matthew.schwartz@...ux.dev> wrote:
>
> There is currently an issue with UEFI calibration data parsing for some
> TAS devices, like the ASUS ROG Xbox Ally X (RC73XA), that causes audio
> quality issues such as gaps in playback. Until the issue is root caused
> and fixed, add a quirk to skip using the UEFI calibration data and fall
> back to using the calibration data provided by the DSP firmware, which
> restores full speaker functionality on affected devices.
>
> Cc: stable@...r.kernel.org # 6.18
> Link: https://lore.kernel.org/all/160aef32646c4d5498cbfd624fd683cc@ti.com/
> Closes: https://lore.kernel.org/all/0ba100d0-9b6f-4a3b-bffa-61abe1b46cd5@linux.dev/
> Suggested-by: Baojun Xu <baojun.xu@...com>

Reviewed-by: Antheas Kapenekakis <lkml@...heas.dev>


> Signed-off-by: Matthew Schwartz <matthew.schwartz@...ux.dev>
> ---
> v1->v2: drop wrong Fixes tag, amend commit to clarify suspected root cause
> and workaround being used.
> ---
>  sound/hda/codecs/side-codecs/tas2781_hda_i2c.c | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c b/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
> index c8619995b1d7..ec3761050cab 100644
> --- a/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
> +++ b/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
> @@ -60,6 +60,7 @@ struct tas2781_hda_i2c_priv {
>         int (*save_calibration)(struct tas2781_hda *h);
>
>         int hda_chip_id;
> +       bool skip_calibration;
>  };
>
>  static int tas2781_get_i2c_res(struct acpi_resource *ares, void *data)
> @@ -489,7 +490,8 @@ static void tasdevice_dspfw_init(void *context)
>         /* If calibrated data occurs error, dsp will still works with default
>          * calibrated data inside algo.
>          */
> -       hda_priv->save_calibration(tas_hda);
> +       if (!hda_priv->skip_calibration)
> +               hda_priv->save_calibration(tas_hda);
>  }
>
>  static void tasdev_fw_ready(const struct firmware *fmw, void *context)
> @@ -546,6 +548,7 @@ static int tas2781_hda_bind(struct device *dev, struct device *master,
>         void *master_data)
>  {
>         struct tas2781_hda *tas_hda = dev_get_drvdata(dev);
> +       struct tas2781_hda_i2c_priv *hda_priv = tas_hda->hda_priv;
>         struct hda_component_parent *parent = master_data;
>         struct hda_component *comp;
>         struct hda_codec *codec;
> @@ -571,6 +574,14 @@ static int tas2781_hda_bind(struct device *dev, struct device *master,
>                 break;
>         }
>
> +       /*
> +        * Using ASUS ROG Xbox Ally X (RC73XA) UEFI calibration data
> +        * causes audio dropouts during playback, use fallback data
> +        * from DSP firmware as a workaround.
> +        */
> +       if (codec->core.subsystem_id == 0x10431384)
> +               hda_priv->skip_calibration = true;
> +
>         pm_runtime_get_sync(dev);
>
>         comp->dev = dev;
> --
> 2.52.0
>
>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ