summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-04-24 11:49:20 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2026-04-24 11:49:20 -0700
commit1fe93b2a2ace9bba2cb90920f9300834e537665c (patch)
treec6c53d4a4348603d1da32922903c9e35b2045b40 /drivers/base
parentcf950766e96e36c90871d955cfd2a2c1feddba37 (diff)
parent2724fbc90e5c133fbbd030e72fe8a3869a20df08 (diff)
Merge tag 'sound-fix-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "Here are the rest of small updates for 7.1-rc1. All small fixes mostly for device-specific issues or regressions. Core: - Fix a potential data race in fasync handling USB-audio: - New device support: Line6 POD HD PRO, NexiGo N930W webcam - Fixes for Audio Advantage Micro II SPDIF switch and E-MU sample rates - Limit UAC2 rate parsing to prevent potential overflows HD-Audio: - Device-specific quirks for HP, Acer, and Honor laptops - Fix for TAS2781 SPI device abnormal sound - Move Intel firmware loading into probe work to avoid stalling ASoC: - New support for TI TAS5832 - Fixes for SoundWire SDCA/DisCo boolean parsing - Driver-specific fixes for Intel SOF, ES8311, RT1320, and PXA2xx Misc: - Fixes for resource leaks and data races in 6fire, caiaq, als4000, and pcmtest drivers" * tag 'sound-fix-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (41 commits) Revert "ALSA: pcmtest: fix reference leak on failed device registration" ASoC: tas2781: Add tas5832 support ASoC: dt-bindings: ti,tas2781: Add TAS5832 support ALSA: usb-audio: Fix Audio Advantage Micro II SPDIF switch ALSA: usb-audio: Avoid false E-MU sample-rate notifications ASoC: sdw_utils: cs42l43: allow spk component names to be combined ASoC: qcom: x1e80100: limit speaker volumes ALSA: hda/realtek - Add mute LED support for HP Victus 15-fa2xxx ALSA: pcmtest: Fix resource leaks in module init error paths ALSA: usb-audio/line6: Add support for POD HD PRO ALSA: hda/realtek: Add LED fixup for HP EliteBook 6 G2a Laptops ASoC: SDCA: Fix reading of mipi-sdca-control-deferrable regmap: sdw-mbq: Allow defers on undeferrable controls Revert "ALSA: usb-audio: Add quirk for SmartlinkTechnology M01" ALSA: als4000: Fix capture trigger chip->mode race ALSA: core: Fix potential data race at fasync handling ALSA: hda/tas2781: Fix sound abnormal issue on some SPI device ALSA: hda/realtek: add quirk for Acer Nitro 16 AN16-41 ALSA: caiaq: Fix control_put() result and cache rollback ALSA: pcmtest: fix reference leak on failed device registration ...
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regmap-sdw-mbq.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/drivers/base/regmap/regmap-sdw-mbq.c b/drivers/base/regmap/regmap-sdw-mbq.c
index 6a61629f5f89..4533fe793c5f 100644
--- a/drivers/base/regmap/regmap-sdw-mbq.c
+++ b/drivers/base/regmap/regmap-sdw-mbq.c
@@ -74,7 +74,7 @@ static int regmap_sdw_mbq_poll_busy(struct sdw_slave *slave, unsigned int reg,
static int regmap_sdw_mbq_write_impl(struct sdw_slave *slave,
unsigned int reg, unsigned int val,
- int mbq_size, bool deferrable)
+ int mbq_size)
{
int shift = mbq_size * BITS_PER_BYTE;
int ret;
@@ -88,17 +88,14 @@ static int regmap_sdw_mbq_write_impl(struct sdw_slave *slave,
return ret;
}
- ret = sdw_write_no_pm(slave, reg, val & 0xff);
- if (deferrable && ret == -ENODATA)
- return -EAGAIN;
-
- return ret;
+ return sdw_write_no_pm(slave, reg, val & 0xff);
}
static int regmap_sdw_mbq_write(void *context, unsigned int reg, unsigned int val)
{
struct regmap_mbq_context *ctx = context;
struct sdw_slave *slave = ctx->sdw;
+ struct device *dev = ctx->dev;
bool deferrable = regmap_sdw_mbq_deferrable(ctx, reg);
int mbq_size = regmap_sdw_mbq_size(ctx, reg);
int ret;
@@ -113,13 +110,16 @@ static int regmap_sdw_mbq_write(void *context, unsigned int reg, unsigned int va
* process a single wait/timeout on function busy and a single retry
* of the transaction.
*/
- ret = regmap_sdw_mbq_write_impl(slave, reg, val, mbq_size, deferrable);
- if (ret == -EAGAIN) {
+ ret = regmap_sdw_mbq_write_impl(slave, reg, val, mbq_size);
+ if (ret == -ENODATA) {
+ if (!deferrable)
+ dev_warn(dev, "Defer on undeferrable control: %x\n", reg);
+
ret = regmap_sdw_mbq_poll_busy(slave, reg, ctx);
if (ret)
return ret;
- ret = regmap_sdw_mbq_write_impl(slave, reg, val, mbq_size, false);
+ ret = regmap_sdw_mbq_write_impl(slave, reg, val, mbq_size);
}
return ret;
@@ -127,18 +127,14 @@ static int regmap_sdw_mbq_write(void *context, unsigned int reg, unsigned int va
static int regmap_sdw_mbq_read_impl(struct sdw_slave *slave,
unsigned int reg, unsigned int *val,
- int mbq_size, bool deferrable)
+ int mbq_size)
{
int shift = BITS_PER_BYTE;
int read;
read = sdw_read_no_pm(slave, reg);
- if (read < 0) {
- if (deferrable && read == -ENODATA)
- return -EAGAIN;
-
+ if (read < 0)
return read;
- }
*val = read;
@@ -158,6 +154,7 @@ static int regmap_sdw_mbq_read(void *context, unsigned int reg, unsigned int *va
{
struct regmap_mbq_context *ctx = context;
struct sdw_slave *slave = ctx->sdw;
+ struct device *dev = ctx->dev;
bool deferrable = regmap_sdw_mbq_deferrable(ctx, reg);
int mbq_size = regmap_sdw_mbq_size(ctx, reg);
int ret;
@@ -172,13 +169,16 @@ static int regmap_sdw_mbq_read(void *context, unsigned int reg, unsigned int *va
* process a single wait/timeout on function busy and a single retry
* of the transaction.
*/
- ret = regmap_sdw_mbq_read_impl(slave, reg, val, mbq_size, deferrable);
- if (ret == -EAGAIN) {
+ ret = regmap_sdw_mbq_read_impl(slave, reg, val, mbq_size);
+ if (ret == -ENODATA) {
+ if (!deferrable)
+ dev_warn(dev, "Defer on undeferable control: %x\n", reg);
+
ret = regmap_sdw_mbq_poll_busy(slave, reg, ctx);
if (ret)
return ret;
- ret = regmap_sdw_mbq_read_impl(slave, reg, val, mbq_size, false);
+ ret = regmap_sdw_mbq_read_impl(slave, reg, val, mbq_size);
}
return ret;