Skip to content

Merge/sound upstream 20261112 - #6035

Open
bardliao wants to merge 201 commits into
thesofproject:topic/sof-devfrom
bardliao:merge/sound-upstream-20261112
Open

bardliao wants to merge 201 commits into
thesofproject:topic/sof-devfrom
bardliao:merge/sound-upstream-20261112

Conversation

@bardliao

Copy link
Copy Markdown
Collaborator

Upstream merge

Sasha Levin and others added 30 commits October 31, 2026 16:33
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>
andy-shev and others added 17 commits November 8, 2026 12:56
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>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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 thread sound/core/ump_convert.c
Comment on lines +336 to +337
/* keep the RPN/NRPN selection for a following Data Entry */
reset_rpn_data(cc);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.