Commit 7fdabab8 authored by Damien Zammit's avatar Damien Zammit Committed by Takashi Iwai

ALSA: usb-audio: Add support for Denon DN-X1600

This provides support for Denon DN-X1600 hardware mixer.

The device itself supports 44100, 48000 and 96000 (Hz)
sample rates, but switching rates via software is currently not working.
Therefore, this patch hardcodes the sample rate to 48000Hz which
enables all 8 channels to function correctly when the correct
sample rate is selected on the hardware itself.

MIDI also tested and works.
Signed-off-by: default avatarDamien Zammit <damien@zamaudio.com>
Tested-by: xalmoxis@gmail.com
Link: https://lore.kernel.org/r/20210610083528.603942-2-damien@zamaudio.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 30b7ba69
...@@ -534,6 +534,13 @@ static int set_sample_rate_v2v3(struct snd_usb_audio *chip, ...@@ -534,6 +534,13 @@ static int set_sample_rate_v2v3(struct snd_usb_audio *chip,
* rate. * rate.
*/ */
clock = snd_usb_clock_find_source(chip, fmt, false); clock = snd_usb_clock_find_source(chip, fmt, false);
/* Denon DN-X1600 hardcoded
* Sample rate seems to be set on the hardware itself
*/
if (chip->usb_id == USB_ID(0x154e, 0x500e))
return 0;
if (clock < 0) if (clock < 0)
return clock; return clock;
} }
......
...@@ -3044,6 +3044,76 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"), ...@@ -3044,6 +3044,76 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
} }
}, },
/* Denon DN-X1600 */
{
USB_AUDIO_DEVICE(0x154e, 0x500e),
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
.vendor_name = "Denon",
.product_name = "DN-X1600",
.ifnum = QUIRK_ANY_INTERFACE,
.type = QUIRK_COMPOSITE,
.data = (const struct snd_usb_audio_quirk[]){
{
.ifnum = 0,
.type = QUIRK_IGNORE_INTERFACE,
},
{
.ifnum = 1,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = &(const struct audioformat) {
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 8,
.iface = 1,
.altsetting = 1,
.altset_idx = 1,
.attributes = 0x0,
.endpoint = 0x01,
.ep_attr = USB_ENDPOINT_XFER_ISOC |
USB_ENDPOINT_SYNC_ADAPTIVE,
.maxpacksize = 0x138,
.rates = SNDRV_PCM_RATE_48000,
.rate_min = 48000,
.rate_max = 48000,
.nr_rates = 1,
.rate_table = (unsigned int[]) {
48000
}
}
},
{
.ifnum = 2,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = &(const struct audioformat) {
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 8,
.iface = 2,
.altsetting = 1,
.altset_idx = 1,
.attributes = 0x0,
.endpoint = 0x85,
.ep_attr = USB_ENDPOINT_XFER_ISOC |
USB_ENDPOINT_SYNC_ADAPTIVE,
.maxpacksize = 0x138,
.rates = SNDRV_PCM_RATE_48000,
.rate_min = 48000,
.rate_max = 48000,
.nr_rates = 1,
.rate_table = (unsigned int[]) {
48000
}
}
},
{
.ifnum = 4,
.type = QUIRK_MIDI_STANDARD_INTERFACE,
},
{
.ifnum = -1
}
}
}
},
/* Microsoft XboxLive Headset/Xbox Communicator */ /* Microsoft XboxLive Headset/Xbox Communicator */
{ {
USB_DEVICE(0x045e, 0x0283), USB_DEVICE(0x045e, 0x0283),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment