mbox series

[v2,0/2] ALSA: usb-audio: Add basic support for RME Digiface USB

Message ID 20240903-rme-digiface-v2-0-71b06c912e97@asahilina.net (mailing list archive)
Headers show
Series ALSA: usb-audio: Add basic support for RME Digiface USB | expand

Message

Asahi Lina Sept. 3, 2024, 10:52 a.m. UTC
Hi everyone,

This series adds basic support for the RME Digiface USB interface. This
is a 4x ADAT I/O interface with an extra headphones output and support
for S/PDIF mode.

There are 3 streaming configurations:

- 32in/34out at 1x speed mode
- 16in/18out at 2x speed mode
- 8in/10out at 4x speed mode

The appropriate speed mode is automatically set based on the PCM rate,
and this governs the available channel count.

The first commit adds basic init and streaming support. This is enough
to use the interface in its default settings (ADAT outputs, internal
sync) using the ALSA PCM.

The second commit adds basic mixer controls to set up the I/O features
(output modes, sync source) and report I/O status.

This series does not implement the output faders, matrix mixer, or input
level meters. These features are more useful when the interface is used
as a router (possibly stand-alone), and are not really something that
can be exposed via ALSA mixer controls usable via something like
alsamixer (the matrix mixer has up to 2048 possible mixer nodes). Since
we expect users to use a dedicated control app, the intent is that the
app directly controls these features via the libusb API. This is similar
to how things work with some FireWire interfaces (ffado-mixer) today.

Of course, there is room for extending the mixer interface to add more
controls in the future, once we settle on a mechanism to expose
complex/large matrix mixers.

Signed-off-by: Asahi Lina <lina@asahilina.net>
---
Changes in v2:
- Fix BIT(32) that was intended to be BIT(31) (for 32-bit platforms)
- Rebased on sound/for-next and rewrote quirk using macros
- Removed USB_ENDPOINT_USAGE_IMPLICIT_FB since the sync info is explicitly
  specified.
- Link to v1: https://lore.kernel.org/r/20240902-rme-digiface-v1-0-6e88472a2744@asahilina.net

---
Asahi Lina (1):
      ALSA: usb-audio: Add mixer quirk for RME Digiface USB

Cyan Nyan (1):
      ALSA: usb-audio: Add quirk for RME Digiface USB

 sound/usb/mixer_quirks.c | 413 +++++++++++++++++++++++++++++++++++++++++++++++
 sound/usb/quirks-table.h | 172 +++++++++++++++++++-
 sound/usb/quirks.c       |  58 +++++++
 3 files changed, 642 insertions(+), 1 deletion(-)
---
base-commit: a2f5a48557e856a4d166e0af054490893d767d18
change-id: 20240902-rme-digiface-cc14c71cd2ea

Cheers,
~~ Lina

Comments

Takashi Iwai Sept. 3, 2024, 4:06 p.m. UTC | #1
On Tue, 03 Sep 2024 12:52:28 +0200,
Asahi Lina wrote:
> 
> Hi everyone,
> 
> This series adds basic support for the RME Digiface USB interface. This
> is a 4x ADAT I/O interface with an extra headphones output and support
> for S/PDIF mode.
> 
> There are 3 streaming configurations:
> 
> - 32in/34out at 1x speed mode
> - 16in/18out at 2x speed mode
> - 8in/10out at 4x speed mode
> 
> The appropriate speed mode is automatically set based on the PCM rate,
> and this governs the available channel count.
> 
> The first commit adds basic init and streaming support. This is enough
> to use the interface in its default settings (ADAT outputs, internal
> sync) using the ALSA PCM.
> 
> The second commit adds basic mixer controls to set up the I/O features
> (output modes, sync source) and report I/O status.
> 
> This series does not implement the output faders, matrix mixer, or input
> level meters. These features are more useful when the interface is used
> as a router (possibly stand-alone), and are not really something that
> can be exposed via ALSA mixer controls usable via something like
> alsamixer (the matrix mixer has up to 2048 possible mixer nodes). Since
> we expect users to use a dedicated control app, the intent is that the
> app directly controls these features via the libusb API. This is similar
> to how things work with some FireWire interfaces (ffado-mixer) today.
> 
> Of course, there is room for extending the mixer interface to add more
> controls in the future, once we settle on a mechanism to expose
> complex/large matrix mixers.
> 
> Signed-off-by: Asahi Lina <lina@asahilina.net>
> ---
> Changes in v2:
> - Fix BIT(32) that was intended to be BIT(31) (for 32-bit platforms)
> - Rebased on sound/for-next and rewrote quirk using macros
> - Removed USB_ENDPOINT_USAGE_IMPLICIT_FB since the sync info is explicitly
>   specified.
> - Link to v1: https://lore.kernel.org/r/20240902-rme-digiface-v1-0-6e88472a2744@asahilina.net
> 
> ---
> Asahi Lina (1):
>       ALSA: usb-audio: Add mixer quirk for RME Digiface USB
> 
> Cyan Nyan (1):
>       ALSA: usb-audio: Add quirk for RME Digiface USB

Applied to for-next branch now.


thanks,

Takashi