[alsa-devel] [PATCH] ALSA: usb: Add support for Zoom R16/24 capture and midi interfaces
Takashi Iwai
tiwai at suse.de
Sat Nov 29 20:39:31 CET 2014
At Sat, 29 Nov 2014 21:35:04 +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.
Could you give more comments in the playback iface why it's disabled?
Ditto for ifnum=0.
thanks,
Takashi
>
> Signed-off-by: Panu Matilainen <pmatilai at laiskiainen.org>
> ---
> sound/usb/quirks-table.h | 34 ++++++++++++++++++++++++++++++++++
> sound/usb/quirks.c | 8 ++++++++
> 2 files changed, 42 insertions(+)
>
> diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
> index c657752..73621c9 100644
> --- a/sound/usb/quirks-table.h
> +++ b/sound/usb/quirks-table.h
> @@ -3202,6 +3202,40 @@ YAMAHA_DEVICE(0x7010, "UB99"),
> },
>
> {
> + /* ZOOM R16/24 in audio interface mode */
> + 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[]) {
> + {
> + /* Control */
> + .ifnum = 0,
> + .type = QUIRK_IGNORE_INTERFACE,
> + },
> + {
> + /* Playback, sound is missing atm */
> + .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