[RFC PATCH 00/16] ALSA: usb-audio: Audient driver and iD14 MkI support

From: Will Porter

Date: Fri Nov 06 2026 - 11:38:24 EST


Hi Christian,

On Wed, Nov 04, 2026 at 12:01:47AM +0100, Christian Ruppert wrote:
> I guess that depends how we define force_set. In my mind it's literally
> force set, i.e. for write-only values we must explicitly specify both
> FORCE_SET and CACHE.

That definition makes sense to me. With it, the read before the write
is fine: an uncached FORCE_SET control is one the device can read.

I also prefer the current return value. If a put always returned 1,
the kernel would send a change event even when alsactl restores an
unchanged value. So I dropped my diff. Patch 10 has only the comment
typo fixed and the blank line removed.

> Is there a reason 4, 5 and 6 are separate? They should all be one big
> update in the device definition tables without any code changes, right?

Right, they add only table entries, the device ID and the map lines.
They are now one patch (15 of this series).

> Happy to review and test an RFC of the complete series until he's back and
> takes a decision.

Thanks, here it is: your 11 RFC V2 patches, then the five iD14
patches. It sits on top of your four mixer_evo fixes. I can rebase
it once Takashi decides how those go in.

Patches 12 to 16:
- 12 adds a step size to integer controls (the iD14 volumes move in
1 dB steps).
- 13 adds enumerated controls (routing, iD key function, talkback
source, digital input mode).
- 14 gives the iD14 MkI its own mixer map; the MkII keeps the shared
one.
- 15 adds the iD14 MkI controls: monitor section, routing, mixer
matrix and the write-only controls.
- 16 replaces the generic FU 12 control, whose GET returns stale data.

Base: sound master 603a4df9e6ae with your four fixes (Patchwork series
1193966). Each patch builds on its own with W=1 without warnings. On
an iD14 MkI (7.2.11 stable), the complete series passed the same read
and write checks as RFC V2, change events included.

Thanks,
Will

Christian Ruppert (11):
ALSA: rename mixer_evo to mixer_audient
ALSA: mixer_audient: explicitly define full control names
ALSA: mixer_audient: clarify USB control message definition
ALSA: mixer_audient: Add length check to USB transfer
ALSA: mixer_audient: make USB control transfer size configurable
ALSA: mixer_audient: Allow arbitrary boolean control values
ALSA: mixer_audient: Add integer range checks
ALSA: mixer_audient: Add control initialization at probe
ALSA: mixer_audient: Add readback-free parameter set
ALSA: mixer_audient: add control value caching
ALSA: mixer_audient: Create matrix programmatically

Will Porter (5):
ALSA: mixer_audient: Add a step size to integer controls
ALSA: mixer_audient: Add enumerated controls
ALSA: usb-audio: Give the Audient iD14 MkI its own mixer map
ALSA: mixer_audient: Add Audient iD14 MkI controls
ALSA: mixer_audient: Replace the Audient iD14 MkI FU 12 control

MAINTAINERS | 7 +-
sound/usb/Makefile | 2 +-
sound/usb/mixer_audient.c | 1342 +++++++++++++++++++++++++++++++++++++
sound/usb/mixer_audient.h | 13 +
sound/usb/mixer_evo.c | 526 ---------------
sound/usb/mixer_evo.h | 12 -
sound/usb/mixer_maps.c | 10 +-
sound/usb/mixer_quirks.c | 7 +-
8 files changed, 1374 insertions(+), 545 deletions(-)
create mode 100644 sound/usb/mixer_audient.c
create mode 100644 sound/usb/mixer_audient.h
delete mode 100644 sound/usb/mixer_evo.c
delete mode 100644 sound/usb/mixer_evo.h


base-commit: 603a4df9e6ae60a26adb335fe8d8f6e8f19e5d8e
prerequisite-patch-id: 522b05214a3c615ec30e50574b2bcc9c6c55dc3c
prerequisite-patch-id: 4c58588cb3fd46832de61018d60452ad1f5de1f9
prerequisite-patch-id: e15c90c1732110d25b16d26b4f919715cae7f5be
prerequisite-patch-id: 02c9ab9c3fd4cc8617060c81eed06affae2da0d2
--
2.47.3