summaryrefslogtreecommitdiff
path: root/sound/hda
AgeCommit message (Collapse)Author
10 hoursMerge branch 'for-linus' of ↵Mark Brown
https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
13 hoursALSA: hda: Reject codec reset on ASoC (ext_ops) busesPeter Ujfalusi
Writing to the reconfig or clear sysfs nodes of a codec handled by ASoC (SOF via hdac_hda, AVS via codecs/hda) hangs the writer. snd_hda_codec_reset() sets card->shutdown and calls device_release_driver(). With ext_ops the driver unbind unregisters the ASoC component, which unbinds and frees the whole ASoC card: - snd_card_disconnect() returns early as card->shutdown is already set, so the card's child devices are not removed and snd_card_free() waits for the card release forever. - Even without that, freeing the card removes the codec's hwdep device, which owns the sysfs node the reset was issued from, deadlocking in kernfs while waiting for the active write to finish. The legacy HDA driver keeps the card across a driver rebind, ASoC does not, so the reset cannot be supported there. Return -EOPNOTSUPP and skip the misleading "codec is being used" messages in the callers. Fixes: 6bae5ea94989 ("ASoC: hdac_hda: add asoc extension for legacy HDA codec drivers") Cc: stable@vger.kernel.org Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222182 Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://patch.msgid.link/20261027072835.4796-1-peter.ujfalusi@linux.intel.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
16 hoursALSA: hda/realtek: Extend quirk for HP Pavilion All-in-One 27-ca1xxxErnst Persson
A quirk was added in commit 704de5697008 ("ALSA: hda/realtek: Add quirk for HP Pavilion All-in-One 27-ca1xxx") Also enable the quirk for the actual 89e9 model named there. Link: https://bugzilla.kernel.org/show_bug.cgi?id=216139 Signed-off-by: Ernst Persson <ernstp@gmail.com> Link: https://patch.msgid.link/20261027-realtek-alc274-v1-1-c0eae15d0c55@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
3 daysMerge tag 'sound-7.4-rc1' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound updates from Takashi Iwai: "The AI flood continues, which brought us a fairly busy development cycle again with changes spread across the subsystem, ranging from (lots of) core hardening to new platforms and codecs. Here are some highlights. ALSA core: - PCM: race fixes around channel-map controls, draining/unlink, drop sync-stop handling, and DMA buffer delay sync - Compress-offload: state and geometry validations, buffer leak fix, and stream/card lifetime management - Jack: module pinning during debugfs access, control removal race fix, and early injection exposure - Timer & sequencer: module pinning for user timers, RCU grace period wait on port deletion, UMP bounds fixes - Mark OSS sequencer emulation as deprecated - RawMIDI: proper disconnect handling and input work drain cleanup - Control: fixes for vmaster racy setups and control callback serialization, UAF fix on card disconnect ASoC core: - Continued framework refactoring, deployment of auto_selectable_formats across codecs and platform DAIs - Generic card cleanup: free jack GPIOs on card remove for simple-card and audio-graph-card variants - SDCA improvements: SimpleJack function type support, library helpers, and non-ACPI build support - Conversion of deprecated DMA API calls ASoC SOF: - Support for compressed audio playback on SOF IPC4 with Intel TGL+ - AMD ACP 7.B / 7.F SoundWire and PDM controller support, ASP carveout firmware loading - Function topology support for Intel I2S machines ASoC platforms & codecs: - Qualcomm: New QAIF driver for Shikra platform, WCD9378 SDCA codec, Nord Ride/RRD and Motorola Edge 30 boards, LPASS macro cache converted to maple tree - New codec drivers: ESS ES9039Q2M, Nuvoton NAU83G60 amplifier, Senary SN624x SoundWire SDCA codec - MediaTek / Airoha: New Airoha AN7581 AFE and WM8960 machine drivers, extensive clock and error-handling cleanups across MediaTek SoCs - NVIDIA Tegra: WM8994 machine driver and CS35L45 MDSYNC support - Realtek: RT766/RT767, RT721_U, RT718 variants, RT712 GPIO LED control - Cirrus Logic: CS35L45 MDSYNC support, CS35L56 regmap default tests - TI: TAS2573 DSP support in TAS2781, TAS2783 SoundWire fixes - Everest Semi: ES8326 standby / HPF controls, ES8389 / ES8375 resume fixes - Removal of obsolete ST-Ericsson Ux500 MOP500 machine driver HD-audio: - ACPI controller runtime PM suspend/resume support - Controller shutdown and unbind race fixes for unsol events and jack polling - HDMI: High Bit Rate (HBR) audio capability enabled, ELD proc and converter bounds checks - AW88399 side codec SSID-specific firmware naming and Lenovo Legion R9000P enablement - Realtek / Conexant / Cirrus / TI quirks for numerous laptops (Lenovo, ASUS, HP, Acer, HONOR, Minisforum, MSI, etc.) - Creative CA0132 Sound BlasterX AE-5 external RGB LED strip support USB-audio: - Dedicated mixer driver for Audient EVO4 - Native Instruments Kore controller LCD support and keymap fix - Pioneer DJ DDJ-SZ and Roland (OCTA-CAPTURE / QUAD-CAPTURE multirate, TD-11) support - UAC2/3 mixer unit matrix evaluation and bounds checking - Hardening for LINE6 and caiaq drivers against malformed packets and races - Device-specific quirks for PreSonus, TASCAM, Logitech, Mayflower, MOONDROP, Yamaha, etc. Misc: - Auto-cleanup conversion for snd_card_free() and devres migration across dozens of legacy PCI, ISA, and Sparc drivers - ALSA loopback (aloop) timer lifecycle fixes and new aloop selftest - pcmtest driver fixes and kselftest updates" * tag 'sound-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (924 commits) ALSA: hda/realtek: Add mute and mic-mute LEDs for HP ENVY 16 (103c:8be5) selftests: ALSA: pcmtest: Compare all captured bytes in ni_capture ALSA: usb-audio: Use strscpy() in append_ctl_name() ALSA: caiaq: Use strscpy() in snd_usb_caiaq_input_init() ALSA: hiface: Use scnprintf() in hiface_chip_create() selftests/alsa: Check the aloop PCM Slave controls for a matching playback ALSA: aloop: Update the PCM Slave controls for a matching playback selftests: ALSA: pcmtest: Make room for the longest fill pattern selftests: ALSA: pcmtest: Check the frame count of each transfer ALSA: hda/realtek: Fix speakers on COLORFUL L1 Plus ALSA: hda/realtek: enable AW88399 on Lenovo Legion R9000P AFR10 ALSA: line6: Handle period elapsed calls outside the locks ALSA: emux: Stop voices before freeing zones in all cases ALSA: emux: Fix UAF of soundfont zones at note-on ALSA: mtpav: restore negation dropped in guard() conversion ALSA: compress: reject restarting an ACTIVE task via origin_seqno ALSA: compress: add missing OPEN-state gate to SET_METADATA ALSA: compress: reject buffer geometry change on gapless next_track ALSA: compress: fix buffer leak on failed SET_PARAMS ALSA: hda/realtek: Enable jack detection on Minisforum AI X1 ...
4 daysALSA: hda/realtek: Add quirk for ASUS ExpertBook B3402FVAShahab Ghodsi
The ASUS ExpertBook B3402FVA (PCI SSID 1043:1e03) uses an ALC256 codec. Headphone output is extremely quiet and distorted, with only the loudest parts audible. The BIOS does not enable the headphone depop circuit. Reuse ALC256_FIXUP_ASUS_HPE, which sets COEF 0x0f to 0x7778 to enable the headphone depop circuit. This fixup is already used for the ASUS TM420 and B1400CEPE. The COEF write was verified manually with hda-verb on this machine; headphones become loud and clear. The chained pin change on 0x19 was also applied manually; the headset microphone worked before and after, and audio playback was unaffected. Closes: https://github.com/thesofproject/linux/issues/5996 Signed-off-by: Shahab Ghodsi <shahab16774@gmail.com> Link: https://patch.msgid.link/20261022090149.304576-1-shahab16774@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
4 daysALSA: hda: Force MSI for Hygon H34M51A boardrenpanpan
The Hygon HDA controller (PCI 1d94:14a9) has AZX_DCAPS_NO_MSI set in the PCI ID table to use legacy INTx, as MSI may lose interrupts under heavy load on some Hygon platforms (commit 41212ff3e4ed ("ALSA: hda: Add support for Hygon family 18h model 5h HD-Audio")). However, on the Kunlun H34M51A board (PCI subsystem 1d94:c950) the INTx interrupt line is not wired. /proc/interrupts shows zero count for the HDA IRQ from boot, so the RIRB interrupt handler is never called. Without RIRB processing, azx_rirb_get_response() times out after 1 s, switches to polling mode, and the resulting slow codec communication delays card registration by ~20 s and breaks unsolicited jack-detection event delivery. Force MSI on for subsystem 1d94:c950 by adding it to msi_deny_list with value 1. The list is consulted in check_msi() before the AZX_DCAPS_NO_MSI check, so H34M51A gets MSI enabled while other Hygon platforms retain INTx. Signed-off-by: renpanpan <renpanpan@kylinos.cn> Link: https://patch.msgid.link/20261022085438.1315679-1-rppxj178543@163.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
4 daysALSA: hda/realtek: Add quirk for HP Pavilion AiO 24 (ALC225)Zhang Heng
The HP Pavilion AIO 24-xa0xxx (codec SSID 103c:84ee) uses the ALC225 codec. The internal speakers produce no sound without a machine-specific fixup. Add a HDA_CODEC_QUIRK for this codec SSID using ALC225_FIXUP_HP_AIO_SPK so the speaker output works correctly. Link: https://bugzilla.kernel.org/show_bug.cgi?id=221616 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261022031113.163632-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
4 daysALSA: hda/realtek: Fix internal mic on ASUS VivoBook X509JBZhang Heng
On the ASUS VivoBook X509JB (SSID 1043:1ec1) with ALC256, the BIOS marks pin 0x13 as not connected and pin 0x1b as the internal mic, but the generic parser still defaults Capture Source to 0x13, which records only white noise. Manually selecting 0x1b works, but PipeWire/WirePlumber resets it on every stream open. Reuse ALC2XX_FIXUP_HEADSET_MIC for this SSID. It limits capture sources to 0x19 and 0x1b, removing the bogus 0x13 source so the internal mic records normally without manual mixer changes. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222152 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261022025950.150390-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
4 daysALSA: hda/realtek: Add mute LEDs quirk for HP Pavilion Plus 14-EW1XXX.Volodymyr Lurin
The HP Pavilion Plus 14-ew1xxx with subsystem ID 103c:0x8c31 needs the ALC245_FIXUP_HP_MUTE_LED_V2_COEFBIT bit LED quirk to control speaker mute LED and ALC245_FIXUP_HP_GPIO_LED quirk to control mic mute LED. Define new ALC245_FIXUP_HP_PAVILION_14_EW1XXX_LEDS fixup that combine existing COEF(ALC245_FIXUP_HP_MUTE_LED_V2_COEFBIT) and GPIO (ALC245_FIXUP_HP_GPIO_LED) fixups. Add the missing quirk entry. Tested on the affected hardware: both the mute and mic-mute key LEDs respond correctly to the keyboard hotkeys after this change. Based on tests, to control mute LED, it is sufficient to flip coef bit #3. While ALC245_FIXUP_HP_X360_MUTE_LEDS works too (combines ALC245_FIXUP_HP_MUTE_LED_COEFBIT and ALC245_FIXUP_HP_GPIO_LED), it also flip coef bit #2, and side effect of this "flip" is not clear. So separate chained quirk introduced to be of safe side. Signed-off-by: Volodymyr Lurin <volodymyr.iurin@gmail.com> Link: https://patch.msgid.link/20261022023839.504841-1-volodymyr.iurin@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
6 daysALSA: hda/realtek: Add mute and mic-mute LEDs for HP ENVY 16 (103c:8be5)Ajanesh Lal
The HP ENVY Laptop 16-h1xxx (PCI SSID 103c:8be5) uses an ALC245 codec with CS35L41 I2C speaker amplifiers. No LED fixup is applied for this subsystem ID, so the speaker mute LED and the microphone mute LED are never driven and do not follow their keys. Add a fixup that calls the existing ALC245 mute LED COEF helper and the GPIO mic-mute LED helper directly, then chains to the CS35L41 I2C amplifier setup so the speakers keep working. Use it for 103c:8be5. Tested on an HP ENVY Laptop 16-h1xxx running kernel 7.2.11: the hda::mute and hda::micmute LEDs appear and follow their keys, and the speaker amplifiers still bind (CS35L41 Bound in dmesg). The mic LED GPIO pin and polarity are not verified on other hardware. Fixes: aa8e3ef4fe53 ("ALSA: hda/realtek: Add quirks for various HP ENVY models") Assisted-by: Claude:claude-haiku-5-5 Signed-off-by: Ajanesh Lal <ajaneshlal3@gmail.com> Link: https://patch.msgid.link/20261021142453.177174-1-ajaneshlal3@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 daysALSA: hda/realtek: Fix speakers on COLORFUL L1 PlusNazmi Maizan
The COLORFUL L1 Plus (Rimbook L1 Plus) with an ALC233 codec has silent built-in speakers. Its firmware marks pin 0x1b as unused (0x411111f0), although it is connected to the speakers. Retasking pin 0x1b to an internal speaker (0x90170110) restores audible output. I tested this pin-only correction with the early HDA firmware patch loader on Fedora and confirmed that it still worked after reboot. Add the subsystem ID 2782:a248 to the quirk table and reuse ALC233_FIXUP_MEDION_MTL_SPK, which applies the same pin correction. Link: https://bugzilla.kernel.org/show_bug.cgi?id=222155 Signed-off-by: Nazmi Maizan <nazmi.maizan1@gmail.com> Link: https://patch.msgid.link/20261020162323.23202-1-nazmi.maizan1@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
7 daysALSA: hda/realtek: enable AW88399 on Lenovo Legion R9000P AFR10Marco Giunta
Add codec SSID entries for the Lenovo Legion R9000P AFR10 (83F6), which uses the same ALC287 + AW88399 smart amplifier configuration as the existing supported Legion models. DSDT inspection confirms identical AWDZ8399 ACPI device layout with reversed I2C addresses. The channel swap quirk applies. Codec SSIDs (Lenovo vendor ID 0x17aa): * 0x3934: Legion R9000P AFR10 (AMD) * 0x3935: Legion R9000P AFR10 (AMD) Signed-off-by: Marco Giunta <marco_giunta@outlook.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/SN6PR19MB2303D726352EEE508A70D6D4FC922@SN6PR19MB2303.namprd19.prod.outlook.com
8 daysALSA: hda/realtek: Enable jack detection on Minisforum AI X1Nika Sommer
The firmware of the Minisforum AI X1 leaves the headphone jack detector reset bit asserted on its ALC245 codec. As a result, pin sense on NID 0x21 always reports the jack as absent. Enable the existing fixup ALC245_FIXUP_MINISFORUM_JACK_DETECT from commit 6bd8a57c044f ("ALSA: hda/realtek: Enable jack detection on Minisforum AI X1 Pro") to the Minisforum AI X1, which requires the same workaround. Tested on a Minisforum AI X1 (AMD Ryzen 7 255), using NixOS 26.11.20261014.55bfb4d and kernel 7.2.10. Signed-off-by: Nika Sommer <nika.sommer@mailbox.org> Link: https://patch.msgid.link/20261019183226.64985-1-nika.sommer@mailbox.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 daysALSA: hda/hdmi: Enable HBR capabilityAaron Kling
Tegra HDA does not set the HBR capability bit, however every SoC since Tegra114 does support HBR. Override the hbr setup function for these SoCs to unconditionally enable the feature. Since Tegra30 does not support HBR, this override will not be applied. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> Link: https://patch.msgid.link/20261020-tegra-hda-hbr-v2-1-6968017f585b@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 daysALSA: hda/realtek: Enable mute LED on HP Pavilion 15-eg2xxxMoroz Tymofii
The HP Pavilion 15-eg2xxx (103c:89f6) uses GPIO bit 4 for its speaker mute LED. Enable the existing ALC287 GPIO LED fixup for this system. Tested on Linux 7.3-rc7 without an hda_model override. The F5 LED follows speaker mute/unmute correctly, and audio playback works normally. Signed-off-by: Moroz Tymofii <moroztymofii@gmail.com> Link: https://patch.msgid.link/20261019164725.10666-1-moroztymofii@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 daysALSA: hda: aw88399: use SSID-specific firmware nameMarco Giunta
Use the ACPI subsystem ID to construct per-model firmware filenames (e.g. "awinic/aw88399_acf_17aa3938.bin") when loading firmware on HDA systems. This makes the driver compatible with the linux-firmware repository's per-device naming convention. Also, since the ACPI SSID is now required for firmware loading, change the error handling for a missing SSID from silently succeeding to an early -ENODEV return in aw88399_hda_acpi_probe(). Tested-by: Xia Yun'an <imitoy@imitoy.top> Signed-off-by: Marco Giunta <marco_giunta@outlook.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/SN6PR19MB23030BA9E3636DBBBB8C6408FC992@SN6PR19MB2303.namprd19.prod.outlook.com
8 daysASoC: aw88399: pass firmware name as argumentMarco Giunta
Pass the ACF firmware filename as an argument to aw88399_request_firmware_file() instead of hardcoding AW88399_ACF_FILE. Both existing callers (ASoC and HDA) pass AW88399_ACF_FILE to preserve current behavior. Also add missing newlines to the log messages of the modified lines. This allows the HDA side codec driver to request per-model firmware files in the next patch. Tested-by: Xia Yun'an <imitoy@imitoy.top> Signed-off-by: Marco Giunta <marco_giunta@outlook.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/SN6PR19MB2303DB0BF41797A38EB04CBFFC992@SN6PR19MB2303.namprd19.prod.outlook.com
8 daysMerge tag 'asoc-v7.4' of ↵Takashi Iwai
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Updates for v7.4 There's an awful lot of cleanup work in this pull request, lots from Bui Duc Phuc, Pengpeng Hou, HyeongJun An and Chancel Liu cleaning up detail issues in drivers in addition to Mormoto-san's ongoing framework work. This time Morimoto-san's work included enabling auto_selectable_formats so there's less manual configuration required for DAI links. There's also been a huge amount of upstreaming activity from Qualcomm, some pain there but hopefully enough has now landed for things to be smoother in future. - Use auto_selectable_formats in most drivers to reduce the amount of manual configuration required for DAI links. - Support for compressed audio on SOF IPC4 systems. - Support for AMD ACP 7.B and 7.F, AmLogic A9 and T7, Airoha AN7581, ESS Technology ES9039Q2M, Intel Cherry Trail with RT5688, Nuvoton NAU83G60, nVidia systems with WM8994, Qualcomm QAIF, Senary I2S, WCD9378 and various platforms, Realtek RT766 and RT767, Senary SN624x I also mistakenly merged some SPI changes in here then applied more patches on top before I noticed (it looks like this was b4's base selection logic picking a bad base for some ASoC work), highlights there are: - Improvements for spidev_test to cover additional use cases, plus be a bit easier to use. - Push more Tegra210 QSPI handling into interrupt context for performance improvements. - Support for Qualcomm QPIC SNAND v2 and RealTek RTD1625 NOR. - Documentation clarifications. - Fixes for some runtime PM and error handling issues. - Support for R-Car Gen5. (this should also be going in via my SPI pull request)
8 daysMerge branch 'acpi-driver'Rafael J. Wysocki
Merge changes related to ACPI support in device drivers for 7.4: - Switch over the users of acpi_get_first_physical_node(), that was inherently racy and therefore not really safe to use, to use its replacement acpi_bus_get_primary_device(), and eliminate the former (Rafael Wysocki) - Add !CONFIG_ACPI stubs for acpi_find_child_device() and acpi_device_uid() (Mario Limonciello and Robin Murphy) * acpi-driver: ACPI: bus: Drop acpi_get_first_physical_node() efi/dev-path-parser: Switch to use acpi_bus_get_primary_device() ALSA: hda: tas2781: Switch to use acpi_bus_get_primary_device() ALSA: hda: cs35l41: Switch to use acpi_bus_get_primary_device() iommu/arm-smmu-v3: Switch to use acpi_bus_get_primary_device() ACPI: Add stub for acpi_find_child_device() ACPI: bus: Provide !ACPI stub for acpi_device_uid() ALSA: hda: aw88399: Switch to use acpi_bus_get_primary_device() ASoC: loongson: Switch to use acpi_bus_get_primary_device() ASoC: intel: boards: Switch to use acpi_bus_get_primary_device() ASoC: amd: acp3x-es83xx: Switch to use acpi_bus_get_primary_device() ASoC: amd: acp-es8336: Switch to use acpi_bus_get_primary_device() thunderbolt: Switch to use acpi_bus_get_primary_device() platform/x86: apple-gmux: Switch to use acpi_bus_get_primary_device() platform/x86: x86-android-tablets: Use acpi_bus_get_primary_device() platform/x86: serdev_helpers: Switch to use acpi_bus_get_primary_device() platform/x86: yogabook: Switch to use acpi_bus_get_primary_device() ACPI: amba: Switch to use acpi_bus_get_primary_device() ACPI: bus: Use acpi/acpi_bus.h without CONFIG_ACPI
9 daysALSA: hda/realtek: Fix headset mic on ASUS Zenbook 14 UX3402VAGeorge Christidis
The UX3402VA (1043:16a3) BIOS leaves pin 0x19 unconfigured, so the headset mic does not work. Use ALC294_FIXUP_ASUS_SPI_HEADSET_MIC like the UX3405MA, it sets up the mic and keeps the CS35L41 speaker fixup. Tested on a UX3402VA: headset mic, internal mic and speakers work. Fixes: 07058dceb038 ("ALSA: hda/realtek: Splitting the UX3402 into two separate models") Cc: stable@vger.kernel.org Signed-off-by: George Christidis <gxristidis@gmail.com> Link: https://patch.msgid.link/20261018-for-linus-v1-1-4d8e9ff27d89@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 daysALSA: hda/via: Apply runtime PM workaround for ASUS X55AVasiliy Kovalev
ASUS X55A requires the same workaround like other machines with VT1802, otherwise it loses the codec power on a few nodes and the sound stays silent. Link: https://bugzilla.altlinux.org/45606 Cc: <stable@vger.kernel.org> Tested-by: Nikita Maksimov <nickstogramm@yandex.ru> Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org> Link: https://patch.msgid.link/20261017101257.215166-1-kovalev@altlinux.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 daysALSA: hda/realtek: Add fixup for Huawei MateBook X Pro 2019 (MACHR-WX9)Zhang Heng
On the MACHR-WX9 (ALC256, PCI SSID 19e5:3e13) the BIOS pin table disables the main speaker pair (pin 0x14), so only the tweeters on 0x1b play. Reusing the MACH_WX9 (19e5:3204) pin table restores all four speakers. Pin 0x19 (headset mic) has broken presence detect on this board: it reports "plugged" even with the jack empty, so auto-mic routes capture to the empty jack and the internal mic goes silent. Setting NO_PRESENCE on 0x19 (0x04a11140) suppresses the false reading. Chaining to ALC269_FIXUP_HEADSET_MODE then infers headset-mic presence from the headphone jack (pin 0x21), whose detection works correctly. Add ALC256_FIXUP_HUAWEI_MACHR_WX9_PINS with the MACH_WX9 pin table, chained to ALC269_FIXUP_HEADSET_MODE, registered for PCI SSID 19e5:3e13. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222126 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261017095400.350164-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 daysALSA: hda/realtek: Add mic-mute LED quirk for the HP 245 14 inch G10Keane Mbae
The HP 245 14 inch G10 Notebook PC (codec SSID 103c:8ba4, ALC236) is not listed in alc269_fixup_tbl[], so the codec falls back to the vendor-wide HP entry (ALC269_FIXUP_HP_MUTE_LED). That entry only registers a speaker mute LED (hda::mute); no microphone mute LED class device (hda::micmute) is created, so muting the microphone never lights the LED on the F8 key. On this model the microphone mute LED is wired to COEF 0x35 bits 2-3 (the same register as ALC236_FIXUP_HP_MUTE_LED), but with the opposite sense: 1 << 2 lights the LED and 2 << 2 turns it off. Setting micmute_led_polarity = 1 makes alc_update_coef_led() write the level that matches the hardware. The speaker mute LED (F5) keeps being driven through the HP_Mute_LED DMI string, exactly as the current fallback does. Add ALC236_FIXUP_HP_MUTE_LED_MICMUTE_COEF_INV for 103c:8ba4. Signed-off-by: Keane Mbae <keanembae@gmail.com> Tested-by: Keane Mbae <keanembae@gmail.com> Link: https://patch.msgid.link/20261017095132.20279-1-keanembae@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 daysALSA: hda/realtek: Add quirk for HP 15s-eq3xxx mute LEDGiovanni Maria Mazzone
The HP Laptop 15s-eq3xxx (SSID 103c:89fc) uses the Realtek ALC236 codec. Its speaker mute LED is driven by COEF index 0x07 bit 0, which is exactly what the existing ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 quirk implements. The sibling models 15s-eq1xxx (103c:8706) and 15s-eq2xxx (103c:887a) already carry this quirk, but the eq3xxx SSID was never added, so the LED never follows the mute state. Add the missing SSID to the quirk table. Signed-off-by: Giovanni Maria Mazzone <giovannimariamazzone@gmail.com> Link: https://patch.msgid.link/20261016174627.362872-1-giovannimariamazzone@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 daysALSA: hda/realtek: Fix internal speakers on Acer Aspire AL16-31PLuis Gerardo Lopez Hernandez
The Acer Aspire AL16-31P (Intel Alder Lake-N, Realtek ALC269VC, PCI/codec SSID 2782:1718) has its internal speakers wired to pin 0x1b, but the BIOS marks that pin as not connected (0x411111f0) and only exposes pin 0x14 as the speaker. As a result the internal speakers are silent while headphones, HDMI and Bluetooth work. This is the same layout as the Infinix Y4 Max and MEDION E15433, which share the 0x2782 subsystem vendor. Reuse their fixup, which configures pin 0x1b as an internal speaker and limits the internal mic boost. Tested by booting with snd-hda-intel model=2782:1705: the fixup is picked, pin 0x1b is used as a speaker output, the internal speakers work, and they are muted when headphones are plugged in. Cc: stable@vger.kernel.org Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Luis Gerardo Lopez Hernandez <gamaerry@gmail.com> Link: https://patch.msgid.link/20261017005039.9139-1-gamaerry@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 daysALSA: hda/realtek: Enable mute LEDs on HP OmniBook X Flip 14-fm0xxxJosé Miguel Castellanos Valladolid
The HP OmniBook X Flip Laptop 14-fm0xxx (subsystem ID 0x103c8d9f, ALC245 with two CS35L41 amplifiers over I2C) is currently handled by ALC287_FIXUP_CS35L41_I2C_2. That binds the amplifiers but does not set up the mute LEDs, so neither the speaker mute key LED nor the microphone mute key LED lights up under Linux. With that fixup the codec GPIOs stay disabled (IO[0..2] enable=0). Switch the entry to ALC287_FIXUP_CS35L41_I2C_2_HP_MUTE_LEDS, which chains cs35l41_fixup_i2c_two with ALC245_FIXUP_HP_X360_MUTE_LEDS. This keeps the amplifier setup and adds the speaker mute LED through the ALC245 COEF register and the mic mute LED through codec GPIO2. It is the same fixup already used for the 17 Turbine OmniBook 7 DIS (0x103c8d9c). Tested on the affected laptop with v7.2.11 using the equivalent ALC245_FIXUP_HP_ENVY_X360_15_FH0XXX fixup, which has the identical cs35l41_fixup_i2c_two + ALC245_FIXUP_HP_X360_MUTE_LEDS chain: hda::mute and hda::micmute LED class devices appear and both key LEDs light up when muting. Fixes: 29951021367f ("ALSA: hda/realtek: Add support for various HP Laptops using CS35L41 HDA") Cc: stable@vger.kernel.org Signed-off-by: José Miguel Castellanos Valladolid <josstamy@gmail.com> Link: https://patch.msgid.link/20261017050615.14481-1-josstamy@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 daysALSA: hda: cs35l41: Add support for HP OmniBook 7 14-hg0xxxZhang Heng
The HP OmniBook 7 14-hg0xxx (SSID 103C8F07) uses two CS35L41 amplifiers connected via I2C. The left speaker works, but the right speaker is silent because the cs35l41-hda driver fails to probe with -EINVAL: cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: Failed property cirrus,dev-index: -22 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: error -EINVAL: Platform not supported cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: probe with driver cs35l41-hda failed with error -22 Add the missing SSID entry to the CS35L41 configuration and property tables, using the generic DSD configuration and the same parameters as other HP laptops (e.g. 103C8CDE). This allows both amplifiers to probe and restores the right speaker. Tested on HP OmniBook 7 14-hg0xxx (SSID 103C8F07). Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222124 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261016130219.690074-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 daysALSA: hda: cs35l41: Support HP OmniBook 7 Laptop 16-bh0xxxSven Jans
The laptop has a malformed _DSD which causes the cirrus,dev-index property to fail to parse, so it needs to be supported using the configuration table. Signed-off-by: Sven Jans <skbotnl@disroot.org> Link: https://patch.msgid.link/20260824142209.4945-1-skbotnl@disroot.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
11 daysALSA: hda/realtek: Fix hiss/crackle on Lenovo Xiaoxin 14 GT (17aa:3912)Viktor Menshin
Commit 3a3e810e9108 ("ALSA: hda/realtek: Add quirk for Lenovo Xiaoxin 14 GT") added a quirk mapping SSID 17aa:3912 to ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN, chosen by analogy with neighboring SSIDs (0x390d, 0x3911, 0x391a) without being verified on hardware, as noted in that commit's own message. I have since tested it on the actual hardware (Lenovo Xiaoxin Pro 14 ASP10, same 17aa:3912 SSID) and confirmed it does not fix the reported issue. ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN only repoints pin 0x17 and the preferred DAC pairs for the bass speaker; it does not touch the codec's vendor processing coefficients. The actual symptom - constant electrical hiss/crackle on both the headphone jack and the internal speakers, independent of volume - is unrelated to pin/DAC routing and is also present on stock Windows before the Realtek driver is installed, which points at those coefficients being left at their power-on default. To find the correct values, I passed the physical HD Audio controller through to a Windows 10 VM (VFIO, with QEMU patched to log CORB verb traffic) and captured the coefficient writes the vendor Realtek driver performs at init. Replaying a single one of them on Linux via hda-verb reproducibly eliminates the headphone jack noise: hda-verb /dev/snd/hwC#D0 0x20 SET_COEF_INDEX 0x36 hda-verb /dev/snd/hwC#D0 0x20 SET_PROC_COEF 0x77d7 This has held up across reboots and kernel updates for several weeks (applied via a small systemd oneshot unit while testing). Add a dedicated fixup that performs this coefficient write and chains it with the existing ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN (which may still be relevant for the bass speaker pin wiring on this board), and point the 17aa:3912 quirk entry at it instead. Honesty note: this fixes the headphone jack. The internal speakers still have noise under certain conditions (notably worse on AC power) that I have not been able to isolate via coefficient-table replay; that part remains open. Sending what is verified to work rather than holding this back. Link: https://bugzilla.kernel.org/show_bug.cgi?id=221203 Fixes: 3a3e810e9108 ("ALSA: hda/realtek: Add quirk for Lenovo Xiaoxin 14 GT") Signed-off-by: Viktor Menshin <ripeeerr@gmail.com> Link: https://patch.msgid.link/20261015132157.57198-1-ripeeerr@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 daysALSA: hda/realtek: Add HP ENVY Laptop 13-ba1xxx quirkImtiaz Chowdhury
On the HP ENVY Laptop 13-ba1xxx, the F5 and F8 key's LED were not working at all. Add a quirk for subsystem ID 0x8820 so it uses the existing ALC245_FIXUP_HP_X360_MUTE_LEDS fixup, as done for the 13-ba0xxx. Tested on HP ENVY Laptop 13-ba1063cl: F5 and F8 LED lights work as intended. Checked the audio systems both with headphones and no headphones, and there were no issues. Signed-off-by: Imtiaz Chowdhury <imtiazc56@gmail.com> Link: https://patch.msgid.link/20261015232210.35946-1-imtiazc56@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 daysALSA: hda/realtek: Fix quirk for HP Laptop 15-fc0xxxZhang Heng
The HP Laptop 15-fc0xxx is based on an AMD platform where the digital microphone is provided by the snd-soc-acp6x-mach driver, not by the HDA codec. The ALC236_FIXUP_HP_DMIC quirk configures pin 0x12 as an internal DMIC, which is a misconfiguration for this machine: the pin is not wired to a codec DMIC and the setting has no effect on the actual microphone path (which works via ACP6x). Replace ALC236_FIXUP_HP_DMIC with ALC236_FIXUP_HP_MUTE_LED_MICMUTE_GPIO, the standard quirk used by the closely related HP Laptop 15-fd0xxx and other ALC236 HP machines. This removes the misleading DMIC pin config and adds proper mute LED and micmute LED support that was missing from the original quirk. Fixes: 720460722310 ("ALSA: hda/realtek: add quirk for HP Laptop 15-fc0xxx") Cc: stable@vger.kernel.org Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221233 Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222044 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261015065640.377466-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 daysALSA: hda/realtek: Limit Line In boost and ADC gain on DECENTA MATX03wangdicheng
The DECENTA MATX03 (ALC897, SSID 1e0b:1297) exposes a high gain range on both the Line In pin boost and the ADC input amp. Pin 0x1a reports nsteps=0x03 with stepsize=0x27, that is 0, 9.75, 19.5 and 29.25 dB. ADC 0x08 reports nsteps=0x3f with stepsize=0x02, that is 0 to 31.5 dB in 0.5 dB steps, and defaults to 0x3f (maximum). The combined 60.75 dB analogue cascade overloads the front-end when the source level is high, producing audible noise during Line In monitoring. Add a new fixup alc897_fixup_limit_linein_boost that overrides the amp capabilities of pin 0x1a to nsteps=1 (max ~11.75 dB) and ADC 0x08 to nsteps=1 (max ~0.5 dB). The total gain drops from 60.75 dB to ~12.25 dB, eliminating the clipping. Signed-off-by: wangdicheng <wangdicheng@kylinos.cn> Link: https://patch.msgid.link/20261015021210.106392-1-wangdich9700@163.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 daysALSA: hda/realtek: Fix speaker and mic mute LEDs on IdeaPad Pro 5 14IAH10Aayush Kumar
The speaker and microphone mute LEDs on the IdeaPad Pro 5 14IAH10 do not follow the ALSA mute state. This machine has an ALC287 codec with SSID 17aa:3914, but shares PCI SSID 17aa:3843 with the Yoga Book 9i and currently gets its fixup. Add a codec SSID quirk that runs the IdeaPad ACPI LED fixup. Chain the existing bass speaker amp fixup so the audio setup is retained. Tested on the IdeaPad Pro 5 14IAH10: muting and unmuting the headphone sink toggled the physical speaker mute LED. Muting both microphone controls changed the ALSA mic LED state from 0 to 1. Signed-off-by: Aayush Kumar <aayushkmx@gmail.com> Link: https://patch.msgid.link/20261014072505.60358-1-aayushkmx@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
14 daysALSA: vmaster: Serialize hook registration with control callbacksCen Zhang
An HDA virtual-master hook must have its private argument initialized before a control callback can invoke it. snd_hda_add_vmaster_hook() installs the trampoline through snd_ctl_add_vmaster_hook(), which stores master->hook before master->hook_private_data without serialization. When a codec with a vmaster mute hook binds to an already registered card, snd_hda_gen_build_controls() publishes and initializes the Master Playback Switch before installing the hook. A native write that changes the switch can then run in the following order: 1. The codec bind path publishes and initializes the master control in __snd_hda_add_vmaster(), then calls snd_hda_add_vmaster_hook(). 2. The hook setter stores master->hook, but has not yet stored its private argument. 3. SNDRV_CTL_IOCTL_ELEM_WRITE takes controls_rwsem and calls master_put() while the setter remains between those stores. 4. master_put() sees the callback and invokes vmaster_hook() with a NULL argument. The trampoline dereferences it before the setter can complete publication. The write lock held by snd_ctl_elem_write() does not exclude the hook setter, so this can cause a NULL pointer dereference. Take the same controls_rwsem for writing inside snd_ctl_add_vmaster_hook() so the callback and its argument are installed together with respect to native control callbacks. Pass the card into the helper and update the HDA caller, keeping the lock in the ALSA core. Release it when registration returns, before the caller synchronizes the hook. KASAN report as below: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] CPU: 1 UID: 0 PID: 499 Comm: alsa-vmaster-tr Not tainted 7.2.0-rc6-pmb-bt-functional-v1+ #1 PREEMPT(lazy) Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:vmaster_hook+0x35/0xb0 Code: f5 53 48 89 fb 48 83 ec 08 e8 57 f0 9a fc eb 50 e8 50 f0 9a fc 48 8d 7b 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 75 59 48 8d 7b 10 48 8b 43 08 48 ba 00 00 00 00 00 fc RSP: 0018:ffff888117647cd0 EFLAGS: 00010212 RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff84e9ff50 RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000000000000008 RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000001 R10: ffffffff89427457 R11: ffff888115ad1d00 R12: ffffffff84e9ff30 R13: ffff888114943ca0 R14: 0000000000000000 R15: 0000000000000001 FS: 00007fe8167b3780(0000) GS:ffff88826b7e3000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000557c8c2842a8 CR3: 000000011579f005 CR4: 0000000000770ef0 PKRU: 55555554 Call Trace: <TASK> master_put+0x20e/0x2b0 snd_ctl_elem_write+0x37f/0x5e0 snd_ctl_ioctl+0x997/0xdd0 ? __pfx_snd_ctl_ioctl+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? selinux_file_ioctl+0xaa/0x280 ? __pfx_snd_ctl_ioctl+0x10/0x10 __x64_sys_ioctl+0x163/0x1d0 do_syscall_64+0x115/0x6a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe8168c291b Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 1c 48 8b 44 24 18 64 48 2b 04 25 28 00 00 RSP: 002b:00007fffab0cb150 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fe8168c291b RDX: 00007fffab0cb310 RSI: 00000000c4c85513 RDI: 0000000000000003 RBP: 00007fffab0cb310 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007fffab0cb1c0 R14: 0000000000000001 R15: 0000557c4f71fd10 </TASK> Modules linked in: ---[ end trace 0000000000000000 ]--- Fixes: ee52e56e7b12 ("ALSA: hda - Fix mute-LED fixed mode") Signed-off-by: Cen Zhang <zzzccc427@gmail.com> Assisted-by: LLM Link: https://patch.msgid.link/pm-pmb-c2667fb9cc42fbb7943c-v4-b7bc2fe90e950accb3f7@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
14 daysALSA: hda/realtek: keep headset mic on Acer SSID 0x1640Iván Ezequiel Rodriguez
The micmute-LED quirk for the Aspire A315-44P matches PCI SSID 1025:1640 before the Acer ALC256 pin fallback. The Aspire Go 15 AG15-42P shares that SSID and leaves nid 0x19 as 0x411111f0, so selecting the LED-only fixup drops the headset-mic pin remap that the fallback would have applied. Chain ALC2XX_FIXUP_HEADSET_MIC before the GPIO3 micmute LED on that SSID. Leave the Swift SFG16 entry (0x169a) unchanged. Tested on Acer Aspire AG15-42P (Callisto_BCU): PCI pick 1025:1640, Headset Mic=0x19, GPIO3 enabled with no physical micmute LED, speaker and capture paths functional. Fixes: d830631a128b ("ALSA: hda/realtek: Add micmute LED quirk for Acer Aspire A315-44P") Cc: stable@vger.kernel.org Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com> Link: https://patch.msgid.link/20261013204219.9649-1-ivanrwcm25@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
14 daysALSA: hda/tas2781: Skip invalid TAS2563 UEFI calibration dataGergo Koteles
Some Lenovo 14ARB7 laptops do not have proper calibration data. Skip these zero calibration values and fall back to the calibration data provided by the DSP firmware. Tested-by: Georg Wenzel <g.wenzel@gmail.com> Fixes: c3ca4458cc2f ("ALSA: hda/tas2781: add TAS2563 support for 14ARB7") Cc: stable@vger.kernel.org # 6.18 Signed-off-by: Gergo Koteles <soyer@irl.hu> Tested-by: Philipp Oster <philippdev5396@outlook.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/12a1ab265a1dc0e3a062a54287c8ef48682c4efc.1791895478.git.soyer@irl.hu
14 daysALSA: hda/tas2781: Assign total_sz at the end of the functionGergo Koteles
In the tas2563_save_calibration() function, cd->total_sz is assigned in several error paths. Move the assignment to the end of the function. Fixes: b6016332b889 ("ALSA: hda/tas2781: clear cali_data.total_sz when calibration read fails") Cc: stable@vger.kernel.org # 6.18 Signed-off-by: Gergo Koteles <soyer@irl.hu> Tested-by: Philipp Oster <philippdev5396@outlook.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/4b357778dce1b70a647e7e47b5ab3f0a6b2fc0cc.1791895478.git.soyer@irl.hu
14 daysRevert "ALSA: hda/tas2781: Enable bass speakers support"Takashi Iwai
This reverts commit 3bc4fc135ec741c5657cba6b2300bf8bf81179d2. The problem will be addressed in a more proper way later. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-13ASoC: tegra: Support auxiliary devicesMark Brown
Svyatoslav Ryhel <clamor95@gmail.com> says: Add support for auxiliary devices, such as amplifiers, sound-muxes or dsp, to be added to the sound card. Link: https://patch.msgid.link/20261013180253.477605-1-clamor95@gmail.com
2026-10-13ALSA: hda/realtek: Add GPIO2 low quirk for ASUS E5402WHAZhang Heng
The internal speaker amplifier on the ASUS ExpertCenter AIO E5402WHA (ALC256, SSID 1043:3500) is enabled via GPIO2 and is active-low. Driving GPIO2 high, as ALC256_FIXUP_ASUS_AIO_GPIO2 does on the ZN270IE, keeps the speakers muted. Add a dedicated fixup that drives GPIO2 low so the internal speakers work. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221938 Tested-by: Johan den Hollander <johan.den.hollander@finalist.nl> Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261013071255.270131-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-13ALSA: hda: intel: Don't free card in the probe workAli Ahmet Memiş
If the delayed probe fails, azx_probe_work() frees the card and clears the drvdata. azx_remove() reads the card before it waits for the probe work with cancel_delayed_work_sync() so when the device is removed while the probe work is running, it frees the card again after the work has already freed it. Only disconnect the card in the work so that its slot is released right away and leave freeing it to azx_remove(). Fixes: 39173303c838 ("ALSA: hda: Free card instance properly at probe errors") Reported-by: syzbot+40b06a86af225236fdb4@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=40b06a86af225236fdb4 Signed-off-by: Ali Ahmet Memiş <aliamemis@disroot.org> Link: https://patch.msgid.link/20261012162841.1879278-1-aliamemis@disroot.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-12ALSA: hda: cs35l41: Fix ACPI device reference leak on probe failureMa Ke
cs35l41_hda_probe() takes an acpi_device through cs35l41_hda_read_acpi() and stores it in cs35l41->dacpi. Only the failures that happen later reach the err: label, which is where that reference and cs35l41->acpi_subsystem_id are released, so the early return taken when cs35l41_hda_read_acpi() fails leaves both behind. Keep the ownership in the caller instead of dropping the reference inside cs35l41_hda_read_acpi(). That removes the need to work out whether a given failure path has already released it, and with it the double put that cs35l41_hda_parse_acpi() would otherwise cause when it fails after having released the device itself. cs35l41_hda_parse_acpi() and the !physdev path no longer put the reference, and the early failure enters the existing err: cleanup tail through a new err_acpi label. The label sits between the reset of the codec and the gpio cleanup, so an early failure also releases the reset and chip-select descriptors that cs35l41_hda_parse_acpi() may already have taken, while still skipping cs35l41_safe_reset() on a codec that was never brought up. cs35l41->dacpi comes from devm_kzalloc() and is only assigned once the ACPI device has been found, so the put is a no-op when the lookup itself failed. Found by code review. Fixes: 447106e92a0c ("ALSA: hda: cs35l41: Support mute notifications for CS35L41 HDA") Cc: stable@vger.kernel.org Signed-off-by: Ma Ke <make_ruc2021@163.com> Link: https://patch.msgid.link/20261012084152.3740340-1-make_ruc2021@163.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-12ALSA: hda/conexant: Add quirk for Acer Aspire Go 16 mic mute LEDGonçalo Miranda
The Acer Aspire Go 16 (AG16-71P) uses a Conexant SN6180 codec (subsystem ID 0x1025:0x1937) with the microphone mute LED wired to GPIO4. Add a quirk entry so the kernel drives the LED in sync with the microphone mute state. The fixup reuses the existing cxt_setup_mute_led() helper with mask 0x10, matching the behavior verified on the hardware. Signed-off-by: Gonçalo Miranda <me@goncalom.dev> Link: https://patch.msgid.link/20261012110024.25310-1-me@goncalom.dev Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-12Merge branch 'for-linus' into for-nextTakashi Iwai
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-11ALSA: hda/cs8409: Fix for Dell Cirrus audio jack detectSteven 'Steve' Kendall
On some models like the Dell Inspiron 15 3520, jack detection does not work. This patch switches to delayed work to fix jack plug on Chrome OS for this model. Assisted-by: LLM Signed-off-by: Steven 'Steve' Kendall <skend@chromium.org> Link: https://patch.msgid.link/20261007-fix-headphone-plug-cirrus-dell-v5-1-c28146b18d5c@chromium.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-11ALSA: hda/realtek: Fix mute LEDs on HP ENVY 17-cr1xxxMaksim Krasutski
The HP ENVY Laptop 17-cr1xxx with subsystem ID 103c:8be8 uses an ALC245 codec and two CS35L41 I2C speaker amplifiers. Its existing quirk configures the amplifiers but does not enable the speaker and microphone mute LED handlers. Select ALC287_FIXUP_CS35L41_I2C_2_HP_MUTE_LEDS to retain the amplifier setup and enable both mute indicators. The equivalent change was tested on an HP ENVY 17-cr1xxx running Kubuntu 26.04.1 with kernel 7.0.0-38-generic. Both keyboard mute indicators were confirmed working. Fixes: aa8e3ef4fe53 ("ALSA: hda/realtek: Add quirks for various HP ENVY models") Assisted-by: LLM Signed-off-by: Maksim Krasutski <krasutskimaksim@gmail.com> Link: https://patch.msgid.link/20261010185335.30949-1-krasutskimaksim@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-10ALSA: hda/scodec: imply SERIAL_MULTI_INSTANTIATE for AW88399Marco Giunta
The AW88399 HDA side codec driver relies on the serial-multi-instantiate driver to create I2C devices from the "AWDZ8399" ACPI HID entry. Add imply SERIAL_MULTI_INSTANTIATE to help kernel configuration tools suggest the correct dependency, matching the CS35L41 and CS35L56 HDA side codec entries. Signed-off-by: Marco Giunta <marco_giunta@outlook.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/SN6PR19MB2303BF65050B51AE7217BB9AFCBD2@SN6PR19MB2303.namprd19.prod.outlook.com
2026-10-10ALSA: hda: Reset response counter when a verb times outBob Song
On some controllers the HDA link reports a verb timeout and the driver falls back to polling mode. After that, every subsequent verb sent to that codec address keeps timing out (roughly one second per verb), while the hardware itself looks perfectly healthy: the RIRB write pointer keeps advancing, interrupts are still delivered, and verbs that carry no reply payload -- notably writes -- still take effect on the codec. The reason is that bus->rirb.cmds[addr] is incremented for every verb and only decremented in snd_hdac_bus_update_rirb() when a matching RIRB response is read, without any rollback for a response that never arrives. A controller that cannot fall back to the single-command mode (chip->fallback_to_single_cmd == 0, e.g. the ACPI platform, Tegra and CIX controllers) returns an error right away and never performs the bus reset that would reinitialize CORB/RIRB and clear the counter, so a single lost response leaves bus->rirb.cmds[addr] non-zero forever. Each following verb then still gets one response that only brings the count back to the stale baseline of 1, and snd_hdac_bus_get_response() keeps timing out even though the codec answers normally. Handle it in the core helper snd_hdac_bus_exec_verb_unlocked(): whenever get_response() reports an error, reset the pending counter for the codec address, so a late response is simply treated as a spurious response and the following verbs recover. Doing it here covers all HD-audio controllers instead of relying on each controller's fallback setting. Add a small helper snd_hdac_bus_reset_response_counter() for this. Signed-off-by: Bob Song <songxiebing@kylinos.cn> Link: https://patch.msgid.link/20261010082724.1653199-1-songxiebing@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-10ALSA: hda/realtek: Enable all four speaker amps on Lenovo ThinkBook X G2 IAHEvgeny Akhtimirov
The Lenovo ThinkBook X G2 IAH (MTM 21TU) has an ALC287 codec with four CS35L41 amplifiers on I2C (CSC3551). It reports codec SSID 17aa:3929, which it shares with the ThinkBook 13x Gen 5, and PCI SSID 17aa:3842. Since PCI SSID 17aa:3842 has no quirk entry, the codec SSID matches ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD. That fixup binds only two amps (cs35l41-hda.0 and .1), while the CS35L41 configuration table describes four for 17AA3929. Amps .2 and .3 probe and load firmware, but they are never bound to the codec, so half of the speakers stay silent. Add a ThinkPad-style fixup chain that binds four I2C amps, and match the laptop by its PCI SSID so the ThinkBook 13x Gen 5 is not affected. Tested with hda_model=1028:0c4d (alias to ALC287_FIXUP_CS35L41_I2C_4): all four amps bind, apply their calibration and are runtime-active during playback. Cc: stable@vger.kernel.org Signed-off-by: Evgeny Akhtimirov <evgeny@devduty.com> Link: https://patch.msgid.link/20261009-thinkbook-x-g2-iah-v1-1-56012188aee0@devduty.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-10-10ALSA: hda: Add NULL check for the driver pointer at unsol event workTakashi Iwai
snd_hdac_bus_process_unsol_events() assumes that the codec driver is always set when it's accessible from the codec table. It's true in general, but in a sheer timing, it might have been already NULLified at the driver unbinding. Although the codec removal should have been done properly by the previous fixes, just for more safety, let's add a NULL check before dereferencing and calling the driver's unsol_event callback. Fixes: e7255c00b10e ("ALSA: hda: Skip event processing for unregistered codecs") Link: https://patch.msgid.link/20261009133341.440917-6-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>