Re: [PATCH v3] ALSA: usb-audio: Add support for Arturia AF16Rig

Takashi Iwai
2026-03-28T08:58:10Z

On Sat, 28 Mar 2026 09:22:40 +0100,
Phil Willoughby wrote:
>
> Cc: Jaroslav Kysela <perex@perex.cz>
> Cc: Takashi Iwai <tiwai@suse.com>
> Tested-By: Phil Willoughby <willerz@gmail.com>
> Signed-off-by: Phil Willoughby <willerz@gmail.com>

A patch without a proper patch description is absolutely no-go.
Please give enough information for what you change.

thanks,

Takashi

> ---
> Removed the change to clock.c as that code path isn't used when the
> quirks table is filled-in.
>
> sound/usb/quirks-table.h | 165 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 165 insertions(+)
>
> diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
> index eafc0d73cca1..8f79a15055a6 100644
> --- a/sound/usb/quirks-table.h
> +++ b/sound/usb/quirks-table.h
> @@ -3900,5 +3900,170 @@ YAMAHA_DEVICE(0x7010, "UB99"),
> QUIRK_RME_DIGIFACE(0x3f8c),
> QUIRK_RME_DIGIFACE(0x3fa0),
>
> +/* Arturia AudioFuse 16Rig Audio */
> +/* AF16Rig MIDI has USB PID 0xaf21 and appears to work OK without quirks */
> +{
> + USB_DEVICE(0x1c75, 0xaf20),
> + QUIRK_DRIVER_INFO {
> + .vendor_name = "Arturia",
> + .product_name = "AF16Rig",
> + QUIRK_DATA_COMPOSITE {
> + { QUIRK_DATA_STANDARD_MIXER(0) },
> + {
> + QUIRK_DATA_AUDIOFORMAT(1) { /* Playback */
> + .formats = SNDRV_PCM_FMTBIT_S32_LE,
> + .channels = 34,
> + .fmt_type = UAC_FORMAT_TYPE_I_PCM,
> + .fmt_bits = 24,
> + .fmt_sz = 4,
> + .iface = 1,
> + .altsetting = 1,
> + .altset_idx = 1,
> + .endpoint = 0x01,
> + .ep_attr = USB_ENDPOINT_XFER_ISOC|
> + USB_ENDPOINT_SYNC_ASYNC,
> + .datainterval = 1,
> + .protocol = UAC_VERSION_2,
> + .maxpacksize = 0x03b8,
> + .rates = SNDRV_PCM_RATE_44100|
> + SNDRV_PCM_RATE_48000,
> + .rate_min = 44100,
> + .rate_max = 48000,
> + .nr_rates = 2,
> + .rate_table = (unsigned int[]) { 44100, 48000 },
> + .clock = 41,
> + }
> + },
> + {
> + QUIRK_DATA_AUDIOFORMAT(1) { /* Playback */
> + .formats = SNDRV_PCM_FMTBIT_S32_LE,
> + .channels = 18,
> + .fmt_type = UAC_FORMAT_TYPE_I_PCM,
> + .fmt_bits = 24,
> + .fmt_sz = 4,
> + .iface = 1,
> + .altsetting = 1,
> + .altset_idx = 1,
> + .endpoint = 0x01,
> + .ep_attr = USB_ENDPOINT_XFER_ISOC|
> + USB_ENDPOINT_SYNC_ASYNC,
> + .datainterval = 1,
> + .protocol = UAC_VERSION_2,
> + .maxpacksize = 0x03a8,
> + .rates = SNDRV_PCM_RATE_88200|
> + SNDRV_PCM_RATE_96000,
> + .rate_min = 88200,
> + .rate_max = 96000,
> + .nr_rates = 2,
> + .rate_table = (unsigned int[]) { 88200, 96000 },
> + .clock = 41,
> + }
> + },
> + {
> + QUIRK_DATA_AUDIOFORMAT(1) { /* Playback */
> + .formats = SNDRV_PCM_FMTBIT_S32_LE,
> + .channels = 10,
> + .fmt_type = UAC_FORMAT_TYPE_I_PCM,
> + .fmt_bits = 24,
> + .fmt_sz = 4,
> + .iface = 1,
> + .altsetting = 3,
> + .altset_idx = 3,
> + .endpoint = 0x01,
> + .ep_attr = USB_ENDPOINT_XFER_ISOC|
> + USB_ENDPOINT_SYNC_ASYNC,
> + .datainterval = 1,
> + .protocol = UAC_VERSION_2,
> + .maxpacksize = 0x03e8,
> + .rates = SNDRV_PCM_RATE_176400|
> + SNDRV_PCM_RATE_192000,
> + .rate_min = 176400,
> + .rate_max = 192000,
> + .nr_rates = 2,
> + .rate_table = (unsigned int[]) { 176400, 192000 },
> + .clock = 41,
> + }
> + },
> + {
> + QUIRK_DATA_AUDIOFORMAT(2) { /* Capture */
> + .formats = SNDRV_PCM_FMTBIT_S32_LE,
> + .channels = 34,
> + .fmt_type = UAC_FORMAT_TYPE_I_PCM,
> + .fmt_bits = 24,
> + .fmt_sz = 4,
> + .iface = 2,
> + .altsetting = 1,
> + .altset_idx = 1,
> + .endpoint = 0x81,
> + .ep_attr = USB_ENDPOINT_XFER_ISOC|
> + USB_ENDPOINT_SYNC_ASYNC,
> + .datainterval = 1,
> + .protocol = UAC_VERSION_2,
> + .maxpacksize = 0x03b8,
> + .rates = SNDRV_PCM_RATE_44100|
> + SNDRV_PCM_RATE_48000,
> + .rate_min = 44100,
> + .rate_max = 48000,
> + .nr_rates = 2,
> + .rate_table = (unsigned int[]) { 44100, 48000 },
> + .clock = 41,
> + }
> + },
> + {
> + QUIRK_DATA_AUDIOFORMAT(2) { /* Capture */
> + .formats = SNDRV_PCM_FMTBIT_S32_LE,
> + .channels = 18,
> + .fmt_type = UAC_FORMAT_TYPE_I_PCM,
> + .fmt_bits = 24,
> + .fmt_sz = 4,
> + .iface = 2,
> + .altsetting = 2,
> + .altset_idx = 2,
> + .endpoint = 0x81,
> + .ep_attr = USB_ENDPOINT_XFER_ISOC|
> + USB_ENDPOINT_SYNC_ASYNC,
> + .datainterval = 1,
> + .protocol = UAC_VERSION_2,
> + .maxpacksize = 0x03a8,
> + .rates = SNDRV_PCM_RATE_88200|
> + SNDRV_PCM_RATE_96000,
> + .rate_min = 88200,
> + .rate_max = 96000,
> + .nr_rates = 2,
> + .rate_table = (unsigned int[]) { 88200, 96000 },
> + .clock = 41,
> + }
> + },
> + {
> + QUIRK_DATA_AUDIOFORMAT(2) { /* Capture */
> + .formats = SNDRV_PCM_FMTBIT_S32_LE,
> + .channels = 10,
> + .fmt_type = UAC_FORMAT_TYPE_I_PCM,
> + .fmt_bits = 24,
> + .fmt_sz = 4,
> + .iface = 2,
> + .altsetting = 3,
> + .altset_idx = 3,
> + .endpoint = 0x81,
> + .ep_attr = USB_ENDPOINT_XFER_ISOC|
> + USB_ENDPOINT_SYNC_ASYNC,
> + .datainterval = 1,
> + .protocol = UAC_VERSION_2,
> + .maxpacksize = 0x03e8,
> + .rates = SNDRV_PCM_RATE_176400|
> + SNDRV_PCM_RATE_192000,
> + .rate_min = 176400,
> + .rate_max = 192000,
> + .nr_rates = 2,
> + .rate_table = (unsigned int[]) { 176400, 192000 },
> + .clock = 41,
> + }
> + },
> + { QUIRK_DATA_IGNORE(3) }, /* Firmware update */
> + QUIRK_COMPOSITE_END
> + }
> + }
> +},
> +
> #undef USB_DEVICE_VENDOR_SPEC
> #undef USB_AUDIO_DEVICE
> --
> 2.53.0
>