[alsa-devel] [PATCH v2] ALSA: usb: Add support for Zoom R16/24 capture and midi interfaces
Takashi Iwai
tiwai at suse.de
Mon Dec 1 17:38:43 CET 2014
At Sun, 30 Nov 2014 18:45:40 +0200,
Panu Matilainen wrote:
>
> This makes the midi interface and capture work out of the box with
> R16 (and presumably R24 too but untested). Playback stream would also
> seem to function fine except for one caveat: no sound is produced,
> so it is disabled for now. Mixer descriptors are garbage and will
> require further quirks to enable functionality, also disabled here.
>
> Signed-off-by: Panu Matilainen <pmatilai at laiskiainen.org>
Thanks, applied.
Takashi
> ---
> sound/usb/quirks-table.h | 40 ++++++++++++++++++++++++++++++++++++++++
> sound/usb/quirks.c | 8 ++++++++
> 2 files changed, 48 insertions(+)
>
> diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
> index c657752..c955663 100644
> --- a/sound/usb/quirks-table.h
> +++ b/sound/usb/quirks-table.h
> @@ -3203,6 +3203,46 @@ YAMAHA_DEVICE(0x7010, "UB99"),
>
> {
> /*
> + * ZOOM R16/24 in audio interface mode.
> + * Mixer descriptors are garbage, further quirks will be needed
> + * to make any of it functional, thus disabled for now.
> + * Playback stream appears to start and run fine but no sound
> + * is produced, so also disabled for now.
> + */
> + USB_DEVICE(0x1686, 0x00dd),
> + .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
> + .ifnum = QUIRK_ANY_INTERFACE,
> + .type = QUIRK_COMPOSITE,
> + .data = (const struct snd_usb_audio_quirk[]) {
> + {
> + /* Mixer */
> + .ifnum = 0,
> + .type = QUIRK_IGNORE_INTERFACE,
> + },
> + {
> + /* Playback */
> + .ifnum = 1,
> + .type = QUIRK_IGNORE_INTERFACE,
> + },
> + {
> + /* Capture */
> + .ifnum = 2,
> + .type = QUIRK_AUDIO_STANDARD_INTERFACE,
> + },
> + {
> + /* Midi */
> + .ifnum = 3,
> + .type = QUIRK_MIDI_STANDARD_INTERFACE
> + },
> + {
> + .ifnum = -1
> + },
> + }
> + }
> +},
> +
> +{
> + /*
> * Some USB MIDI devices don't have an audio control interface,
> * so we have to grab MIDI streaming interfaces here.
> */
> diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
> index a5941f8..2e49193 100644
> --- a/sound/usb/quirks.c
> +++ b/sound/usb/quirks.c
> @@ -1160,6 +1160,14 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
> break;
> }
> }
> +
> + /* Zoom R16/24 needs a tiny delay here, otherwise requests like
> + * get/set frequency return as failed despite actually succeeding.
> + */
> + if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1686) &&
> + (le16_to_cpu(dev->descriptor.idProduct) == 0x00dd) &&
> + (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
> + mdelay(1);
> }
>
> /*
> --
> 1.9.3
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
More information about the Alsa-devel
mailing list