Repository navigation
Conversation
snd_dma_wc_alloc() keeps the newly allocated pages in a local variable, and snd_dma_alloc_dir_pages() stores them in dmab->area only after ->alloc() returns. If dma_map_single() fails, the error path passes dmab->area to do_free_pages() instead, and that is still NULL at this point for the usual callers. The pages are then leaked with their write-combining attribute still set, set_memory_wb() warns about the zero address, and for buffers larger than a page free_pages_exact() goes on to free the struct pages of the bogus addresses 4096, 8192 and so on. With CONFIG_DEBUG_VM that hits the VM_BUG_ON() in free_pages(): kernel BUG at mm/page_alloc.c:5600! RIP: 0010:free_pages_exact+0xcb/0xd0 Call Trace: snd_dma_wc_alloc+0x14f/0x160 [snd_pcm] snd_dma_alloc_dir_pages+0x4f/0x80 [snd_pcm] This was reproduced on an x86 guest without swiotlb by allocating SNDRV_DMA_TYPE_DEV_WC buffers for a device with a 24-bit streaming DMA mask, so that dma_map_single() fails. Free the pages that were just allocated. Fixes: c880a51 ("ALSA: memalloc: Use proper DMA mapping API for x86 WC buffer allocations") Signed-off-by: Sasha Levin <sashal@kernel.org> Link: https://patch.msgid.link/20261028144441.992127-1-sashal@kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
Since commit f16eaa3 ("ALSA: hda/core: add cleanup in snd_hdac_bus_alloc_stream_pages()"), snd_hdac_bus_alloc_stream_pages() frees the BDL and position buffers it has already allocated when a later allocation fails. snd_dma_free_pages() doesn't clear dmab->area, so the freed buffers still look allocated to snd_hdac_bus_free_stream_pages(), which the HDA controller drivers call from their destructors, and they are freed a second time when the device is removed. With fault injection failing the CORB/RIRB buffer allocation of snd-hda-intel on a QEMU ich9-intel-hda, unbinding the device then crashes: page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0) kernel BUG at include/linux/mm.h:1986! Call Trace: ___free_pages+0x9b/0xa0 free_pages_exact+0xa5/0xd0 snd_hdac_bus_free_stream_pages+0x43/0xb0 [snd_hda_core] azx_free+0xb3/0x1b0 [snd_hda_intel] azx_dev_free+0xd/0x20 [snd_hda_intel] Clear the buffer pointers after freeing them in the error path. Fixes: f16eaa3 ("ALSA: hda/core: add cleanup in snd_hdac_bus_alloc_stream_pages()") Signed-off-by: Sasha Levin <sashal@kernel.org> Link: https://patch.msgid.link/20261028144443.992569-1-sashal@kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
The Huawei MateBook X Pro 2020 (MACHC-WAX9) has a combined headphone and microphone jack, but the BIOS marks pin 0x19 as unconnected (0x411111f0). As a result the headset microphone is missing and only the internal microphone is available. The mic mute LED on the F7 key does not follow the capture mute state either. The machine uses the PCI subsystem vendor ID 0x1e83 (Huaqin) rather than 0x19e5, so the Huawei vendor-wide quirk that sets up the LED does not match. Add a fixup that configures pin 0x19 as a headset microphone without its own jack detection and chains to ALC269_FIXUP_HEADSET_MODE, which enables headset mode and the mic mute LED. This is the MACHR-WX9 fixup without its other pin overrides. The remaining BIOS pin defaults work, and pin 0x14, which the MACHR-WX9 uses for a second speaker pair, produces no sound on this machine. Configuring pin 0x19 with presence detection (0x04a11040) does not work either: the jack state drops to unplugged while the headset is still connected. Tested on: HUAWEI MACHC-WAX9 (MateBook X Pro 2020), BIOS 1.26, Ubuntu 26.04 (kernel 7.0.0-38-generic, with this patch backported). Signed-off-by: Cian Ruane <cian.ruane1@gmail.com> Link: https://patch.msgid.link/20261027234732.6893-1-cian.ruane1@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
usb_stream_hwdep_mmap() reads us122l->sk.s and dereferences it without checking for NULL. The stream object is released by usb_stream_free(), which is reached through us122l_stop() both when the device is disconnected and when us122l_start() fails, and it leaves us122l->sk.s set to NULL. The hwdep file stays usable after that, so a later mmap() KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017] RIP: 0010:usb_stream_hwdep_mmap+0x107/0x890 sound/usb/usx2y/us122l.c:182 crashes while reading s->read_size, which sits at offset 0x10. That NULL is an expected state for this field: usb_stream_hwdep_vm_fault(), usb_stream_hwdep_poll(), usb_stream_hwdep_ioctl(), usb_stream_stop() and usb_stream_free() all test it before use. Only the mmap callback misses the check, so let it return -ENODEV, matching what the other hwdep mapping in usx2yhwdeppcm.c does when its shared buffer has not been allocated. Fixes: 030a07e ("ALSA: Add USB US122L driver") Cc: stable@vger.kernel.org Co-developed-by: Bin Yu <byu@xidian.edu.cn> Signed-off-by: Bin Yu <byu@xidian.edu.cn> Co-developed-by: Cheng Wen <wencheng@xidian.edu.cn> Signed-off-by: Cheng Wen <wencheng@xidian.edu.cn> Signed-off-by: YuanZhe Liu <25031212351@stu.xidian.edu.cn> Link: https://patch.msgid.link/20261028042525.8737-1-25031212351@stu.xidian.edu.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
usb_stream_hwdep_open() and usb_stream_hwdep_release() pass the result of usb_ifnum_to_if() straight to usb_autopm_get_interface() and usb_autopm_put_interface(), without checking it for NULL. usb_ifnum_to_if() returns NULL once the device is gone, since usb_disable_device() clears udev->actconfig on disconnect. The hwdep file can outlive the disconnect: the card is released with snd_card_free_when_closed(), so a process that keeps the character device open reaches the driver's release callback after the USB configuration has been dropped, and interface_to_usbdev() then dereferences the NULL interface at offsetof(struct device, parent). The open callback has the same problem when it races with the disconnect. Check both lookups and fail the open with -ENODEV; in release, skip the runtime PM put when the interface is already gone and still run the rest of the per-file cleanup. Move the us122l->first bookkeeping after the checks so that a failed open no longer leaves a stale file pointer behind. Fixes: 030a07e ("ALSA: Add USB US122L driver") Cc: stable@vger.kernel.org Co-developed-by: Bin Yu <byu@xidian.edu.cn> Signed-off-by: Bin Yu <byu@xidian.edu.cn> Co-developed-by: Cheng Wen <wencheng@xidian.edu.cn> Signed-off-by: Cheng Wen <wencheng@xidian.edu.cn> Signed-off-by: YuanZhe Liu <25031212351@stu.xidian.edu.cn> Link: https://patch.msgid.link/20261028074143.14440-1-25031212351@stu.xidian.edu.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
usb_stream_start() submits the first two capture and playback URBs and only afterwards assigns sk->idle_inurb, sk->idle_outurb, sk->completed_inurb and sk->completed_outurb to the remaining two URBs of each direction. A transfer can complete as soon as usb_submit_urb() has been called, so the completion handler i_capture_start() or i_playback_start() may run before those pointers are set. While the stream is still being synchronized (state below usb_stream_sync1), stream_start() then calls playback_prep_freqn(sk, sk->idle_outurb) with sk->idle_outurb still NULL, and the packet descriptors are written through that NULL pointer: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000018: 0000 [#1] SMP KASAN KASAN: null-ptr-deref in range [0x00000000000000c0-0x00000000000000c7] RIP: 0010:playback_prep_freqn+0x11c/0x4a0 sound/usb/usx2y/usb_stream.c:33 Call Trace: <IRQ> stream_start+0x5dc/0x8d0 sound/usb/usx2y/usb_stream.c:596 i_capture_start+0x3da/0x710 sound/usb/usx2y/usb_stream.c:654 __usb_hcd_giveback_urb+0x238/0x550 drivers/usb/core/hcd.c:1657 usb_giveback_urb_bh+0x20b/0x530 drivers/usb/core/hcd.c:1691 tasklet_hi_action+0xa/0x20 kernel/softirq.c:994 handle_softirqs+0x16f/0x440 kernel/softirq.c:645 </IRQ> The four URBs referenced by these pointers are allocated long before and do not depend on any transfer state, so assign them before the submit loop. Keeping the assignment inside the retry path also restores a well-defined URB rotation when the start frame mismatch handling kills and resubmits the streams. Fixes: 030a07e ("ALSA: Add USB US122L driver") Cc: stable@vger.kernel.org Co-developed-by: Bin Yu <byu@xidian.edu.cn> Signed-off-by: Bin Yu <byu@xidian.edu.cn> Co-developed-by: Cheng Wen <wencheng@xidian.edu.cn> Signed-off-by: Cheng Wen <wencheng@xidian.edu.cn> Signed-off-by: YuanZhe Liu <25031212351@stu.xidian.edu.cn> Link: https://patch.msgid.link/20261028103158.22996-1-25031212351@stu.xidian.edu.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
The MSI GE76 Raider drives its speakers using the exact same ALC1316 smart amplifier as the GE66 Raider, but under a different hardware ID. Thus, the same speaker dropout fixup should apply to both devices. This patch extends the fixup that configures this amplifier's silence detection to apply to the hardware ID of the GE76 as well. Link: thesofproject/sof#10475 Link: https://lore.kernel.org/all/20260909193104.26508-1-audvare@gmail.com Signed-off-by: Benjamin J Pryor <programmer2514@gmail.com> Link: https://patch.msgid.link/20261028132951.1253841-1-programmer2514@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
The CVT Touch Device (1ff7:0f33) is a USB composite device (HID + UAC audio). Its iProduct string "Touch Device" is generic and does not identify the audio function. Windows names the audio function "MAXHUB Speaker" from the UAC OUTPUT_TERMINAL iTerminal descriptor. Add a quirk entry to override the card shortname to "MAXHUB Speaker" with QUIRK_NO_INTERFACE to preserve normal stream and mixer creation. Signed-off-by: renpanpan <renpanpan@kylinos.cn> Link: https://patch.msgid.link/20261027090913.37647-1-renpanpan@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
Audio control requests that set the volume sometimes time out on the HIK 1080P Camera (2bdf:0280). Adding a 1ms delay between control messages avoids the issue. Apply QUIRK_FLAG_CTL_MSG_DELAY_1M for this device. Signed-off-by: Kuangyi Chiang <ki.chiang65@gmail.com> Link: https://patch.msgid.link/20261029032856.7100-1-ki.chiang65@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
On the Huawei MateBook WRT-WX9 whose ALC256 codec reports subsystem ID 19e5:320d, headphone jack presence detection never works: the "Headphone Jack" control stays off, PipeWire keeps the speaker route active, and audio plays from the internal speakers and the headphones at the same time. Unplugging the headphones leaves the speakers working, so only insertion detection is broken. The existing quirk for this machine family is registered for 19e5:320f only, so this variant receives no fixup at all. ALC256 on this board needs ALC269_FIXUP_HEADSET_MODE; without it the codec's jack detection is never enabled and GET_PIN_SENSE on the headphone pin (0x21) always reads 0. Verified on the affected machine by booting with snd-hda-intel.model=headset-mode, which applies the same fixup: the "Headphone Jack" control then reports "on" when a plug is inserted, GET_PIN_SENSE on pin 0x21 returns 0x80000000, the "Headphones" port becomes available in PipeWire, and the speaker is muted automatically on insertion. HDMI audio profiles and the internal microphone keep working. Add a SND_PCI_QUIRK entry for 19e5:320d using ALC269_FIXUP_HEADSET_MODE. Signed-off-by: yinguobing <yinguobing@gmail.com> Link: https://patch.msgid.link/CA+2LKoO7He4DciWnx7qcwndwpZNxA4R1FMTpXGSTVK_k9J6Svg@mail.gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
The check of the loaded DSP indices and the call of the driver's
dsp_load callback in snd_hwdep_dsp_load() are not serialized. A hwdep
file descriptor can be shared among threads, or inherited across fork,
so two SNDRV_HWDEP_IOCTL_DSP_LOAD requests for the same index can both
observe the index as unloaded and enter the driver's callback
concurrently, even though the device itself is opened exclusively.
This breaks the assumption behind hw->dsp_loaded that a firmware index
is loaded only once. For example, snd-usb-usx2y hits
WARN_ON(usx2y->as04.buffer) in usx2y_async_seq04_init() and may
allocate the US-428 sequence URBs twice.
Serialize the check, the callback invocation and the bookkeeping with a
per-hwdep mutex, so that the second request returns -EBUSY.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Cc: stable@vger.kernel.org
Co-developed-by: Bin Yu <byu@xidian.edu.cn>
Signed-off-by: Bin Yu <byu@xidian.edu.cn>
Co-developed-by: Cheng Wen <wencheng@xidian.edu.cn>
Signed-off-by: Cheng Wen <wencheng@xidian.edu.cn>
Signed-off-by: YuanZhe Liu <25031212351@stu.xidian.edu.cn>
Link: https://patch.msgid.link/20261029084810.21910-2-25031212351@stu.xidian.edu.cn
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Use scope-based cleanup for the string returned by acpi_get_subsystem_id() instead of freeing it manually, consistent with the other cleanup annotations in aw88399_hda_acpi_probe() and aw88399_hda_init(). This is just a code cleanup, with no functional changes intended. Signed-off-by: Marco Giunta <marco_giunta@outlook.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/SN6PR19MB23035A048BCAF108507B59D0FC6E2@SN6PR19MB2303.namprd19.prod.outlook.com
The original AW88399 HDA driver submission accidentally didn't include my MODULE_AUTHOR() metadata in the I2C driver. Add it, matching the main HDA driver. Signed-off-by: Marco Giunta <marco_giunta@outlook.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/SN6PR19MB230341A84A4CACD260883C2EFC6E2@SN6PR19MB2303.namprd19.prod.outlook.com
Replace every EXPORT_SYMBOL_GPL(x) in aw88399-lib.c with
EXPORT_SYMBOL_NS_GPL(x, "SND_SOC_AW88399_LIB"), and add the corresponding
MODULE_IMPORT_NS("SND_SOC_AW88399_LIB") metadata to the ASoC and HDA
users of the library (aw88399.c, aw88399_hda.c, aw88399_hda_i2c.c).
This makes module dependencies explicit, consistent with the namespaced
exports in the HDA side-codec driver.
Signed-off-by: Marco Giunta <marco_giunta@outlook.it>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/SN6PR19MB2303BF7F0C1B1BE767351D98FC6E2@SN6PR19MB2303.namprd19.prod.outlook.com
It is not valid for a caller to try to drop a range of registers from the cache where the minimum register is greater than the maximum register, and doing so is likely to trigger bugs in the caches. Reject such invalid inputs. Link: https://patch.msgid.link/20261026-regmap-drop-region-min-max-v1-1-2c28637ede23@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
Validate that regcache_drop_region() rejects regions with a minimum greater than the maximum. Link: https://patch.msgid.link/20261026-regmap-drop-region-min-max-v1-2-2c28637ede23@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
Mark Brown <broonie@kernel.org> says: It is not valid for a caller to try to drop a range of registers from the cache where the minimum register is greater than the maximum register, and doing so is likely to trigger bugs in the caches. Reject such invalid inputs and add a KUnit test for it. Link: https://patch.msgid.link/20261026-regmap-drop-region-min-max-v1-0-2c28637ede23@kernel.org
rbtree cache syncs run with asynchronous I/O enabled, this is indicated by setting the async flag on the regmap. During a normal exit we reset to synchronous mode but if we exit early due to an error this restore is missed and the regmap is left in async mode. Reset the flag on error as well. Link: https://patch.msgid.link/20261026-regcache-rbtree-restore-sync-v1-1-2ef0e9d57ec6@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
When inserting a previously uncached register into the maple cache we check for adjacent blocks of registers above and below the register number we are inserting and merge there. Currently we check for reg - 1 and reg + 1 without worrying about if reg is 0 or UINT_MAX, meaning that the register number will overflow and we could consider a block at the other extremity of possible register numbers adjacent. Avoid doing this by clamping to 0 and UINT_MAX, if we do this then our search for an adjacent block will fail as we will be looking for the register number we are trying to insert. The current behaviour means that in the event that we do attempt to add 0 and merge it with a block at UINT_MAX kmalloc_array() rejects the allocation for being absurdly large, this results in us failing the write. Such register maps are very unlikely due to the normal patterns of register design and the fact that register numbers usually have less bits than an int. Link: https://patch.msgid.link/20261026-regmap-maple-bounds-v1-1-446f3eb8d406@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
PDM data-port terminals carry a wire word length defined by the stream payload, not by any host-side bps field. Skip the sdw_config_stream() bps mismatch check for SDW_STREAM_PDM. Behaviour for SDW_STREAM_PCM and SDW_STREAM_BPT is unchanged. Assisted-by: LLM Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://patch.msgid.link/20261020073856.1177749-6-srinivas.kandagatla@oss.qualcomm.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
Add __counted_by_ptr() to regmap_access_table::yes_ranges and regmap_access_table::no_ranges to improve access bounds checking via CONFIG_UBSAN_BOUNDS and CONFIG_FORTIFY_SOURCE. Signed-off-by: Thorsten Blum <blum@kernel.org> Link: https://patch.msgid.link/20261102113019.265822-2-blum@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
graph_count_c2c() takes two references that it never drops: the one from of_node_get(lnk) stored in port0, and the extra one added on top of the reference of_graph_get_next_port() already returns for port1. Both nodes are leaked once per codec2codec link parsed at probe time. Release port0 with the cleanup attribute and drop the redundant of_node_get() around the port1 lookup, so that the cleanup attribute balances the single reference of_graph_get_next_port() returns. This is the same ownership model audio_graph2_link_c2c() uses. Fixes: 5f281c3 ("ASoC: audio-graph-card2: use __free(device_node) for device node") Cc: stable@vger.kernel.org Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20261104024055.1508771-1-vulab@iscas.ac.cn Signed-off-by: Mark Brown <broonie@kernel.org>
Two entries of yc_acp_quirk_table[] are present twice, so the second copy of each can never match: dmi_first_match() returns the first hit and the rest of the table is only walked when that lookup fails. The LENOVO/21D0 entry was added twice in October 2022, once for the ThinkBook 14/16 Gen 4+ ARA (a450b5c) and again ten days later for the ThinkBook 14+ 2022 (a75481f). The ASUSTeK/BM1403CDA entry was added for the ExpertBook BM1403CDA (f200b2f) and then duplicated when that fix was merged into the development branch by commit 5a306be ("ASoC: Merge up fixes"), which kept both copies while resolving the conflict. Removing the redundant copies keeps the table easy to audit when new quirks are added; the set of matched machines is unchanged. Signed-off-by: Wei Lixiang <weilixiang@kylinos.cn> Reviewed-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20261104015058.6-1-weilixiang@kylinos.cn Signed-off-by: Mark Brown <broonie@kernel.org>
When the FLL is not already enabled, madera_fllhj_enable() takes a runtime PM reference and relies on madera_fllhj_disable() to drop it later. If madera_fllhj_apply() fails, the ENA bit is never set, so a subsequent disable sees no change and does not drop the reference, leaking it along with the device's active state. Drop the reference on the failure path and skip waiting for a lock that will never be asserted. Fixes: 6535e83 ("ASoC: cs47l92: Add codec driver for Cirrus Logic CS47L92") Cc: stable@vger.kernel.org Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://patch.msgid.link/20261104022814.1484284-1-vulab@iscas.ac.cn Signed-off-by: Mark Brown <broonie@kernel.org>
imx_sgtl5000_probe() takes a reference on the codec i2c device, but the successful probe path returns without releasing it. Only the error paths drop the reference, so every successful probe leaks the i2c client device. Release the reference once the card has been registered. Fixes: 81e8e49 ("ASoC: fsl: add sgtl5000 clock support for imx-sgtl5000") Cc: stable@vger.kernel.org Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> Reviewed-by: Valerio Setti <vsetti@baylibre.com> Link: https://patch.msgid.link/20261104022815.1484320-1-vulab@iscas.ac.cn Signed-off-by: Mark Brown <broonie@kernel.org>
Replace the open-coded subsys_initcall()/module_exit() platform driver registration with subsys_platform_driver(). No functional change. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> Link: https://patch.msgid.link/20261104113228.1634005-1-peng.fan@oss.nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
The cvt_ump_system_to_legacy() function switches on ump_message_status_code(), which returns only the upper 4 bits of the status. The case labels are the full 0xf1, 0xf2 and 0xf3 values, so they never match. MIDI Time Code, Song Position and Song Select are converted to the status byte alone, and their data bytes are lost. Switch on the full status byte in buf[0] instead. Both callers of snd_ump_convert_from_ump() pass the result on as is: the legacy rawmidi input of a UMP endpoint, and the MIDI 1.0 path of the f_midi2 USB gadget. Fixes: 0b5288f ("ALSA: ump: Add legacy raw MIDI support") Cc: stable@vger.kernel.org Signed-off-by: HyeongJun An <sammiee5311@gmail.com> Link: https://patch.msgid.link/20261029130538.1985867-1-sammiee5311@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
The Alienware m17 R3 (ALC289, PCI SSID 1028:09d1) has a second speaker pair, the bass speakers, on pin 0x17, which the BIOS leaves unconnected (0x411111f0). No PCI SSID quirk matches the machine, so it gets ALC269_FIXUP_DELL4_MIC_NO_PRESENCE from the fallback pin quirk table, and only the speakers on pin 0x14 play. Use ALC289_FIXUP_DUAL_SPK, as on the Alienware x16 R2 and Dell XPS 15 9510/9520: it sets pin 0x17 up as a speaker on DAC 0x02, so one volume control covers both pairs, and chains to ALC269_FIXUP_DELL4_MIC_NO_PRESENCE, so the headset mic setup is unchanged. Tested on an Alienware m17 R3 (BIOS 1.38.0), Linux 7.3 with this change applied: the bass speakers play, and volume and mute cover both pairs, also after suspend and resume. Headphones and a headset mic were not tested. I used Claude Code (Claude Opus 5.5) to find the unused pin, pick the existing fixup and write this patch and changelog; I did the listening tests myself. Cc: stable@vger.kernel.org Assisted-by: LLM Signed-off-by: Chris Simpson <chris@nilk.net> Link: https://patch.msgid.link/20261029-alc289-m17r3-v1-1-5d3eac605e7a@nilk.net Signed-off-by: Takashi Iwai <tiwai@suse.de>
Replace the open-coded packet count and transfer buffer length assignments with prepare_inurb(). Signed-off-by: Thorsten Blum <blum@kernel.org> Link: https://patch.msgid.link/20261030111200.114945-3-blum@kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
With CONFIG_PM_SLEEP enabled, cs46xx_dsp_create_scb() can return NULL if kmemdup() fails to allocate the SCB data saved for resume. cs46xx_dsp_scb_and_task_init() and _dsp_create_generic_scb() dereference the returned pointer without checking it, causing a NULL pointer dereference on allocation failure. Check both return values before accessing the SCB descriptors. Return -ENOMEM when creating the null SCB fails and propagate NULL from _dsp_create_generic_scb(). Found by Linux Verification Center (linuxtesting.org) with SVACE static analysis tool. Fixes: 41116e9 ("ALSA: cs46xx - Fix suspend/resume with new DSP") Cc: stable@vger.kernel.org Signed-off-by: Alex Kazinsky <a.kazinsky@ideco.ru> Link: https://patch.msgid.link/20261030142529.415697-1-a.kazinsky@ideco.ru Signed-off-by: Takashi Iwai <tiwai@suse.de>
One time in regmap and already a few times over the whole kernel the users want to extract a mask from the regmap field data type. Provide a helper and convert regmap core to use it. Others may follow later on. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://patch.msgid.link/20261105103533.1426533-1-andriy.shevchenko@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Configuration 2 of the Steinberg UR22C (0499:172f) exposes 6 playback and 8 capture channels over standard UAC2 descriptors with bInterfaceClass set to 0xFF. Because the interfaces are vendor-class, they fall into the Yamaha catch-all entry and QUIRK_AUTODETECT fails to set them up: create_auto_pcm_quirk() rejects 6-byte UAC2 format descriptors, and interface 0 (audiocontrol, 1 altsetting, 0 endpoints) is rejected by both auto-PCM and auto-MIDI paths, leaving interfaces 0-2 unbound with no PCM registered. Add a USB_DEVICE_VENDOR_SPEC composite entry before the Yamaha catch-all: - interface 0: QUIRK_DATA_STANDARD_MIXER - interfaces 1, 2: QUIRK_DATA_STANDARD_AUDIO (6-ch playback, 8-ch capture) - interfaces 3, 4: QUIRK_DATA_MIDI_YAMAHA (DIN MIDI and DSP mixer control; both carry Yamaha-style CS_INTERFACE jack descriptors with no CS_ENDPOINT descriptor) Configuration 1 uses bInterfaceClass 0x01 and is unaffected. The existing IMPLICIT_FB_FIXED_DEV(0x0499, 0x172f, 0x81, 2) entry in implicit.c applies to both configurations unchanged. Signed-off-by: Xinyu Wei <xinyuwei1024@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20261108130303.387288-2-xinyuwei1024@gmail.com
In configuration 2 of the Steinberg UR22C (0499:172f), the capture AS_GENERAL descriptor reports bmFormats = 0xffffffff, causing the driver to advertise U8, S32_LE, FLOAT_LE, MU_LAW, A_LAW and SPECIAL even though the hardware only supports 32-bit PCM (S32_LE). Because playback is implicit-feedback synced to the capture endpoint (0x81 on interface 2), hw_rule_format() restricts playback to the active capture stream's format. If capture is opened first with a non-S32_LE format such as FLOAT_LE, the intersection with playback's S32_LE-only format mask is empty and playback fails to open with -EINVAL. Clamp bmFormats to UAC2 PCM (1) in parse_audio_format_i_type() when chip->usb_id is 0499:172f and format == 0xffffffff, matching the existing DS4201 workaround below it. Signed-off-by: Xinyu Wei <xinyuwei1024@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20261108130303.387288-3-xinyuwei1024@gmail.com
parse_uint() passes the remaining input string to kstrtoull(). When the input contains comma-separated fields, the string contains both the numeric value and the following fields. For example, with: device=1,subdevice=0,name=Master kstrtoull() receives "1,subdevice=0,name=Master" and fails to parse the numeric value. Stop parsing at the next comma and pass only the numeric field to kstrtouint(). Make all parse_*() functions return the end of the current substring, leaving delimiter handling to set_led_id(). Temporarily terminate the numeric substring in parse_uint() before calling kstrtouint(). This allows numeric fields to be parsed correctly in comma-separated input. Fixes: a135dfb ("ALSA: led control - add sysfs kcontrol LED marking layer") Signed-off-by: Sreeraj S Kurup <sreekuttan2156239@gmail.com> Link: https://patch.msgid.link/20261109163531.2639-1-sreekuttan2156239@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
The legacy-to-UMP converter keeps separate RPN and NRPN selector flags. When a stream changes selector type without sending data first, both flags remain set and fill_rpn() gives RPN priority, so subsequent NRPN data is emitted as RPN. Clear the previous selector flag after flushing any pending parameter data and before recording the newly selected parameter type. Fixes: 0b5288f ("ALSA: ump: Add legacy raw MIDI support") Cc: stable@vger.kernel.org Signed-off-by: Alyandra Zahran Nadhir <alyandra5b@gmail.com> [HyeongJun An: capitalize the subject, add Fixes and stable Cc] Signed-off-by: HyeongJun An <sammiee5311@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/3ed25a99e07b8cd803f9bd6eb0f88ef00ae23f4b.1794141913.git.sammiee5311@gmail.com
The sequencer MIDI 2.0 converter tracks RPN and NRPN selection flags separately. When the controller stream switches selector type, the previous flag remains set; fill_rpn() checks RPN first and can encode subsequent NRPN data as RPN. Flush pending parameter data with the old selector, then clear the opposite selector before recording new state in both CC and Control14 event paths. Fixes: e9e0281 ("ALSA: seq: Automatic conversion of UMP events") Cc: stable@vger.kernel.org Signed-off-by: Alyandra Zahran Nadhir <alyandra5b@gmail.com> [HyeongJun An: drop the KUnit test, fix the subject, add Fixes and stable Cc] Signed-off-by: HyeongJun An <sammiee5311@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/3c5cb0ef0023c4d2e835805498a14751a92feda0.1794141913.git.sammiee5311@gmail.com
The MIDI 1.0 to UMP converter keeps the RPN/NRPN selection and the Data Entry values per channel. Since commit e6ce8a2 ("ALSA: ump: Transmit RPN/NRPN message at each MSB/LSB data reception"), a CC 98 to 101 also sends the pending data. The state handling has a few problems: - Data Entry after a Null RPN, or before any selection, stays pending. The next RPN/NRPN selection then sends it, with the number only half updated. - The fill_rpn() clears the selection after each send. A second Data Entry for the same RPN is not sent and ends up as above. - A Null NRPN is not handled, and its data goes to NRPN 127/127. Keep the selection after a send and clear only the data, and drop the data when nothing is selected. On a Null RPN or NRPN, clear the selection and the data but keep the 7f/7f numbers, as a MIDI 1.0 receiver does. Commit 50a6dd1 ("ALSA: ump: Explicitly reset RPN with Null RPN") reset them to 0, so when the LSB was already 127, the second message of a Null selected RPN 0/127 again. This follows the UMP spec (M2-104-UM D.3.3), which holds the latest RPN/NRPN numbers and does not translate an RPN/NRPN Null. Fixes: 0b5288f ("ALSA: ump: Add legacy raw MIDI support") Fixes: e6ce8a2 ("ALSA: ump: Transmit RPN/NRPN message at each MSB/LSB data reception") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/all/20261104121508.3972314-1-sammiee5311@gmail.com/ Signed-off-by: HyeongJun An <sammiee5311@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/22377a352b928cf3db750c32daf54250fb9477ff.1794141913.git.sammiee5311@gmail.com
The sequencer converts MIDI 1.0 CC and CONTROL14 events to MIDI 2.0 UMP with the same RPN/NRPN state handling as the UMP core helper. It has the same problems: - Data Entry without a selection is sent at the next RPN/NRPN selection, with the number only half updated. - A repeated Data Entry for the same RPN is not sent right away and ends up as above. - A Null NRPN is not handled. Apply the same fix as for the UMP core helper to both the CC and the CONTROL14 paths. Fixes: e9e0281 ("ALSA: seq: Automatic conversion of UMP events") Fixes: a4ff92f ("ALSA: seq: ump: Transmit RPN/NRPN message at each MSB/LSB data reception") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/all/20261104121508.3972314-1-sammiee5311@gmail.com/ Signed-off-by: HyeongJun An <sammiee5311@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/81e86fb562df29953314f754b1daace962e85566.1794141913.git.sammiee5311@gmail.com
The sequencer converts MIDI 1.0 CC and CONTROL14 events to UMP for UMP clients. Add a test that sends such events from a legacy client to a UMP MIDI 2.0 client and checks the RPN/NRPN packets it receives, and one that checks that a UMP MIDI 1.0 client gets the CCs as they are. The cases cover switching between RPN and NRPN, Data Entry sent with nothing selected, repeated Data Entry, Null RPN and NRPN, and the CONTROL14 path. Some of them come from the KUnit test in Alyandra Zahran Nadhir's patch. The test skips when /dev/snd/seq can't be opened or the kernel has no UMP support in the sequencer. Link: https://lore.kernel.org/all/20261107111056.667-1-alyandra5b@gmail.com/ Signed-off-by: HyeongJun An <sammiee5311@gmail.com> Link: https://patch.msgid.link/20261110012213.740288-1-sammiee5311@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
The compat ioctl code calls the control's info callback directly in get_ctl_type() to get the element type and count. Unlike the normal control info path, this code does not validate the information returned by the callback. The compat read and write handlers use the returned type and count to access fixed-size value buffers and calculate copy sizes. An invalid type or an element count larger than the supported limit can cause these handlers to access memory outside the expected buffer boundaries. Call snd_ctl_check_elem_info() after the info callback to validate the returned type and count before using them. This keeps the compat ioctl path from using invalid control metadata when accessing its value buffers. Signed-off-by: Sreeraj S Kurup <sreekuttan2156239@gmail.com> Link: https://patch.msgid.link/20261108141219.7655-1-sreekuttan2156239@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
…1112 # Conflicts: # sound/soc/soc-core.c
bardliao
requested review from
bhiregoudar,
dbaluta,
jack-cy-yu,
kv2019i,
lgirdwood,
oder-chiou,
plbossart,
ranj063,
shumingfan and
ujfalusi
as code owners
November 12, 2026 05:25
There was a problem hiding this comment.
🟡 Changes recommended
Active issues leave stale RPN/NRPN state after controller resets and a dangling routing_data pointer after component registration fails, risking unintended parameter writes and use-after-free.
2 open issues
What changed in this PR
This upstream merge updates the Linux sound subsystem with hardware support, PCM lifetime protection, driver fixes, and related regmap, SoundWire, and SPI changes.
Changes:
- Adds AMD ACP7x SoundWire machine support, Cadence I2S build integration and bindings, and device-specific audio quirks.
- Improves resource cleanup, synchronization, power management, buffer handling, and MIDI conversion.
- Extends selftests and documentation, updates shared APIs, and removes Tegra audio binding schemas.
| File | Description |
|---|---|
| tools/testing/selftests/alsa/test-pcmtest-driver.c | Adds capture-pause and callback-error tests. |
| tools/testing/selftests/alsa/Makefile | Includes the UMP sequencer test target. |
| tools/testing/selftests/alsa/.gitignore | Ignores the UMP test executable. |
| sound/usb/usx2y/usX2Yhwdep.c | Blocks DSP loading after initialization failure. |
| sound/usb/usx2y/usbusx2yaudio.c | Adds packet bounds and minimum-buffer constraints. |
| sound/usb/usx2y/usb_stream.c | Initializes URB state before submission. |
| sound/usb/usx2y/us122l.c | Guards missing interfaces and stream mappings. |
| sound/usb/quirks.c | Adds Yamaha and camera device flags. |
| sound/usb/quirks-table.h | Adds device interface and naming quirks. |
| sound/usb/qcom/qc_audio_offload.c | Handles QMI initialization failures. |
| sound/usb/mixer_maps.c | Hides broken XiiSound hardware volume controls. |
| sound/usb/midi.c | Classifies endpoint stalls as recoverable errors. |
| sound/usb/line6/capture.c | Constrains buffers and rejects oversized packets. |
| sound/usb/format.c | Handles malformed UR22C format descriptors. |
| sound/usb/caiaq/input.c | Frees the input URB on failure. |
| sound/usb/bcd2000/bcd2000.c | Protects the output URB during close. |
| sound/soc/sunxi/sun50i-dmic.c | Powers volume accesses and adjusts clock ordering. |
| sound/soc/sunxi/sun4i-spdif.c | Powers status accesses and adjusts clock ordering. |
| sound/soc/sunxi/Kconfig | Selects MMIO regmap for DMIC. |
| sound/soc/stm/stm32_spdifrx.c | Uses the DMA callback setter. |
| sound/soc/sti/uniperif_player.c | Uses managed clock acquisition. |
| sound/soc/sprd/sprd-pcm-dma.c | Uses the DMA callback setter. |
| sound/soc/sprd/sprd-pcm-compress.c | Uses the DMA callback setter. |
| sound/soc/sof/amd/pci-acp7x.c | Connects ACP7x SoundWire machine tables. |
| sound/soc/sof/amd/acp.c | Reuses probe-failure cleanup. |
| sound/soc/soc-internal.h | Adds internal card-management declarations. |
| sound/soc/samsung/snow.c | Releases the clock after registration failure. |
| sound/soc/renesas/siu_pcm.c | Uses the DMA callback setter. |
| sound/soc/renesas/fsi.c | Uses the DMA callback setter. |
| sound/soc/qcom/qdsp6/q6usb.c | Releases the acquired AFE port. |
| sound/soc/qcom/qdsp6/q6routing.c | Makes routing allocation device-managed. |
| sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | Initializes and completes channel maps. |
| sound/soc/qcom/qdsp6/q6apm-dai.c | Cleans up graphs on open failures. |
| sound/soc/Makefile | Includes Cadence audio builds. |
| sound/soc/Kconfig | Includes Cadence audio configuration. |
| sound/soc/intel/boards/sof_cirrus_common.c | Copies device names before releasing references. |
| sound/soc/generic/audio-graph-card2.c | Balances device-tree node references. |
| sound/soc/fsl/Kconfig | Adds required driver dependencies. |
| sound/soc/fsl/imx-sgtl5000.c | Balances clock and codec-device references. |
| sound/soc/fsl/imx-audmux.c | Uses the subsystem driver-registration macro. |
| sound/soc/fsl/fsl_esai.c | Disables recovery work before powering down. |
| sound/soc/fsl/fsl_asrc_m2m.c | Updates DMA callbacks and channel access. |
| sound/soc/fsl/fsl_asrc_dma.c | Updates DMA callbacks and error-pointer checks. |
| sound/soc/codecs/tlv320adcx140.c | Initializes the GPI input array. |
| sound/soc/codecs/sn624x-sdca-sdw.c | Uses probe-aware error reporting. |
| sound/soc/codecs/rt5677.c | Makes GPIO registration device-managed. |
| sound/soc/codecs/pcm512x.c | Unwinds power resources on resume failure. |
| sound/soc/codecs/pcm3168a.c | Requests exclusive reset-GPIO ownership. |
| sound/soc/codecs/madera.c | Balances power references after FLL failure. |
| sound/soc/codecs/cs35l41.c | Uses shared reset-and-boot handling. |
| sound/soc/codecs/cs35l41-lib.c | Adds shared boot polling and reset helpers. |
| sound/soc/codecs/cpcap.c | Manages the codec device-tree node reference. |
| sound/soc/codecs/aw88399.c | Imports the AW88399 library namespace. |
| sound/soc/codecs/aw88399-lib.c | Namespaces library exports. |
| sound/soc/cdns/Makefile | Defines Cadence I2S build targets. |
| sound/soc/cdns/Kconfig | Adds Cadence I2S configuration options. |
| sound/soc/amd/yc/acp6x-mach.c | Removes duplicate machine quirks. |
| sound/soc/amd/mach-config.h | Declares ACP7x SoundWire machine tables. |
| sound/soc/amd/acp/soc_amd_sdw_common.h | Defines ACP7x links, ports, and DMIC selection. |
| sound/soc/amd/acp/Makefile | Builds ACP7x machine matching. |
| sound/soc/amd/acp/amd-acp7x-acpi-match.c | Adds ACP7B/7F codec topology tables. |
| sound/soc/amd/acp/acp-sdw-mach-common.c | Maps ACP7x endpoints to CPU ports. |
| sound/soc/amd/acp/acp-sdw-legacy-mach.c | Cleans up links after allocation failures. |
| sound/pci/vx222/vx222_ops.c | Removes an always-successful return value. |
| sound/pci/rme9652/hdspm.c | Locks interrupt-time control-register updates. |
| sound/pci/intel8x0.c | Corrects PCM stream allocation counts. |
| sound/pci/ice1712/ice1724.c | Removes redundant initialization error handling. |
| sound/pci/ice1712/ice1712.h | Adds a board EEPROM initialization hook. |
| sound/pci/ice1712/ice1712.c | Separates EEPROM setup from chip initialization. |
| sound/pci/ice1712/ews.h | Adds PHASE 88 configuration constants. |
| sound/pci/cs46xx/dsp_spos.c | Checks null-SCB allocation. |
| sound/pci/cs46xx/dsp_spos_scb_lib.c | Checks generic SCB allocation. |
| sound/pci/ali5451/ali5451.c | Removes redundant reset error handling. |
| sound/isa/cs423x/cs4236.c | Simplifies MPU initialization returns. |
| sound/i2c/cs8427.c | Returns the requested IEC958 status buffer. |
| sound/hda/core/controller.c | Handles empty capabilities and clears freed buffers. |
| sound/hda/core/bus.c | Initializes the codec-binding mutex. |
| sound/hda/controllers/tegra.c | Uses serialized HDA card registration. |
| sound/hda/controllers/intel.c | Uses serialized HDA card registration. |
| sound/hda/controllers/cix-ipbloq.c | Uses serialized HDA card registration. |
| sound/hda/controllers/acpi.c | Uses serialized HDA card registration. |
| sound/hda/common/sysfs.c | Serializes card registration after reconfiguration. |
| sound/hda/common/hda_local.h | Updates analog multiout return types. |
| sound/hda/common/codec.c | Makes analog multiout helpers return void. |
| sound/hda/common/bind.c | Serializes binding and waits for PCM files. |
| sound/hda/codecs/side-codecs/tas2781_hda.c | Validates calibration and honors custom addresses. |
| sound/hda/codecs/side-codecs/cs35l56_hda.c | Tracks DSP state during reload and unbind. |
| sound/hda/codecs/side-codecs/cs35l41_hda.c | Uses shared reset-and-boot helpers. |
| sound/hda/codecs/side-codecs/cs35l41_hda_property.c | Adds an HP amplifier configuration. |
| sound/hda/codecs/side-codecs/aw88399_hda.c | Automates ID cleanup and imports library symbols. |
| sound/hda/codecs/side-codecs/aw88399_hda_i2c.c | Updates namespace imports and attribution. |
| sound/hda/codecs/realtek/alc662.c | Adds an ASUS amplifier depop sequence. |
| sound/hda/codecs/hdmi/tegrahdmi.c | Recognizes Tegra268 HDMI audio. |
| sound/hda/codecs/hdmi/nvhdmi.c | Restores and isolates converter assignments. |
| sound/hda/codecs/generic.h | Adds independent second-digital-output state. |
| sound/hda/codecs/generic.c | Implements independent digital-output PCMs. |
| sound/hda/codecs/conexant.c | Adds an HP ZBook mute-LED quirk. |
| sound/hda/codecs/ca0132.c | Restores audio registers after LED transmission. |
| sound/firewire/tascam/tascam-stream.c | Corrects direction-specific resource speeds. |
| sound/core/ump_convert.c | Fixes system status and parameter-selection conversion. |
| sound/core/sound.c | Adds file-tracked minor lookup and type validation. |
| sound/core/sound_oss.c | Adds file-tracked OSS minor lookup. |
| sound/core/seq/seq_ump_convert.c | Preserves MIDI parameter selections between values. |
| sound/core/pcm.c | Rejects disconnected opens and incompatible OSS attachment. |
| sound/core/pcm_native.c | Tracks files earlier and permits mapped-buffer refinement. |
| sound/core/pcm_local.h | Shares the OSS-stream helper. |
| sound/core/pcm_dmaengine.c | Uses the DMA callback setter. |
| sound/core/oss/pcm_plugin.c | Corrects partial-transfer frame conversion. |
| sound/core/oss/pcm_oss.c | Uses file-tracked PCM lookup. |
| sound/core/oss/mixer_oss.c | Handles unavailable recording-source indices. |
| sound/core/memalloc.c | Frees the correct buffer after mapping failure. |
| sound/core/init.c | Tracks device files and provides close synchronization. |
| sound/core/info.c | Bounds card-directory name formatting. |
| sound/core/hwdep.c | Serializes DSP loading. |
| sound/core/control.c | Clears user-supplied control IDs before addition. |
| sound/core/control_led.c | Fixes LED mode synchronization and ID parsing. |
| sound/core/control_compat.c | Validates compatibility control metadata. |
| include/sound/soc.h | Aliases the renamed card-control API. |
| include/sound/soc-card.h | Declares the card-control API. |
| include/sound/pcm.h | Adds PCM disconnect state. |
| include/sound/hwdep.h | Adds the DSP-loading mutex. |
| include/sound/hdaudio.h | Adds the codec-binding mutex. |
| include/sound/hda_codec.h | Declares serialized HDA card registration. |
| include/sound/cs35l41.h | Declares shared boot helpers. |
| include/sound/core.h | Declares device-file lifetime helpers. |
| include/linux/spi/spi-mem.h | Defines panic-write operation and capability flags. |
| include/linux/regmap.h | Adds range annotations and a field-mask helper. |
| drivers/spi/spi-mem.c | Adds a restricted panic-write execution path. |
| drivers/soundwire/stream.c | Exempts PDM streams from bit-width matching. |
| drivers/base/regmap/regmap.c | Uses the register-field mask helper. |
| drivers/base/regmap/regmap-kunit.c | Tests reversed cache-drop bounds. |
| drivers/base/regmap/regcache.c | Rejects reversed cache-drop ranges. |
| drivers/base/regmap/regcache-rbtree.c | Clears asynchronous state on sync failure. |
| drivers/base/regmap/regcache-maple.c | Prevents adjacent-register index overflow. |
| Documentation/sound/hd-audio/notes.rst | Documents independent digital outputs. |
| Documentation/sound/codecs/cs35l56.rst | Clarifies calibration diagnostics. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.yaml | Removes the Tegra WM9712 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8994.yaml | Removes the Tegra WM8994 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8962.yaml | Removes the Tegra WM8962 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.yaml | Removes the Tegra WM8903 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.yaml | Removes the Tegra WM8753 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.yaml | Removes the Tegra TrimSlice schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.yaml | Removes the Tegra SGTL5000 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.yaml | Removes the Tegra RT5677 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.yaml | Removes the Tegra RT5640 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5631.yaml | Removes the Tegra RT5631 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.yaml | Removes the Tegra MAX98090 schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max9808x.yaml | Removes the Tegra MAX9808x schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-cpcap.yaml | Removes the Tegra CPCAP schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-common.yaml | Removes the shared Tegra audio schema. |
| Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.yaml | Removes the Tegra ALC5632 schema. |
| Documentation/devicetree/bindings/sound/cix,sky1-i2s-sc.yaml | Defines the CIX single-channel I2S binding. |
| Documentation/devicetree/bindings/sound/cix,sky1-i2s-mc.yaml | Defines the CIX multichannel I2S binding. |
Review effort: Balanced
| struct device *dev = &pdev->dev; | ||
|
|
||
| routing_data = kzalloc_obj(*routing_data); | ||
| routing_data = devm_kzalloc_obj(dev, *routing_data); |
Comment on lines
+336
to
+337
| /* keep the RPN/NRPN selection for a following Data Entry */ | ||
| reset_rpn_data(cc); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Upstream merge